ST1.a) { ST1.a = val; } else if (val < ST1.b) { ST1.b = val; } } fclose(f); ST2.a = ST1.a - ST1.b; ST2.b = ST1.a * ST1.b; printf("%d %d\n\t %d %d\n", ST1.a,ST1.b,ST2.a,ST2.b); return 0; } 3">

La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Esercizi su File. 2 Esercizio Dato un file di testo chiamato dati.txt già esistente contenente uno per riga valori che rappresentano numeri relativi,

Presentazioni simili


Presentazione sul tema: "1 Esercizi su File. 2 Esercizio Dato un file di testo chiamato dati.txt già esistente contenente uno per riga valori che rappresentano numeri relativi,"— Transcript della presentazione:

1 1 Esercizi su File

2 2 Esercizio Dato un file di testo chiamato dati.txt già esistente contenente uno per riga valori che rappresentano numeri relativi, scrivere un programma in linguaggio C in cui si dichiarino due struct ST1 e ST2 ciascuna con due campi a e b di tipo int e che effettua le seguenti operazioni: –scrive su video quanti valori contiene il file dati.txt; –pone nel campo a di ST1 il più grande valore contenuto in dati.txt; –pone nel campo b di ST1 il più piccolo valore contenuto in dati.txt; –pone nel campo a di ST2 la differenza fra il più grande e il più piccolo valore contenuto in dati.txt; –pone nel campo b di ST2 il prodotto fra il più grande e il più piccolo valore contenuto in dati.txt.

3 #include typedef struct {int a, b;} ST; int main() { ST ST1, ST2; FILE *f; int val; f = fopen("dati.txt","r"); if (f==NULL) exit(-1); fscanf(f,"%d",&ST1.a); ST1.b = ST1.a; while(feof(f) == 0) { fscanf(f,"%d",&val); if(val > ST1.a) { ST1.a = val; } else if (val < ST1.b) { ST1.b = val; } } fclose(f); ST2.a = ST1.a - ST1.b; ST2.b = ST1.a * ST1.b; printf("%d %d\n\t %d %d\n", ST1.a,ST1.b,ST2.a,ST2.b); return 0; } 3

4 Esercizio Dato un file di testo chiamato dati.txt già esistente contenente uno per riga valori che rappresentano numeri relativi, scrivere un programma in linguaggio C in cui si dichiarino due file F1 e F2 che esternamente si chiameranno rispettivamente dati1.txt e dati2.txt e effettua le seguenti operazioni: –scrive quanti valori contiene il file dati.txt; –pone in dati1.txt gli elementi di dati.txt divisibili per 7; –pone in dati2.txt gli elementi di dati.txt divisibili per 5; –scrive su video quanti valori contiene il file dati1.txt; –scrive su video quanti valori contiene il file dati2.txt; 4

5 #include int main() { FILE *f, *f1, *f2; int val, cont=0, cont7=0, cont5=0; f = fopen("dati.txt","r"); f1 = fopen("dati1.txt","w"); f2 = fopen("dati2.txt","w"); if (f==NULL || f1==NULL || f2==NULL) exit(-1); 5

6 while(fscanf(f,"%d",&val) != EOF) { cont++; if(val % 7 == 0) { cont7++; fprintf(f1,"%d\n",val); } if(val % 5 == 0) { cont5++; fprintf(f2,"%d\n",val); } printf("%d %d %d\n",cont,cont7,cont5); fclose(f); fclose(f1); fclose(f2); system("pause"); return 0; } 6

7 Esercizio Scrivere un programma in linguaggio C che: –definisce due vettori P e D contenenti ciascuno 100 numeri interi; –legge da standard input una sequenza di numeri interi ed inserisce i valori pari nel vettore P e i valori dispari nel vettore D, loperazione di lettura termina quando almeno uno dei due vettori è stato riempito; –inserisce in un file di testo denominato dati.txt i valori contenuti in P e D in modo alternato. 7

8 #define N 100 int main() { int P[N], D[N], i=0, j=0; do { scanf(%d,&temp); if(temp%2==0) { P[i]=temp; i++; } else { D[j]=temp; j++; } } while (ij) { max=i; } else { max=j; } fp=fopen(dati.txt,w); for(k=0;k

9 Esercizio Scrivere un programma C che: ha in ingresso due file denominati rispettivamente A.txt e B.txt contenenti su ogni riga un numero intero. Il numero di righe dei due file non è noto a priori ma è uguale nei due file; definisce una matrice di nome MATRI 2 X 10 di tipo opportuno e riempie la prima riga di MATRI con gli elementi di A.txt fino al riempimento della riga o all'esaurimento dei dati letti dal file; poi riempie la seconda riga di MATRI con gli elementi di B.txt fino al riempimento della riga o all'esaurimento dei dati letti dal file; copia in un vettore VETT gli elementi presenti nella prima riga della matrice che soddisfano i seguenti criteri: –il valore è copiato solo se è maggiore o uguale al valore corrispondente nella seconda riga della matrice; –il vettore non deve presentare buchi, ovvero deve essere riempito senza soluzione di continuità. Il programma stampa i valori effettivamente inseriti in VETT. 9

10 #include int main() { FILE *fA, *fB; int MATRI[2][10], VETT[10], el; int indR, indV, j; fA = fopen("A.txt","r"); fB = fopen("B.txt","r"); if(fA == NULL || fB== NULL) exit(-1); 10

11 indR=0; while(fscanf(fA,"%d",&el) != EOF && indR<10) { MATRI[0][indR] = el; indR++; } for(j=0;j= MATRI[1][j]) { VETT[indV] = MATRI[0][j]; indV++; } for(j=0; j


Scaricare ppt "1 Esercizi su File. 2 Esercizio Dato un file di testo chiamato dati.txt già esistente contenente uno per riga valori che rappresentano numeri relativi,"

Presentazioni simili


Annunci Google