Intero, float, vettore

di il
19 risposte

Intero, float, vettore

Ciao a tutti. Sono un neofita di programmazione e sto cercando di imparare leggendo qua e là su internet e provando a fare degli esercizi. Bene o male, con un po' di sforzo, mi stanno riuscendo.
Adesso però mi sono imbattuto in questo:

Carica un file di testo in cui sono memorizzati in ciascuna riga intero e un float e:
1. Copia in un vettore l’elenco dei valori float associati ad un intero positivo, inserito da terminale, e determinare il più piccolo valore intero presente nel file che chiamiamo X.
2. Calcola la media dei valori contenuti in tutto il vettore e stampa il risultato a video mostrando solo due cifre decimali.
3. Salva su un file testo, uno per riga, i valori float contenuti nel vettore che risultano maggiori di un valore dato da terminale X.

Mi sono fermato all'apertura del file...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10

int main(void) {
	struct S {
		int i;
		float j;
	} vet[N];	
	FILE *f;
	 
f = fopen("Intero-Float.txt", "r");
	if (f == NULL) exit(1);
	else printf("File aperto correttamente\n");
	while (scanf(f, "%s", vet[N]) != EOF);
}

19 Risposte

  • Re: Intero, float, vettore

    Adesso devi leggere i dati da file. Come si leggono i dati da file? Come è fatta una singola riga dati?
  • Re: Intero, float, vettore

    oregon ha scritto:


    Adesso devi leggere i dati da file. Come si leggono i dati da file? Come è fatta una singola riga dati?
    Sono 6 righe con un intero e un float per riga.
    fscanf(f, "%s", j); 
    ???
  • Re: Intero, float, vettore

    Per leggere una riga userai la scanf con due variabili, la prima intera e la seconda float

    fscanf (f, "%d %f", &varint, &varfl);
  • Re: Intero, float, vettore

    oregon ha scritto:


    Per leggere una riga userai la scanf con due variabili, la prima intera e la seconda float

    fscanf (f, "%d %f", &varint, &varfl);
    Ho aggiunto varint e varfl alla struct ma mi dà errore, li devo inserire al di fuori?
    O la struct non serve a niente e la posso eliminare?
  • Re: Intero, float, vettore

    Le due variabili sono un esempio. Tu puoi usare gli elementi della tua struttura.
  • Re: Intero, float, vettore

    oregon ha scritto:


    Le due variabili sono un esempio. Tu puoi usare gli elementi della tua struttura.
    Ma mi dà comunque errore, la struttura va messa? Le variabili le devo mettere esterne? Non mi hai risposto...

    E dopo lo scanf?
  • Re: Intero, float, vettore

    Ma tu sai come scrivere nella scanf il puntatore agli elementi della struttura? Se non conosci questa sintassi di base dillo chiaramente perché io pensavo che non sapessi come impostare l'algoritmo, non che non conoscessi le basi ...

    Se usi direttamente il vettore allora dovrai scrivere

    fscanf (f, "%d %f", &vet[k].i, &vet[k].j);

    in cui k è il contatore delle righe da leggere
  • Re: Intero, float, vettore

    oregon ha scritto:


    Ma tu sai come scrivere nella scanf il puntatore agli elementi della struttura? Se non conosci questa sintassi di base dillo chiaramente perché io pensavo che non sapessi come impostare l'algoritmo, non che non conoscessi le basi ...

    Se usi direttamente il vettore allora dovrai scrivere

    fscanf (f, "%d %f", &vet[k].i, &vet[k].j);

    in cui k è il contatore delle righe da leggere
    Te l'avevo detto come premessa, sto studiando per passione, ma no, non ho le basi.

    Comunque mi dice "Errore: l'espressione deve avere il tipo di struttura o unione"
  • Re: Intero, float, vettore

    Quale codice hai scritto esattamente?
  • Re: Intero, float, vettore

    oregon ha scritto:


    Quale codice hai scritto esattamente?
    Quello che hai postato tu... ma anche sostituendo vet[N] come avevo messo io lo dà
  • Re: Intero, float, vettore

    Puoi riproporre qui il codice completo che hai compilato?
  • Re: Intero, float, vettore

    oregon ha scritto:


    Puoi riproporre qui il codice completo che hai compilato?
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 10
    
    int main(void) {
     int varint;
     float varfl;
     int i;
     int vet[N];
     
     struct S {
    	 int varint;
    	 float varfl;
     };
    	FILE *f;
    	 
    f = fopen("Intero-Float.txt", "r");
    	if (f == NULL) exit(1);
    	else printf("File aperto correttamente\n");
    	while (scanf(f, "%s", vet[N]) != EOF);
    	
    	fscanf(f, "%d %f", &vet[N].i, &vet[N].j);
    	
    }
    
  • Re: Intero, float, vettore

    E cosa c'entra la scanf ?

    E poi avevo detto di usare k non N per la fscanf ...
  • Re: Intero, float, vettore

    oregon ha scritto:


    E cosa c'entra la scanf ?

    E poi avevo detto di usare k non N per la fscanf ...
    Ma me l'hai detto tu che si usa scanf
    Per leggere una riga userai la scanf con due variabili, la prima intera e la seconda float

    fscanf (f, "%d %f", &varint, &varfl);


    Insomma, per copiare in un vettore l’elenco dei valori float associati ad un intero positivo, inserito da terminale, e determinare il più piccolo valore intero presente nel file che chiamiamo X, che cosa dovrei scrivere? Su internet non ho trovato nulla... non ho nessun professore che mi può spiegare nel dettaglio, come faccio?
Devi accedere o registrarti per scrivere nel forum
19 risposte