Problema conversione loop for in loop while

di il
12 risposte

Problema conversione loop for in loop while

Salve a tutti, sono appena arrivato nel mondo della programmazione in C, convertendo il seguente programma con loop for: [CODE] #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define N 6 #define M 7 #define D 6 //ci possono essere massimo 6 elementi in comune tra i due insiemi di stringhe #define LENW 20 int TrovaElementiUguali(char V1[N][LENW],char V2[M][LENW],char V3[N][LENW]); int main() { char V1[N][LENW]; char V2[M][LENW]; char V3[D][LENW]; //vettore di stringhe in cui andare a inserire gli elementi presenti sia in V1 che in V2 int i; for (i=0;i<N;i++){ printf("inserisci la %d-esima stringa nel primo insieme: ",i); scanf("%s",V1[i]); } printf("\n"); for (i=0;i<M;i++){ printf("inserisci la %d-esima stringa nel secondo insieme: ",i); scanf("%s",V2[i]); } int dim; dim = TrovaElementiUguali(V1,V2,V3); printf("Gli elementi comuni ai due insiemi sono: "); for (i=0;i<dim;i++){ printf("%s ",V3[i]); } return 0; } int TrovaElementiUguali(char V1[N][LENW],char V2[M][LENW],char V3[N][LENW]){ int i,j,cont; cont = 0; for (i=0;i<N;i++){ for (j=0;j<M;j++){ if (strcmp(V1[i],V2[j])==0){ (strcpy(V3[cont],V1[i])); cont++; } } } return cont; },
in loop while: [CODE] #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define N 6 #define M 7 #define D 6 //ci possono essere massimo 6 elementi in comune tra i due insiemi di stringhe #define LENW 20 int TrovaElementiUguali(char V1[N][LENW],char V2[M][LENW],char V3[N][LENW]); int main() { char V1[N][LENW]; char V2[M][LENW]; char V3[D][LENW]; //vettore di stringhe in cui andare a inserire gli elementi presenti sia in V1 che in V2 int i; i=0; while (i<N) { printf("inserisci la %d-esima stringa nel primo insieme: ",i); scanf("%s",V1[i]); i++; } printf("\n"); while (i<M){ printf("inserisci la %d-esima stringa nel secondo insieme: ",i); scanf("%s",V2[i]); i++; } int dim; while(i<dim){ dim=TrovaElementiUguali(V1,V2,V3); printf("Gli elementi comuni ai due insiemi sono: "); printf("%s",V3[i]); i++; } return 0; } int TrovaElementiUguali(char V1[N][LENW],char V2[M][LENW],char V3[N][LENW]){ int i=0, cont; while (i<N){ int j=0, cont; while (j<M){ if (strcmp(V1[i],V2[j])==0){ (strcpy(V3[cont],V1[i])); cont++; i++; j++; } } } return cont; } Il programma non funziona come dovrebbe, non ci sono errori di sintassi, ma il programma non funziona come dovrebbe a differenza della versione con loop for.

Potreste sistemarmi il codice della versione con loop while per far in modo che funzioni alla perfezione? Grazie infinite in anticipo!

12 Risposte

Devi accedere o registrarti per scrivere nel forum
12 risposte