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 è:
"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.)"
Vi mostro come ho scritto il codice.
MAIN.CPP
codice:
#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.H
codice:
#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
SECOND.CPP
codice:
#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;
}
}
Non guardate il codice "palindroma" che è un casino, l'ho fatto così solo per controllare ogni passaggio nella speranza di comprenderne l'errore, ma
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