Ciao a tutti ho un prblema con questo codice...dovrei prendere in input due parole e poi vedere se la seconda è l'inverso della prima. Dovrebbe presentarsi in questo modo:
Inserire la prima parola:ciao
Inserire la seconda parola
aic
La seconda parola è l'inverso della prima
Vuoi terminare il programma (y o n)?
se digito y si deve fermare il rpogramma sennò deve continuare, nel caso la seconda non sia l'inverso della prima deve scrivere
La seconda parola è l'inverso della prima
Nel codice che ho scritto ho creato due funzioni una per prendere in input le stringhe e stampare se è o meno l'inverso e l'altra funzione invece per vedere se la seconda è l'inverso della prima.
I problemi che mi compaiono è che anche se inserisco una parola che sia l'inverso dell'altra mi stampa sempre la seconda risposta ovvero che non è l'inverso.
Inoltre alla domanda se voglio terminare e io dico che voglio smettere lui ricomincia lo stesso, chiedendomi di inserire la seconda parola e saltando di chiedermi la prima................
Questo è il codice:
codice:
/*Scrivere un programma che chieda all'utente di inserire due parole e che dia*
*come risultato se l'una è l'inverso dell'altra*/
#include<stdio.h>
#include<string.h>
#define N 20
void inserparole();
int risultato_test(char [], char []);
int main(){
int m;
char risp;
do{
inserparole();
printf("Vuoi terminre il programma (y o n)?\n");
scanf("%c", &risp);
if((int)risp==121)
m = 0;
else //if(risp=='n')
m = 1;
}while(m = 1);
}
void inserparole(){
char primaparola[N];
char secondaparola[N];
int i = 0;
int j = 0;
int ris;
printf("Inserire la prima parola: ");
fgets(primaparola, sizeof(primaparola), stdin);
printf("\n");
while(i==strlen(primaparola))
{
if(primaparola[i]=='\n')
primaparola[i]='\0';
i++;
}
printf("Inserire la seconda parola: ");
fgets(secondaparola, sizeof(secondaparola), stdin);
printf("\n");
while(j==strlen(secondaparola))
{
if(secondaparola[j]=='\n')
secondaparola[i]='\0';
j++;
}
ris = risultato_test(primaparola, secondaparola);
if(ris==0)
printf("la seconda parola è l'inverso della prima\n");
else
printf("la seconda parola non è l'inverso della prima\n");
fflush(stdin);
}
int risultato_test(char a[], char b[])
{
int x, ris,m;
m=strlen(b);
char inverso[m];
for(x=0; x<m-1; x++)
inverso[x]=b[m-1-x];
ris = strcmp(a, inverso);
return ris;
}