PDA

Visualizza la versione completa : [C++] Ricopiare Contenuto Vettore All'inverso


Skull260287
16-07-2008, 19:32
Sapreste dirmi perchè questo programma va bene per le prime due parole dalla fine, ovvero anna e ciro e poi mi sballa il valore di k, fermandosi nella posizione 8 dove non è presente alcuno spazio all'interno del vettore? Il codice seguente gira ed ho anche inserito dei cout per visualizzare i valori alla ricerca dell'errore.



/*
Note : 1. Dati 2 array A e B di caratteri di lunghezza N. L'array A contiene dei
nomi separati da uno spazio, l'array B è vuoto.
Scrivere una procedura che scriva nell'array B, separati da uno
spazio, gli stessi nomi presenti in A ma in ordine inverso.

Ex 1 Compito 20 11 07

*/

#include <cstdlib>
#include <iostream>

using namespace std;


int main(){


int k=19,n=0,i=20;
char v[20]={'d','a','r','i','o',' ','a','l','d','o',' ','c','i','r','o',' ','a','n','n','a'};
char v1[20];

for(int c=0;c<20;c++) cout<<v[c]<<" ";
cout<<endl;

while(i>=0){


cout<<"K di Partenza: "<<k<<" v[k]: "<<v[k]<<endl;
while(v[k]!=' ' && k>=0) k--;

cout<<"K: "<<k<<endl;
system("pause");

for(int z=k+1;z<i;z++){
v1[n]=v[z];
cout<<v1[n]<<" ";
n++;
}
if(k>=0) v[n]=v[k];
cout<<endl;
system("pause");
i=k;
k--;
}

for(int c=0;c<20;c++) cout<<v1[c]<<" ";
cout<<endl;


system("pause");
return 0;

}



Grazie a tutti.

shodan
16-07-2008, 22:16
Fa attenzione a dove scrivi. :)



for(int z=k+1;z<i;z++){
v1[n]=v[z];
cout<<v1[n]<<" ";
n++;
}
if(k>=0) v[n]=v[k];
cout<<endl;
system("pause");
i=k;
k--;
}

rtk
16-07-2008, 22:29
quando fai


for(int z=k+1;z<i;z++)

prova con

for(int z=k+1;z<= i;z++)

Skull260287
17-07-2008, 12:45
Originariamente inviato da rtk
quando fai


for(int z=k+1;z<i;z++)

prova con

for(int z=k+1;z<= i;z++)

Perfetto sembra andare bene, grazie mille rtk.

Loading