Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15

    C++ Passaggio struct a funzioni

    Aiuto sono disperato! Non riesco proprio a passare una struct ad una funzione di tipo void.

    - la funzione leggi(), legga a terminale i dati di N studenti (con N definito come la costante 4)
    costituiti da Nome, Cognome, Voto, e li inserisca in un vettore;

    Praticamente io avrei pensato, che ogni membro della funzione, sia caricato dentro ad un array differente.

    Il problema è che non so utilizzare i puntatori in questo ambito etc etc..
    Vi sarei grato se voi poteste aiutarmi aggiungendo i puntatori, e tutto quello che serve per far funzionare il tutto correttamente.

    #include "stdafx.h"
    using namespace std;
    #define N 4
    #define MAX 50
    struct info
    {
    char nome[15];
    char cognome[20];
    char voto[2];
    }dato;
    //Prototipo funzione
    void lettura(struct info, struct info, struct info, struct info );

    int _tmain(int argc, _TCHAR* argv[])
    {
    char v_nome[MAX];
    char v_cognome[MAX];
    char v_voto[MAX];
    lettura(dato, v_nome, v_cognome, v_voto);
    _getch();
    return 0;
    }
    void lettura(struct info dato, struct info vettore_nome[MAX], struct info vettore_cognome[MAX], struct info vettore_voto[MAX])
    {
    char scelta=0;
    int i_nome=0, i_cognome=0, i_voto=0;
    do {
    cout<<"Nome: "; cin>>dato.nome;
    vettore_nome[i_nome]=dato.nome; i_nome++;

    cout<<"Cognome: "; cin>>dato.cognome;
    vettore_cognome[i_cognome]=dato.cognome; i_cognome++;

    cout<<"Voto: "; cin>>dato.voto;
    vettore_voto[i_voto]=dato.voto; i_voto++;

    cout<<"Continuare? 1 = si - 0 = no.";
    cin>>scelta;

    }while(scelta==1);
    }

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Non hai usato i tag code e non hai indentato il codice, ti faccio un esempio di codice indentato:
    codice:
    void lettura(struct info dato, struct info vettore_nome[MAX], struct info vettore_cognome[MAX], struct info vettore_voto[MAX])
    {
        char scelta=0;
        int i_nome=0, i_cognome=0, i_voto=0;
        do{
            cout<<"Nome: "; cin>>dato.nome;
            vettore_nome[i_nome]=dato.nome; i_nome++;
    
            cout<<"Cognome: "; cin>>dato.cognome;
            vettore_cognome[i_cognome]=dato.cognome; i_cognome++;
    
            cout<<"Voto: "; cin>>dato.voto;
            vettore_voto[i_voto]=dato.voto; i_voto++;
    
            cout<<"Continuare? 1 = si - 0 = no.";
            cin>>scelta;
    
        }while(scelta==1);
    }
    Ma qual'è il problema? Ti da qualche errore o warning?
    La funzione non si comporta come dovrebbe? Come si comporta? Come dovrebbe comportarsi?

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: C++ Passaggio struct a funzioni

    Originariamente inviato da frufru
    Praticamente io avrei pensato, che ogni membro della funzione, sia caricato dentro ad un array differente.
    No ... altrimenti a cosa servirebbe la struttura ?

    Vi sarei grato se voi poteste aiutarmi aggiungendo i puntatori, e tutto quello che serve per far funzionare il tutto correttamente.
    Diciamo che ti fornisco qualche indicazione che poi tu completerai ...

    Per la struttura ...

    codice:
    #define N 4
    
    struct info
    {
    	char nome[15];
    	char cognome[20];
    	char voto[2]; 
    };
    Per il main

    codice:
    int _tmain(int argc, _TCHAR* argv[])
    {
    	struct info dati[N];
    
    	lettura(dati); 
    ...
    Per la funzione

    codice:
    void lettura(struct info *d)
    {	
    	char scelta=0;
    	
    	int i = 0;
    	
    	do	
    	{
    		cout<<"Nome: "; 
    		cin >> d[i].nome; 
           ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Si, mi da problemi del tipo: 'fatal error LNK1120: 1 esterni non risolti', che credo sia legato all'errato utilizzo dei puntatori ed altro. Adesso provo con i vostri consigli, vi faccio sapere al più presto. Grazie mille per l'aiuto, buona giornata!

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Ok, ho fatto come mi ha consigliato oregon.. Ora parte e va, ma non riesco a capire quale sia la dimensione del vettore 'd' nella funzione 'lettura'..Inoltre devo fare un'altra funzione e due stampe..
    2) calcoli con la funzione media() la media dei voti;
    3) stampi a terminale i nominativi di ciascuno studente;
    4) stampi poi a terminale il voto medio.
    Per quanto riguarda 2) come faccio ad accedere nelle celle dove sono salvati i voti? Non sarebbe meglio fare un vettore di stringhe per ogni membro della struttura? Vi ringrazio.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da frufru
    Ok, ho fatto come mi ha consigliato oregon.. Ora parte e va, ma non riesco a capire quale sia la dimensione del vettore 'd' nella funzione 'lettura'..
    E' costante ... l'hai definito tu con la costante N ...

    Per quanto riguarda 2) come faccio ad accedere nelle celle dove sono salvati i voti?
    Esattamente come già hai visto in lettura ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Niente non va .. Ci rinuncio, grazie per i consigli

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    aspettate ma quando si passa un puntatore a struttura non bisogna usare l'operatore "->" per accedere ai suoi membri?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Rising ... il puntatore passato è ad "un array di strutture" ...

    frufru ... cosa non va?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.