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!