Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [c++]Problema: leggere da un file una struct

    La traccia dell'esercizio è questa:
    Dato un file contenente un elenco di nomi di calciatori (con ripetizioni) stampare (senza ripetizioni) a video e su file i nomi che si ripetono con occorrenza maggiore di 2 (si utilizzi un array di record).

    Il mio lavoro:
    #include <iostream>
    #include <stdlib.h>
    #include <fstream>
    #include <string.h>
    using namespace std;
    #define max 10
    #define m 10


    typedef struct {
    char nome[m];
    char cognome[m];
    }calciatore;


    typedef calciatore elenco[max];


    bool Controllo_File(){
    bool presente=false;
    fstream file;
    file.open("nomi.txt", ios::in);
    if(file) presente=true;
    file.close();
    return presente;
    }
    void stampaArray(const elenco e, int& r){
    cout<<e[r].nome<<" "<<e[r].cognome<<endl;
    }
    void letturaNomiCalciatori(elenco E){
    int i=0;
    fstream f;
    f.open("nomi.txt", ios::in);
    while(!f.eof())
    {
    f>>E[i].nome;
    f>>E[i].cognome;
    i++;
    stampaArray(E, i);
    }
    f.close();

    }
    int main(){


    elenco e;

    if(Controllo_File){
    letturaNomiCalciatori(e);


    }
    else{
    cout<<"File non trovato!";
    }


    system("PAUSE");
    return 0;
    }

    Il mio problema: Lo so che con la funzione stampaArray stampo tutti gli struct del file, ma il mio problema è un altro, cioè quando avvio il programma a video non mi compaiono i nomi dei calciatori ma bensì caratteri indecifrabili. Ora ho tentanto in vari modi ma niente, secondo voi qual'è il mio errore?
    Grazie in anticipo!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sei sicuro che nel file non ci siano più di 10 nominativi? Sicuro che i nomi e i cognomi non superino 9 caratteri?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    I nomi nel file sono scritti in questo modo:
    Alessandro
    DelPiero
    Francesco
    Totti
    Luca
    Tony
    Francesco
    Totti
    Francesco
    Totti
    Luca
    Tony.
    In effetti hai ragione ho aumentato la capacità delle costanti. Ho portato max a 100 e m a 20.
    Un' altra cosa strana se scrivo cout<<e[0].nome<<" "<<e[0].cognome<<endl;
    Mi stampa a video la serie Alessandro DelPiero come giusto che sia, non capisco perchè se sostituisco a 0 la variabile r non mi stampa questi benedetti nomi ahahahahahah

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ovviamente queste due righe

    codice:
    i++;
    stampaArray(E, i);
    devono essere invertite, così

    codice:
    stampaArray(E, i);
    i++;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Grazie infiniteeeeeeeeeee! DDDDDDDDDD

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.