Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
1.5 kB
3
Indexable
Never
/*
 Abbiamo un file con una sequenza di numeri reali separati da spazi, ritorni a capo ecc..
 Vogliamo un programma che definisca due vettori, v1 e v2, rispettivamente di dimensione N ed M (definiti con una define).
 In v1 devono esser messi tutti i valori compresi tra -15 e 17, mentre in v2 tutti i valori maggiori e uguali a 64 che siano pari.
 Gli altri vengono scartati e conteggiati.
 Il programma si conclude con la stampa su due righe dei due vettori.
 Il programma termina se uno dei vettori è pieno prima della chiusura del file.
 */

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define N 1
#define M 1

int main()
{
    char file[FILENAME_MAX];
    
    int v1[N] = {0};
    int v2[M] = {0};
    int i, j;
    int n;
    int conta_scarti = 0;
    
    FILE *fp;
    
    printf("Nome file: ");
    scanf("%s",file);
    
    if ((fp = fopen(file, "r")) == NULL)
    {
        fscanf(stderr, "Impossibile aprire il file: %s\n",file);
        return EXIT_FAILURE;
    }
    
    while (fscanf(fp, "%d", &n) != EOF)
    {
            for (i=0; i<N && (n>=-15 && n<=17); i++)
            {
                v1[i] = n;
                printf("%d ",v1[i]);
            }
    }
    printf("\n");
    fclose(fp);
    
    fopen(file, "r");
    while (fscanf(fp, "%d", &n) != EOF)
    {
            for (i=0; i<N && (n>= 64 && n%2 == 0); i++)
            {
                v2[i] = n;
                printf("%d ",v2[i]);
            }
    }

    printf("\n");
    fclose(fp);
    
 
    

    return EXIT_SUCCESS;
    
}