Bene quì da solo già son arrivato ad un buon punto... come sempre traccia:
Sia A un vettore di caratteri di lunghezza N contenente alcune parole (solo lettere maiuscole) separate da uno spazio. Scrivere una funzione che restituisca TRUE se i primi due caratteri di ogni parola corrispondono rispettivamente al primo e all'ultimo carattere della parola precedente.
Esempio N=25
A= |C|A|N|E| |C|E|N|A| |C|A|R|I| |C|I|E|L|O| |C|O|M|O|
Output=TRUE
Questo è il mio programma:
Il problema sostanzialmente credo sia nel fatto che sul ciclo di primaeultima non viene passato il parametro "i" a verifica. La mia domanda è questa, nel momento in cui la variabile "i" passa ad una funzione e viene elaborata, non dovrebbe tornare con lo stesso valore a verifica?codice:#include <stdio.h> void primedue(char A[],char primdue[],int i) { primdue[0]=A[i]; primdue[1]=A[i+1]; primdue[2]='\0'; } void primaeultima(char A[],char primult[],int i,int n) { primult[0]=A[i]; int j=i; while(A[i]!=' ') { i++; } primult[1]=A[i-1]; } int verifica (char A[],int n) { int i,j,b; float confronto; char primdue_old[3],primdue[3],primult[3]; for (i=0;i<n;i++) { primedue(A,primdue,i); primaeultima(A,primult,i,n); // // Just debugging... printf ("Stringa: %s Primdue: %s Primult: %s Primdue_old: %s\n",A,primdue,primult,primdue_old); // confronto=strcmpi(primdue_old , primult); if (confronto==0) b=1; else b=0; for(j=0;j<3;j++) primdue_old[j]=primdue[j]; } return (b); } int main() { int n,b; printf("Quanto deve essere lungo l'array?\n"); scanf("%d",&n); n+=1; char A[n]; printf("Inserire le parole desiderate \n"); while(gets(A)!=NULL) { if(gets(A)!=NULL) { break; } } b=verifica(A,n); if (b==1) printf("TRUE\n"); else printf("FALSE\n"); system("pause"); return 0; }

Rispondi quotando