Array di struct

di il
9 risposte

Array di struct

Sto provando a costruire un array di record da file, ma sui record ancora non ci siamo

incappo in questo errore

vi posto il file.cpp
#include "func.h"
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void insersiciSquadra(squadra & squad, int & r){
ifstream in;

	in.open("/Users/Genna/Desktop/fondamenti di informatica/algoritmi di base/prove d'esame/gennaio 2009 squadre/squadre.txt",ios::in);

cout<<"quante squadre voui inserire?";
cin>>r;
for (int i=0;i<r;i++){
	in>>nome[i].squadra; //<------------------------------------------- was not declared in this scope
	in>>vittorie[i].squadra;//<-------------------------------------------perchè?
	in>>pareggi[i].squadra;//<-------------------------------------------
}

for (int i=0;i<r;i++){
	cout<<nome[i].squadra;//<-------------------------------------------
	cout<<vittorie[i].squadra;//<-------------------------------------------
	cout<<pareggi[i].squadra;//<-------------------------------------------
}

in.close()
}

e questo è l'Header

#ifndef head_
#define head_
#define N 30

typedef struct {
char	nome [20];
char	vittorie [20];
char	pareggi [20];
}squadra;

typedef squadra classifica [N];


void insersiciSquadra(squadra & squad,int & r);



#endif

9 Risposte

  • Re: Array di struct

    Ciao,
    prendi la mia risposta con le pinze...
     in>>nome[i].squadra; 
    Non dovresti definire un elemento di tipo squadra, e accedere ai dati della struct con quello?
    Ad esempio:
    squadra  element;
    
    in >> element.nome[i];
    Spero sia giusto
  • Re: Array di struct

    Si, nel main ho fatto una cosa simile, ma forse è sbagliato il modo in cui accedo, forse così dovrebbe andare meglio :
    cout<<"quante squadre voui inserire?";
    cin>>r;
    for (int i=0;i<r;i++){
    	in>>squad[i].nome;//<-----ANCHE SE POI MI DA ERRORE :no match for 'operator[]' in 'squad[i]'
            in>>squad[i].vittorie;
    	in>>squad[i].pareggi;
    }
    
    for (int i=0;i<r;i++){
    	in>>squad[i].nome;
    	in>>squad[i].vittorie;
    	in>>squad[i].pareggi;
    }
    
    
  • Re: Array di struct

    Ragazzi per piacere, sono bloccato da mezza giornata qui
  • Re: Array di struct

    Fa vedere sto main allora. O il codice completo.
  • Re: Array di struct

    Vorrei prelevare da file alcuni nomi di squadre nel seguente modo
    Juve
    12 (numero di vittorie)
    5 (numero i pareggi)
    Milan
    23
    16
    Genova
    34
    12

    e stampare su un nuovo file la classifica con i riepsttivi punti.

    io ho iniziato a scrivere il codice, ma mi sono bloccato durante l'accesso alla struct

    questo è il file .cpp
     
    #include "func.h" 
    #include <iostream> 
    #include <string> 
    #include <fstream> 
    using namespace std; 
    
    void insersiciSquadra(squadra & squad, int & r){ 
    ifstream in; 
    
    in.open("/Users/Genna/Desktop/fondamenti di informatica/algoritmi di base/prove d'esame/gennaio 2009 squadre/squadre.txt",ios::in); 
    
    cout<<"quante squadre voui inserire?"; 
    cin>>r; 
    for (int i=0;i<r;i++){ 
    in>>squad[i].nome; 
    in>>squad[i].vittorie; 
    in>>squad[i].pareggi; 
    } 
    
    for (int i=0;i<r;i++){ 
    in>>squad[i].nome; 
    in>>squad[i].vittorie; 
    in>>squad[i].pareggi; 
    } 
    
    in.close(); 
    }
    
    func.h
    
    
    
    #ifndef head_ 
    #define head_ 
    #define N 30 
    
    typedef struct { 
    char	nome [20]; 
    int	vittorie [20]; 
    int	pareggi [20]; 
    }squadra; 
    
    typedef squadra classifica [N]; 
    
    
    void insersiciSquadra(squadra & squad,int & r); 
    
    
    #endif





    main
    #include <iostream> 
    #include "func.h" 
    #include <string> 
    using namespace std; 
    
    
    int main (int argc, char * const argv[]) { 
    
    squadra squad; 
    int r; 
    
    
    insersiciSquadra(squad,r); 
    
    
    return 0; 
    } 
    
  • Re: Array di struct

    Siamo sempre alle stesse.
    
    typedef struct {
    char   nome [20];
    int   vittorie [20];
    int   pareggi [20];
    }squadra;
    
    typedef squadra classifica [N]; 
    
    cosa vedi qua che non va?
    Altra domanda: cos'è per te squadra, e cos'è per te classifica?
  • Re: Array di struct

    Squadra è un elemento (di tipo struct ) che forma l'array classifica
  • Re: Array di struct

    OK, se qui
    
    void insersiciSquadra(squadra & squad, int & r){ 
    
    stai inserendo un elemento perche squadra in se è UN elemento come fai a fare
    
    in>>squad[i].nome;
    in>>squad[i].vittorie;
    in>>squad[i].pareggi; 
    
    se squad è un elemento significa che NON è un array, quindi secondo te qual'è la soluzione?
  • Re: Array di struct

    Che sono un coj....
    grazie sky, ora funziona tutto
Devi accedere o registrarti per scrivere nel forum
9 risposte