Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Fondamenti di Informatica
- Prima Prova in Itinere
- TURNO 1B
- Scrivere un programma in ANSI C che, dato un file di testo che contiene in ogni riga un valore intero, esegua le seguenti operazioni:
- 1. Carica in un vettore di numeri interi i valori dispari presenti nel file;
- 2. Visualizzi il contenuto del vettore caricato al punto 1 in ordine inverso rispetto quello di inserimento;
- 3. Calcoli e visualizzi il valore minimo e la sua posizione all’interno del vettore
- Specifiche:
- - La dimensione dell’array è N pari a 10
- - Il nome del file di ingresso deve essere inserito da input.
- - Il numero di righe nel file non è noto all’inizio. Eventuali elementi nel file oltre la riga N-esima (cioè oltre la decima riga) non devono essere prese in considerazione
- */
- #include <stdio.h>
- #include <stdlib.h>
- #define DIM 10
- int main(void) {
- int v[DIM];
- FILE *f;
- char nomefile[64];
- int numelementi = 0; // numero di elementi letti
- int num, min, j, pos;
- /**** Quesito 1 ****/
- printf("Inserire il nome del file da aprire: ");
- scanf("%s", nomefile);
- if (((f = fopen(nomefile, "r")) == NULL)){
- printf("Errore nell'apertura del file\n");
- exit(1);
- }
- while ((!feof(f)) && (numelementi < DIM)) {
- if (fscanf(f, "%d", &num)==1)
- if ((num % 2) != 0){
- v[numelementi] = num;
- numelementi++;
- }
- }
- fclose(f);
- printf("Elementi del file letti e caricati nel vettore\n\n");
- /* controllo che nel vettore ci siano elementi, altrimenti esco dal programma
- in quanto i quesiti 2 e 3 non possono essere eseguiti */
- if (numelementi == 0) {
- printf("Non sono presenti numeri validi nel file\n");
- printf("I quesiti 2 e 3 non possono essere eseguiti\n");
- exit(1);
- }
- /**** Quesito 2 ****/
- printf("Stampa del vettore in ordine inverso\n");
- for (j = numelementi - 1; j >= 0; j--)
- printf("Elemento %d = %d\n", j, v[j]);
- /**** Quesito 3 ****/
- min = v[0];
- pos = 0;
- for (j = 1; j < numelementi; j++) {
- if (v[j] < min) {
- min = v[j];
- pos = j;
- }
- }
- printf("Il valore minimo contenuto all'interno del vettore e' %d, in posizione %d \n", min, pos);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement