Salve a tutti,
ho un problema da risolvere quanto prima possibile.
Il mio professore di informatica ci ha dato degli esercizi da svolgere in C++. Niente di difficile, però ho riscontrato un problema alquanto strano nel
mio programmino.
L'esercizio in questione è:Vi mostro come ho scritto il codice."Si scriva un programma che, dopo aver letto N stringhe da tastiera, verifichi se ogni stringa è PALINDROMA oppure
no. Una parola è PALINDROMA se è la stessa quando è letta di sinistra a destra e da destra a sinistra (esempio: OTTO; POROP etc.)"
MAIN.CPP
SECOND.Hcodice:#include <cstdlib> #include <iostream> #include <string.h> #include "second.h" using namespace std; int main(int argc, char *argv[]) { system("color F"); vettore vet; int riemp,x; leggiStringa (vet, riemp); cout << endl << endl; stampaStringa (vet, riemp); cout << endl << endl; palindroma (vet, riemp); cout << endl << endl; system("PAUSE"); return EXIT_SUCCESS; }
SECOND.CPPcodice:#ifndef SECOND_H #define SECOND_H #define N 100 typedef char stringa [256]; typedef stringa vettore [N]; void leggiStringa (vettore, int & ); void stampaStringa (vettore, int); void palindroma (vettore, int); void inizializza (stringa); #endif
Non guardate il codice "palindroma" che è un casino, l'ho fatto così solo per controllare ogni passaggio nella speranza di comprenderne l'errore, macodice:#include <cstdlib> #include <iostream> #include <string.h> #include "second.h" using namespace std; void leggiStringa (vettore v, int &r){ stringa parole; cout << "Inserire il riempimento del vettore! MAX 100"<<endl; do cin >> r; while (r<=0 || r>100); cout << endl; for (int i=0; i<r; i++){ cout << "V["<< i << "]= "; cin >> parole; strcpy(v[i],parole); } } void stampaStringa (vettore v, int r){ for (int i=0; i<r; i++){ cout << "V["<< i <<"]= "<< v[i] << endl; } } void inizializza (stringa s){ for (int i=0; i<=0;i++) s[i]='\0'; } void palindroma (vettore v, int r){ stringa s,t; int n, x, j, k; for (int i=0; i<r; i++){ inizializza (t); strcpy (s, v[i]); n= strlen (s); for (k=0, j=n-1; k<=n-1, j>=0; k++, j--){ t[k]=s[j]; cout << "T["<<k<<"]= S["<<j<<"]: "<<t[k]<<endl; } cout << endl<<endl; cout << "S= " << s <<endl; cout << "T= " << t <<endl; x= strcmp (s,t); cout << x << endl<<endl; if (x==0) cout << "La parola e' palindroma"<<endl; else cout << "La parola non e' palindroma"<<endl; inizializza (t); cout << "T= "<< t << endl <<endl; cout << "___________________________________"<<endl<<endl; } }
invano.
Non vi spiego a parole l'errore, ma vi lascio uno screen di una prova:
Un primo errore che non riesco a risolvere è che la stringa T non è inizializzata ad una stringa vuota (Come posso farlo?) EDIT: ho modificato il codice, ma resta il problema che la stringa t ha dei caratteri di troppo :|
Il secondo errore è quel maledetto carattere dopo la stringa "miuccido"... Che cavolo di problema è?
Spero di essere stato chiaro!
TheEnigmist



Rispondi quotando
), direi che basta aggiungere:
Giusto? o.o
