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.
codice:
/*
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.