Realizziamo un programma che trova i multipli di un numero e dopo li memorizza in un file di nome multipliM.txt.
Abbiamo già visto come verificare i multipli di un numero con vari algoritmi:
– Esempio sui multipli di un numero con algobuild – senza iterazioni
– multipli di un numero con algobuild – con iterazioni
– multipli di un numero con scratch – senza iterazioni
Quindi in questa lezione vedremo come inserire in un file solo i multipli di un numero, letto da tastiera.
Procedimento algoritmo sui multipli di un numero e i file
Realizziamo dapprima un caso specifico, inserendo in un file di testo solo i multipli di 3.
Data una sequenza di interi forniti dall’utente, memorizzare in un file solo i multipli di tre. Per interrompere l’inserimento, digitare zero.
Quindi utilizziamo una costante M uguale a 3 e con la funzione fopen creiamo un nuovo file di testo (t) in scrittura (w). Facciamo il controllo che il puntatore non restituisca NULL prima di procedere.
Con un ciclo do – while che continua finchè il numero inserito non è zero, digititamo i nostri numeri da tastiera, e solo se il numero è multiplo di 3 verrà inserito nel nostro file di testo di nome “multipliM.txt”, con la funzione fprintf().
Al termine chiudiamo il file con fclose().
Ecco dunque il listato completo:
#include <stdio.h>
#include <stdlib.h>
#define M 3
int main() {
FILE *fp;
int numero;
if((fp=fopen("multipliM.txt", "wt"))==NULL) {
printf("Errore nell'apertura del file'");
exit(1);
}
do {
printf("Numero:");
scanf("%d", &numero);
if (numero%M==0 && numero!=0)
fprintf(fp,"%d\n", numero);
} while(numero!=0);
fclose(fp);
return 0;
}
Realizziamo adesso il caso in cui vogliamo chiedere all’utente quali multipli inserire nel nostro file.
Basterà fare una piccola e semplice modifica, chiedendo dapprima quale multiplo considerare.
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
int m, numero;
if((fp=fopen("multipliM.txt", "wt"))==NULL) {
printf("Errore nell'apertura del file'");
exit(1);
}
printf("Multipli di:");
scanf("%d", &m);
do {
printf("Numero:");
scanf("%d", &numero);
if (numero%m==0 && numero!=0)
fprintf(fp,"%d\n", numero);
} while(numero!=0);
fclose(fp);
return 0;
}
Chiaramente questi sono solo dei semplici esempi di operazioni sui file in C, con l’utilizzo delle funzioni fopen(), fprintf() ed fclose().
Alcuni link utili
Somma elementi diagonale principale di una matrice
Come sommare gli elementi della cornice esterna
Ricerca elementi in una matrice