[C++] Istruzioni di assegnazione tra tabelle
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 4 di 4

Discussione: [C++] Istruzioni di assegnazione tra tabelle

Cambio titolo
  1. #1
    Inuyasha89
    Ospite

    [C++] Istruzioni di assegnazione tra tabelle

    Salve, ho da poco scritto un codice in C++ che gestisce dati implementati in tabelle, come saprete array di strutture.
    A seconda di determinate condizioni, alcuni dati immessi in una tabella A devono essere copiati in una tabella B.

    Per risolvere ho cercato di estrapolare dall'intero codice la parte del problema, realizzando di conseguenza un secondo codice dove dati immessi in una tabella devono poi essere copiati in un'altra tabella.
    L'operazione non mi riesce.

    Ecco il codice (la parte in grassetto è quella che secondo me non funziona):
    Spoiler:
    Codice:
    #include <iostream>
    #include <conio.h>
    #include <string.h>
    using namespace std;
    
    const int MAX=10;
    
    struct data {
           int a;   //anno
           int m;  //mese
           int g;   //giorno
    };
    
    struct nominativo {
           char nome[40];
           struct data nasc; //data di nascita
           struct data dipl;   //data del diploma
    };
    
    typedef struct nominativo elenco;
    elenco studin[MAX], studout[MAX]; //studente input, studente output
    
    int richiesta (int sx, int dx){
        int n;
        cin >> n;
        while (n<sx || n >dx) {
              cout << "Puoi inserire "; 
              if (sx==dx) cout << "solo il numero " << sx << ": ";
              else       cout << "solo numeri compresi tra " << sx << " e " << dx << ": ";
              cin >> n;
        }
        return n;
    } //funzione che restituisce un numero compreso tra due estremi
    
    int main (){
        int i=0;
        //fase di input
        cout << "Introdurre nome e cognome dello studente :\n";
        cin.getline(studin[i].nome,40);
        cout << "Introdurre la data di nascita di " << studin[i].nome << "\n";
        cout << "Giorno: ";
        studin[i].nasc.g=richiesta(1,31);     
        cout << "Mese: ";
        studin[i].nasc.m=richiesta(1,12);
        cout << "Anno: ";
        studin[i].nasc.a=richiesta(1900,2100);
        cout << "Introdurre la data del conseguimento del diploma di " << studin[i].nome << ".\n";
        cout << "Giorno: ";
        studin[i].dipl.g=richiesta(1,31);     
        cout << "Mese: ";
        studin[i].dipl.m=richiesta(1,12);
        cout << "Anno: ";
        studin[i].dipl.a=richiesta(1900,2100);
        //fase di calcolo
        int k=0;
        strcpy(studin[i].nome,studout[k].nome);
        studin[i].nasc.g=studout[k].nasc.g;
        studin[i].nasc.m=studout[k].nasc.m;
        studin[i].nasc.a=studout[k].nasc.a;
        studin[i].dipl.g=studout[k].dipl.g;
        studin[i].dipl.m=studout[k].dipl.m;
        studin[i].dipl.a=studout[k].dipl.a;
        //fase di output
        cout << "\n\n" << studout[i].nome << "\n";
        cout << "Nascita: " << studout[i].nasc.g << " "; 
        cout << studout[i].nasc.m << " ";
        cout << studout[i].nasc.a << " ";
        cout << "Diploma: " << studout[i].dipl.g << " ";
        cout << studout[i].dipl.m << " ";
        cout << studout[i].dipl.a << "\n";
        //fase d'attesa per visualizzazione input
        char q;
        q=getch();
        return 0;
    }

    Ecco l'output al video:


    Niente output, il che mi fa pensare che istruzioni di assegnazioni non funzionano. Quindi assegnazioni tra 2 tabelle non si possono fare?
    Come dovrei risolvere allora?

  2. #2
    Utente L'avatar di ndakota
    Registrato il
    07-06
    Località
    Milano
    Messaggi
    3.253
    così a occhio alle studout non mi pare assegni mai nulla.. forse nelle parti in grassetto dovresti fare il contrario..

  3. #3
    Utente L'avatar di ndakota
    Registrato il
    07-06
    Località
    Milano
    Messaggi
    3.253
    infatti adesso sembra esatto..
    Spoiler:

    Codice:
    #include <iostream>
    #include <conio.h>
    #include <string.h>
    using namespace std;
    const int MAX=10;
    struct data {
           int a;   //anno
           int m;  //mese
           int g;   //giorno
    };
    struct nominativo {
           char nome[40];
           struct data nasc; //data di nascita
           struct data dipl;   //data del diploma
    };
    typedef struct nominativo elenco;
    elenco studin[MAX], studout[MAX]; //studente input, studente output
    int richiesta (int sx, int dx){
        int n;
        cin >> n;
        while (n<sx || n >dx) {
              cout << "Puoi inserire "; 
              if (sx==dx) cout << "solo il numero " << sx << ": ";
              else       cout << "solo numeri compresi tra " << sx << " e " << dx << ": ";
              cin >> n;
        }
        return n;
    } //funzione che restituisce un numero compreso tra due estremi
    int main (){
        int i=0;
        //fase di input
        cout << "Introdurre nome e cognome dello studente :\n";
        cin.getline(studin[i].nome,40);
        cout << "Introdurre la data di nascita di " << studin[i].nome << "\n";
        cout << "Giorno: ";
        studin[i].nasc.g=richiesta(1,31);     
        cout << "Mese: ";
        studin[i].nasc.m=richiesta(1,12);
        cout << "Anno: ";
        studin[i].nasc.a=richiesta(1900,2100);
        cout << "Introdurre la data del conseguimento del diploma di " << studin[i].nome << ".\n";
        cout << "Giorno: ";
        studin[i].dipl.g=richiesta(1,31);     
        cout << "Mese: ";
        studin[i].dipl.m=richiesta(1,12);
        cout << "Anno: ";
        studin[i].dipl.a=richiesta(1900,2100);
        //fase di calcolo
        int k=0;
        strcpy(studout[k].nome,studin[i].nome);
        studout[k].nasc.g=studin[i].nasc.g;
        studout[k].nasc.m=studin[i].nasc.m;
        studout[k].nasc.a=studin[i].nasc.a;
        studout[k].dipl.g=studin[i].dipl.g;
        studout[k].dipl.m=studin[i].dipl.m;
        studout[k].dipl.a=studin[i].dipl.a;
        //fase di output
        cout << "\n\n" << studout[i].nome << "\n";
        cout << "Nascita: " << studout[i].nasc.g << " "; 
        cout << studout[i].nasc.m << " ";
        cout << studout[i].nasc.a << " ";
        cout << "Diploma: " << studout[i].dipl.g << " ";
        cout << studout[i].dipl.m << " ";
        cout << studout[i].dipl.a << "\n";
        //fase d'attesa per visualizzazione input
        char q;
        q=getch();
        return 0;
    }

  4. #4
    Inuyasha89
    Ospite
    Che sbadato, grazie mille.

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •