PDA

Visualizza la versione completa : [C] invece di andare a capo mi fa dei quadratini.. che fare?


simop_075
24-11-2008, 20:35
salve ho creato un programma che dovrebbe creare tutte le possibili combinazioni (di 9 cifre) con finali BG l'unico problema e che quando scrive il file di testo non va a capo ma mi fa i quadratini.. come posso risolvere??



#include <cstdlib>
#include <iostream>
#include <fstream.h>

using namespace std;

int main(int argc, char *argv[]) { ofstream out; char alfabeto[]={'A','B','C','D','E','F','G','H','I','J','K','L', 'M','N','O','P','Q','R','S','T','U','V','W','X','Y ','Z','a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v','w','x ','y','z','1','2','3','4','5','6','7','8','9','0', ',','.'}; char parola[12];
out.open("alfabeto.txt", ios::out);
for(int c1=0;c1<64;c1++)
{
for(int c2=0;c2<64;c2++)
{
for(int c3=0;c3<64;c3++)
{
for(int c4=0;c4<64;c4++)
{
for(int c5=0;c5<64;c5++)
{
for(int c6=0;c6<64;c6++)
{
for(int c7=0;c7<64;c7++) { parola[0]=alfabeto[c1]; parola[1]=alfabeto[c2]; parola[2]=alfabeto[c3]; parola[3]=alfabeto[c4]; parola[4]=alfabeto[c5]; parola[5]=alfabeto[c6]; parola[6]=alfabeto[c7]; parola[7]='B'; parola[8]='G'; parola[9]='\r'; parola[10]='\n';

out.write(parola, sizeof(parola));
}
}
}
}
}
}
}
out.close(); system("PAUSE"); return EXIT_SUCCESS; }

con qualche modifica al codice ora sono arrivato a questo punto:

http://img514.imageshack.us/img514/9648/immaginevt6.png (http://imageshack.us)

MItaly
24-11-2008, 21:12
Non mettere sia \n che \r, lascia solo \n, ci penserà lo stream (visto che hai aperto il file in modalità testo) ad aggiungere l'eventuale \r.

simop_075
25-11-2008, 18:02
scusate l'immagine che vedete appare con questo codice..



uguale...
parola[0]=alfabeto[c1];
parola[1]=alfabeto[c2];
parola[2]=alfabeto[c3];
parola[3]=alfabeto[c4];
parola[4]=alfabeto[c5];
parola[5]=alfabeto[c6];
parola[6]=alfabeto[c7];
parola[7]='B';
parola[8]='G';
parola[9]='\n';



non riesco a capire....

MItaly
25-11-2008, 18:15
parola[10]=0;

oregon
25-11-2008, 18:22
In effetti, se non concludi la stringa con il nul, ti visualizza tutto quello che c'e' ...

simop_075
25-11-2008, 18:25
il codice è questo...




#include <cstdlib>
#include <iostream>
#include <fstream.h>

using namespace std;

int main(int argc, char *argv[])
{
ofstream out;
char alfabeto[]={'A','B','C','D','E','F','G','H','I','J','K','L', 'M','N','O','P','Q','R','S','T','U','V','W','X','Y ','Z','a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v','w','x ','y','z','1','2','3','4','5','6','7','8','9','0', ',','.'
};
char parola[12];
out.open("alfabeto.txt", ios::out);
for(int c1=0;c1<64;c1++)
{
for(int c2=0;c2<64;c2++)
{
for(int c3=0;c3<64;c3++)
{
for(int c4=0;c4<64;c4++)
{
for(int c5=0;c5<64;c5++)
{
for(int c6=0;c6<64;c6++)
{
for(int c7=0;c7<64;c7++)
{
for(int c8=0;c8<64;c8++)
{
parola[0]=alfabeto[c1];
parola[1]=alfabeto[c2];
parola[2]=alfabeto[c3];
parola[3]=alfabeto[c4];
parola[4]=alfabeto[c5];
parola[5]=alfabeto[c6];
parola[6]=alfabeto[c7];
parola[7]=alfabeto[c8];
parola[8]='B';
parola[9]='G';
parola[10]='\n';
out.write(parola, sizeof(parola));
}
}
}
}
}
}
}
}
out.close();
system("PAUSE");
return EXIT_SUCCESS;
}




il risoltato è questo...



AAAAAAAABG
AAAAABAABG
AAAAACAABG
AAAAADAABG
AAAAAEAABG
AAAAAFAABG
AAAAAGAABG
AAAAAHAABG
AAAAAIAABG
AAAAAJAABG
AAAAAKAABG
AAAAALAABG
AAAAAMAABG
AAAAANAABG
AAAAAOAABG
AAAAAPAABG
AAAAAQAABG
AAAAARAABG
AAAAASAABG
AAAAATAABG
AAAAAUAABG
AAAAAVAABG
AAAAAWAABG
AAAAAXAABG
AAAAAYAABG
AAAAAZAABG
AAAAAaAABG
AAAAAbAABG
AAAAAcAABG
AAAAAdAABG
AAAAAeAABG
AAAAAfAABG
AAAAAgAABG
AAAAAhAABG
AAAAAiAABG
AAAAAjAABG
AAAAAkAABG
AAAAAlAABG
AAAAAmAABG
AAAAAnAABG
AAAAAoAABG
AAAAApAABG
AAAAAqAABG
AAAAArAABG
AAAAAsAABG
AAAAAtAABG
AAAAAuAABG
AAAAAvAABG
AAAAAwAABG
AAAAAxAABG
AAAAAyAABG
AAAAAzAABG
AAAAA1AABG
AAAAA2AABG
AAAAA3AABG
AAAAA4AABG
AAAAA5AABG


devo sistemare, il primo spazio davanti ad ogni cosa...

oregon
25-11-2008, 18:40
Scusa ... ma hai letto gli ultimi due post?

Edgar89
25-11-2008, 18:41
ora... potrei essere scemo io... ma perchè ogni ciclo lo chiudi a 63?

A...Z = 26
a...z = 26
0...9 = 10

sono 62 elementi quindi ogni ciclo ha l'indice <63 non <64...

simop_075
25-11-2008, 18:50
c'è anche il punto e la virgola se non sbaglio

'7','8','9','0',',','.' };è così l'ultima parte...

Edgar89
25-11-2008, 18:52
e a quel punto sarebbe <65 però... qualcosa non torna... :ignore:

Loading