PDA

Visualizza la versione completa : [c++]salvare Pezzo Di Vettore In Un Altro Vettore E Stamparlo


maurymg
08-02-2008, 11:15
Ciao ragzzi, avrei come sempre un dubbio..
Devo realizzare un programma capace di leggere una riga in ingresso, e stampare la prima parte della riga, numero o lettere che siano, che precedono il primo spazio.
Ho pensato quindi di fare così:


#include <stdio.h>

int getline(char []);

main()

{

char line[1000], miserve[1000];

int i,c,len;



while((len=getline(line))>0)

{

for (i=0,c=0; line[i]!=' ';)



miserve[c++]=line[i++];





miserve[c]='\0';

printf("%s|",miserve);

}

}

int getline(char line[])

{ int i,c;

for(i=0; (c=getchar())!= '\n' && c!= '\0'; i++)

line[i]=c;

if (c=='\n')

line[i++]=c;

line[i]='\0';

system("pause");

}




Tuttavia non viene stampato niente..

oregon
08-02-2008, 11:57
La getline deve restituire un valore ... la system alla fine della getline non ha senso ...

maurymg
08-02-2008, 12:23
Avevo dimenticato return..
Sono proprio un cretino!!
Grazie sempre oregon..

maurymg
08-02-2008, 13:36
Figuriamoci se avevo risolto il problema..
Qulla era la prima parte, adesso dovrei fare in modo tale che tutte le parti prima dello spazio vengano salvate nel vettore miserve estampate singolarmente con accanto "|".
Il programma funziona se in input do massimo due caratteri per volta, ovvero se scrivo:
aa ww 33
ne viene fuori giustamente:
aa| ww| 33|

ma se scrivo:
aaa 3333, viene fuori un macello!

Ecco il codice:


int getline(char []);

main()

{

char line[1000], miserve[1000];

int i,c,len;



while((len=getline(line))>0)

{i=0;

while((line[i])!='\0')

{

for (c=0; line[i]!=' ' && line[i]!='\0';)

{

miserve[c++]=line[i++];



}

printf("%8s|",miserve);

if(line[i]!='\0')

i++;









}



}

system("pause");

}

int getline(char line[])

{ int i,c;

for(i=0; (c=getchar())!= '\n' && c!= '\0'; i++)

line[i]=c;

//if (c=='\n')

// line[i++]=c;

line[i]='\0';

return i;



}


Scusa se ti faccio spesso domande ma il 15 ho un esame, e come vedi ho ancora molti dubbi..

oregon
08-02-2008, 13:49
Ma perche' il listato che posti e' cosi' disordinato (non indentato correttamente e con tante linee vuote...). Cosi' si perde un sacco di tempo a leggerlo e si rinuncia a rispondere ...

Inoltre, non ho capito se i dati del primo vettore e del secondo, alla fine, devono essere uguali o va salvato anche il carattere | nel secondo vettore ...

maurymg
08-02-2008, 15:21
Si, scusa nel ricopiare il file dal mac a windows per poi andare nel forum succede questo, adesso te lo allego bene;
Cmq il programma dovrebbe prendere cio' che c'è nel primo vettore, a poco a poco, ovvero prima di ogni spazio e poi stampare ogni membro con accanto |.
Quindi se io nel primo vettore scrivo:
"Questa è una prova", il risultato dovrebbe essere: "questa|" "è|" "una|" "prova|".


#include <stdio.h>
int getline(char []);
main()
{
char line[1000], miserve[1000];
int i,c,len;

while((len=getline(line))>0)
{
i=0;
while((line[i])!='\0')
{
for (c=0; line[i]!=' ' && line[i]!='\0';)
{
miserve[c++]=line[i++];
}
printf("%8s|",miserve);
if(line[i]!='\0')
i++;
}

}
system("pause");
}

int getline(char line[])
{ int i,c;
for(i=0; (c=getchar())!= '\n' && c!= '\0'; i++)
line[i]=c;
line[i]='\0';
return i;
}

oregon
08-02-2008, 15:26
Ma non hai fatto nessun cenno al secondo vettore ... secondo quello che mi hai spiegato, i dati separati dal primo vettore devono essere solamente visualizzati ... allora a che serve il secondo vettore?

maurymg
08-02-2008, 15:43
Il secondo vettore (miserve[]) lo uso semplicemente per stampare..

oregon
08-02-2008, 15:57
Allora non ti serve (!) ... basta



int main()
{
char line[1000];
int i, len;

len=getline(line);

if(len)
for (i=0; i<len; i++)
{
if(line[i]==' ')
putchar('|');

putchar(line[i]);
}

putchar('|');
putchar('\n');
}

maurymg
08-02-2008, 16:06
Grazie per avermi fatto vedere quest'altro metodo, avevo già fatto una cosa di simile..
Stavo cercando pero' altre soluzioni alternative, in modo di arrivare gon un bagaglio piu' ampio possibile all'esame..
E in questo particolare caso, mi interessava sapere dove stava l'errore.. perchè credo che mi potrebbe capitare di salvare parte di cio' che mi serve in un altro vettore per poi stamparlo..
Grazie cmq per avere scritto quel codice..

Loading