Merge

c’è un errore nel flow chart del problema

Cattura

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);           
}

 

Cattura2 Cattura3

Commenti

  1. 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++;

    Il Prof. Silvano Natalizi

    RispondiElimina

Posta un commento