Traccia:
La mia soluzione:codice:Realizzare un programma C che riceve in input due array ordinati di stringhe di caratteri e produce in output (a video) un unico array risultante dalla fusione dei due array in input, senza ripetizioni. L'output dovrà inoltre essere registrato su un file di testo, in cui dovranno comparire gli array in input e quello di output.
Premetto che ho testato l'algoritmo con 2 vettori di numeri e funziona regolarmente. Adesso facendo lo stesso con le stringhe mi da un risultato sbagliato... esempio:codice:#include<stdio.h> #include<string.h> lettura(char matrice[][20],char matrice2[][20],int n,int m); stampa(char matrice[][20],char matrice2[][20],int n,int m); int main() { int n,m; printf("Numero elementi primo vettore: "); scanf("%d",&n); char matrice[n][20];//primo vettore di stringhe printf("Numero elementi secondo vettore: "); scanf("%d",&m); char matrice2[m][20];//secondo vettore di stringhe lettura(matrice,matrice2,n,m); //stampa(matrice,matrice2,n,m); char matrice3[n+m][20]; int i=0; int j=0,k=0; while(i<n && j<m){ if(strcmp(matrice[i],matrice2[j])<0){ strcpy(matrice3[k],matrice[i]); i++; } else{ strcpy(matrice3[k],matrice2[j]); j++; } k++; } while(i<n){ strcpy(matrice3[k],matrice[i]); i++; k++; } while(j<m){ strcpy(matrice3[k],matrice2[j]); j++; k++; } for(i=0;i<n+m;i++) printf("%s ",&matrice3[i]); printf("\n"); system("pause"); return 0; } lettura(char matrice[][20],char matrice2[][20],int n,int m){ int i; printf("Elementi primo vettore: "); for(i=0;i<n;i++) scanf("%s",&matrice[i]); printf("Elementi secondo vettore: "); for(i=0;i<m;i++) scanf("%s",&matrice2[i]); } stampa(char matrice[][20],char matrice2[][20],int n,int m){ int i; printf("Elementi primo vettore: \n"); for(i=0;i<n;i++) printf("%s\n",&matrice[i]); printf("Elementi secondo vettoreore: \n"); for(i=0;i<m;i++) printf("%s\n",&matrice2[i]); }
Dove sbaglio?codice:Numero elementi primo vettore: 4 Numero elementi secondo vettore: 4 Elementi primo vettore: questa e una prova Elementi secondo vettore: per vedere se funge per questa e una prova vedere se funge Premere un tasto per continuare . . .

Rispondi quotando
Scusate, la confusione non è mai troppa... almeno ho dato un piccolo supporto al forum
