c’è un errore nel flow chart del problema
infatti se non viene incrementato mai il valore di i o di j il programma va in loop
---------------------------------------------------------------------
Ho completato una versione primordiale del programma che funziona ma non utilizza ancora i file e le funzioni. Se ho tempo in settimana vedrò di migliorarla
#include<stdio.h>
int i;
int j;
int k;
int l1=10;
int l2=15;
int d,e;
FILE *f1;
FILE *f2;
FILE *f3;
int a[10];
int b[15];
int c[25];
void carica(){
f1=fopen("array1.txt","r");
f2=fopen("array2.txt","r");
for(d=0;d<10;d++){
fscanf(f1,"%d\n",&a[d]);
}
for(e=0;e<15;e++){
fscanf(f2,"%d\n",&b[e]);
}
fclose(f1);
fclose(f2);
}
void stampa(){
printf("----\n");
for(e=0;e<25;e++){
printf("%d\n",c[e]);
}
}
void main(){
f1=fopen("array1.txt","r");
f2=fopen("array2.txt","r");
carica();
j=0;
k=0;
i=0;
while((i<10)&&(j<15)){
fscanf(f1,"%d",&a[i]);
fscanf(f2,"%d",&b[j]);
if(a[i]<b[j]){
c[k]=a[i];
i++;
printf("a<b:%d\n",c[k]);
}
else{
if(a[i]>b[j]){
c[k]=b[j];
j++;
printf("a>b: %d\n",c[k]);
}else{
printf("a:%d\n",a[i]);
printf("b:%d\n",b[j]);
c[k]=a[i];
printf("c=a:%d\n",c[k]);
k++;
c[k]=b[j];
printf("c=b:%d\n",c[k]);
i++;
}
}
k++;
}
while(i<10){
c[k]=a[i];
i=i+1;
k=k+1;
}
while (j<15){
c[k]=b[j];
j=j+1;
k=k+1;
}
stampa();
fclose(f1);
fclose(f2);
}
Hai ragione. Ma ti dirò di più ci sono altri due errori: nel ramo in cui sono uguali a[i] e b[j], devo assegnare entrambi a c[k]. Pertanto le istruzioni giuste sono: c[k]=a[i]; k++; c[k]=b[j]; ed infine devo incrementare sia i che j; i++; j++;
RispondiEliminaIl Prof. Silvano Natalizi