Untitled

 avatar
unknown
c_cpp
a month ago
1.3 kB
3
Indexable
/*
Scrivere un programma che apre un file di testo il cui nome è ricevuto come argomento da riga di comando e
contenente una serie di lunghezza indefinita di numeri interi. Il programma stampa a video tutti quei numeri della
sequenza per cui la cifra delle decine (se esiste) è il doppio della cifra delle decine del numero che lo precede.
Esempio: Sequenza nel file: 1 43 484 113 521 446 55. Output a video: 484 521 446
*/

#include <stdio.h>
#include <string.h>

int estraidecine(int n)
{
    return (n/10) %10;
}

int main(int argc, char *argv[])
{
    if(argc == 2)
    {
        FILE *fp = fopen(argv[1], 'r');
        if(fp)
        {
            int precedente, corrente;

            if(fscanf(fp, "%d", &precedente) != 1)
            {
                fclose(fp);
                return 0;
            }

            while(fscanf(fp, "%d", &corrente) == 1)
            {
                int dec_prec = estraidecine(precedente);
                int dec_corr = estraidecine(corrente);

                if(dec_corr == dec_prec*2)
                {
                    printf("%d ", corrente);
                }
                precedente = corrente;
            }

            fclose(fp);

        }else{
            printf("Errore apertura file");
        }

    }else{
        printf("Numero argomenti sbagliato");
    }

    return 0;
}
Leave a Comment