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

    esercizio sulle struct

    salve, ho svolto questo programma
    funziona tutto tranne la procedura di ordinamento BubbleSort
    mi potete aiutare?grazie

    //Esercizio sulle Struct
    /*
    Scrivere un programma che permette di gestire in memoria
    un numero massimo di 30 persone.
    Il programma deve consentire l'iserimento dei dati, la ricerca di un dato
    conoscendo il cognome di una persona e la stampa su video di tutte le
    persone inserite ed eventualmente ordinate per data di nascita
    */

    #include<cstdlib>
    #include<iostream>
    #include<string>

    #ifdef _WIN32
    const char* pulisci = "cls";
    #else
    #ifdef linux
    const char* pulisci = "clear";
    #else
    #error OS non supportato
    #endif
    #endif


    using namespace std;

    struct Tpdata{
    int giorno;
    int mese;
    int anno;
    };
    struct TpPersona{
    char cognome[20];
    char nome[20];
    Tpdata nascita;
    char luogo[20];
    };
    TpPersona Persone[30];

    int MenuScelta();
    void Inserimento(TpPersona&, char&);
    void Stampa(const TpPersona&);
    int Ricerca(char[], TpPersona[], const int);
    void ordinaBubble(TpPersona[], const int);

    int main(){
    TpPersona persona1;
    int corrente, NumPers=0;
    int scelta;
    char ch;//serve per salvare i dati della persona
    char cognome2[30];
    //scelta menu
    do{
    scelta=MenuScelta();
    system(pulisci);
    cout<<"Numero delle persone : "<<NumPers<<endl;
    switch(scelta){
    case 1:
    //inserimento
    Inserimento(persona1,ch);
    if(ch=='s')
    Persone[NumPers++]=persona1;
    break;

    case 2:
    //ricerca
    cout<<"Cognome da ricercare = ";
    cin>>cognome2;
    corrente=Ricerca(cognome2,Persone,NumPers);
    if(corrente>-1)
    Stampa(Persone[corrente]);
    else
    cout<<"Dati non trovati"<<endl;
    break;

    case 3:
    //Stampa dati
    cout<<" STAMPA DATI "<<endl;
    for(corrente=0;corrente<NumPers;corrente++){
    Stampa(Persone[corrente]);
    }
    break;

    case 4:

    //Stampa ordinati
    cout<<" STAMPA DATI ORDINATI "<<endl;
    ordinaBubble(Persone, NumPers);
    for(corrente=0;corrente<NumPers;corrente++){
    Stampa(Persone[corrente]);
    }
    break;

    }
    }while(scelta>0&&scelta<5);

    }

    int MenuScelta(){
    int sc;
    do{
    cout<<"GESTIONE PERSONE"<<endl;
    cout<<"\n";
    cout<<"1 - INSERIMENTO PERSONE"<<endl;
    cout<<"2 - RICERCA"<<endl;
    cout<<"3 - STAMPA"<<endl;
    cout<<"4 - STAMPA ORDINATI PER NASCITA"<<endl;
    cin>>sc;
    }
    while(sc<1||sc>5);
    return sc;
    }

    void Inserimento(TpPersona& persona1, char& ch){
    cout<<"INSERIMENTO PERSONA"<<endl;
    cout<<"Cognome : ";
    cin>>persona1.cognome;
    cout<<"Nome : ";
    cin>>persona1.nome;
    cout<<"Data di nascita GG MM AAAA : ";
    cin>>persona1.nascita.giorno>>persona1.nascita.mes e>>persona1.nascita.anno;
    cout<<"Luogo di nascita : ";
    cin>>persona1.luogo;
    cout<<"Salva(s/n) : ";
    cin>>ch;
    }

    void Stampa(const TpPersona& persona1){
    cout<<"Nome : "<<persona1.nome<<" ";
    cout<<"Cognome : "<<persona1.cognome<<" ";
    cout<<"Luogo di nascita : "<<persona1.luogo<<" ";

    cout<<persona1.nascita.giorno<<"/"<<persona1.nascita.mese<<"/"<<persona1.nascita.anno;
    cout<<endl;
    }

    int Ricerca(char cognome2[], TpPersona Persone[], const int NumPers){
    int i=0;
    bool trovato=false;
    while(i<NumPers&&!trovato){
    if(strcmp(Persone[i].cognome, cognome2)==0){
    trovato=true;
    return i;
    }
    else i++;
    }
    if(!trovato)
    return -1;
    }


    void scambia(TpPersona &x1, TpPersona &x2){
    TpPersona s;
    s=x1;
    x1=x2;
    x2=s;
    }

    double dataNum(Tpdata x){
    return x.anno*10000+x.mese*100+x.giorno;
    }

    void ordinaBubble(TpPersona Persone[], const int NumPers){
    int j,k;
    Tpdata nasc1, nasc2;
    for(k=0;k<NumPers;k++){
    for(j=NumPers-2;j>k;j--){
    nasc1=Persone[j].nascita;
    nasc2=Persone[j+1].nascita;
    if(dataNum(nasc1)>dataNum(nasc2))
    scambia(Persone[j], Persone[j+1]);
    }
    }
    }

  2. #2

    risolto

    grazie ho risolto

    c'era un problema con gli indici
    il primo ciclo doveva terminare a NumPers-1

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    12
    Ciao a tutti. Non riesco a capire perchè non funziona questo programma estremamente facile...Credo ci sia un problema nella stampa finale...

    #include<iostream>
    #include<cstdlib>
    #include <string>
    using namespace std;

    struct Tpersona
    {
    char nome[20];
    char cognome[20];
    int anni;
    } ;

    Tpersona persone[3];
    char cercapersona[20]; //il nome della persona che voglio cercare


    main()
    {
    int i=0;
    bool trovato=false;

    for(int j=0;j<3;j++)
    {
    cout<<"Nome persona: ";
    cin>>persone[i].nome;

    cout<<"Cognome persona: ";
    cin>>persone[i].cognome;

    cout<<"Anni persona: ";
    cin>>persone[i].anni;
    }

    cout<<"Chi vuoi cercare?(nome) ";
    cin>>cercapersona;


    while((i<3) && (!trovato))
    {
    if(strcmp(persone[i].nome, cercapersona)==0)
    trovato=true;

    else
    i++;
    }
    cout<<"Nome: "<<persone[i].nome<<endl;
    cout<<"Pianeta: "<<persone[i].cognome<<endl;
    cout<<"Anni: "<<persone[i].anni<<endl;
    system("pause");

    }

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Metti il codice tra i tag code, altrimenti nessuno lo leggerà mai.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    12
    sorry...hai ragione...
    codice:
    #include<iostream>
    #include<cstdlib>
    #include <string>
    using namespace std;
    
    struct Tpersona
    {
    char nome[20];
    char cognome[20];
    int anni; 
    } ;
    
    Tpersona persone[3];
    char cercapersona[20]; //il nome della persona che voglio cercare
    
    
    main()
    {
    int i=0;
    bool trovato=false;
    
    for(int j=0;j<3;j++)
    {
    cout<<"Nome persona: ";
    cin>>persone[i].nome;
    
    cout<<"Cognome persona: ";
    cin>>persone[i].cognome;
    
    cout<<"Anni persona: ";
    cin>>persone[i].anni; 
    }
    
    cout<<"Chi vuoi cercare?(nome) ";
    cin>>cercapersona;
    
    
    while((i<3) && (!trovato))
    { 
    if(strcmp(persone[i].nome, cercapersona)==0)
    trovato=true;
    
    else
    i++;
    }
    cout<<"Nome: "<<persone[i].nome<<endl;
    cout<<"Pianeta: "<<persone[i].cognome<<endl;
    cout<<"Anni: "<<persone[i].anni<<endl;
    system("pause");
    
    }

  6. #6
    non capisco, perchè non hai aperto un nuovo thread, cosa c'entra con la questione di wgd-developer.

  7. #7
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Infatti, e poi il problema quale sarebbe
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  8. #8
    mi dici cosa dovrebbe fare?

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    Originariamente inviato da mondobimbi
    non capisco, perchè non hai aperto un nuovo thread, cosa c'entra con la questione di wgd-developer.
    Direi nulla. Infatti, suggerisco di aprire una nuova discussione per trattare il proprio problema, senza accodarsi a discussioni di terzi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.