Grandezza di un vettore di Strutture

di il
21 risposte

Grandezza di un vettore di Strutture

Salve a tutti, sono nuovo del forum e non vi nego che sono nuovo anche nel programmare!
Volevo chiedervi aiuto per quanto riguarda un vettore di strutture in linguaggio C.
vi mando il codice e vi spiego a tutti il mio problema.

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

#define MAX 64
#define MAXSTAZ 100000


typedef struct stazione{
char nome[MAX];
int qta;
}staz;

int leggi_file(FILE *fin);

//int conta=0;
staz vett[MAXSTAZ];

int main(void){

char nomefile[MAX];
FILE *fin;
int i;

printf("Nome del file: ");
gets( nomefile);
if( (fin = fopen( nomefile, "r")) == NULL)
{
printf("Errore in apertura file di input \n");
}
if(leggi_file( fin)==NULL){
printf("errore in lettura file di input\n");
system("pause");
return;
}

for(i=0;i<MAXSTAZ;i++){
printf("\n %s %d \n",vett.nome, vett.qta);
system("pause");
}
}
int leggi_file(FILE*fin){
int i,ril;

for(i=0;i<MAXSTAZ;i++){

fscanf(fin, "%s %d", vett.nome, &vett.qta);
//conta++;
//fscanf(fin, "%d\n", &vett.qta);
}

}


praticamente volevo sapere se era possibile non dover caricare tutte le 100000 posizioni(che ho obbligatorie nella consegna dell'esercizio) a seconda di quanto è grande il file!! per favore aiutatemiiiiiiiiiiiiiiii ne sto uscendo pazzo

21 Risposte

  • Re: Grandezza di un vettore di Strutture

    Non ho capito ... cosa c'è nella consegna?

    Per fare un test puoi usare 10 posizioni ... non comprendo il problema ...
  • Re: Grandezza di un vettore di Strutture

    Il problema è che nel testo mi dice che ci possono essere centinaia di migliaia di stazioni, quindi devo definire il massimo per il vettore. il problema è praticamente dare la grandezza reale al vettore quindi maxvett dovrebbe adattarsi al numero di stazioni presenti nel file dalla quale prelevo i dati.

    ES.
    Per definizione ho: Vettore[1000]
    quando carico i dati presi dal file ci sono solamete un numero di dati che riempie il vettore fino alla decima posizione.
    Questo implica che avrò occupato in memoria 990 posizioni = 0.

    Mi sono spiegato?
  • Re: Grandezza di un vettore di Strutture

    Si. Devi usare l'allocazione dinamica.
  • Re: Grandezza di un vettore di Strutture

    Potresti farmi un'esempio?
    perchè mi sa proprio che è l'ultima lezione che ho saltato!
  • Re: Grandezza di un vettore di Strutture

    Vedi se può esserti utile.
    http://www.html.it/pag/15416/allocazione-dinamica-della-memoria/
  • Re: Grandezza di un vettore di Strutture

    Purtroppo è molto differente il problema! comunque ho capito cosa dovrei fare (circa).
    Grazie tante spero di riuscire a risolvere il mio problema prima di domani!
  • Re: Grandezza di un vettore di Strutture

    Non ne sto cavando piede aiutatemi!!!
  • Re: Grandezza di un vettore di Strutture

    Cosa hai provato? Cosa non va?

    Ma con tutti i dati cosa ci devi fare alla fine ? Sicuro che devi caricarli tutti in memoria? Perché mai?
  • Re: Grandezza di un vettore di Strutture

    Praticamente deve essere un esercizio sull'allocazione della memoria.
    devo caricare i dati presenti in un file e stampare solo quelli. però mi dice che il programma deve poter gestire un centinaio di migliaia di dati.
    quindi implica che da MAXVETT = 100000 io debba avere una grandezza reale presente nel file di testo.
    Nel caso dell esempio sono 4 le stazioni.
    non riesco ad allocare la memoria del vettore e quindi quando vado a stampare mi appaiono un sacco di 0 inesistenti
  • Re: Grandezza di un vettore di Strutture

    Scusa ma è importante quello che ci devi fare con i dati perché cambia totalmente il modo di risolvere il problema.

    Se leggi la prima riga (allocando lo spazio necessario per una sola riga) e la stampi e poi passi alla prossima e così via puoi lavorare con tutte le linee che vuoi allocando lo spazio solo per la stringa corrente.

    Ho capito male?
  • Re: Grandezza di un vettore di Strutture

    No le devo solo stampare.
    praticamente la consegna dell'esercizio e:
    Fare in modo che il vettore di strutture sia composto esclusivamente dai dati presenti nel file, eliminando dal vettore le eventuali posizioni non assegnate.
  • Re: Grandezza di un vettore di Strutture

    Cioè, per capirci completamente, ci mostri un esempio di file da leggere (poche righe) e di quello che devi stampare?
  • Re: Grandezza di un vettore di Strutture

    Questo è il file che leggo:


    elenco.txt(con una stringa e un intero):

    Station_J 120
    Station_B 150
    Station_Z 1988
    Station_A 149



    che carico nel vettore di strutture che per definizione deve avere 100000 posizioni.
    ma visto che nel file ci sono solo quattro dati devo far stampare il vettore di struct con le posizioni diverse da 0. Quindi suppongo che centri l'allocazione della memoria


    ok il mio programma (scritto sopra) mi stampa invece

    Station_J 120
    Station_B 150
    Station_Z 1988
    Station_A 149
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    ecc ecc
  • Re: Grandezza di un vettore di Strutture

    Ma scusa ... tu devi leggere quelle 4 righe e visualizzarle ? Perché non lo fai riga per riga, anche fossero 1 milione, come ti ho detto? Perché allochi lo spazio per 100000?
Devi accedere o registrarti per scrivere nel forum
21 risposte