Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema programma gestione schedine
Forum - C/C++ - problema programma gestione schedine

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 18:43
Mercoledì, 15/04/2009
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;

struct Totocalcio
{
    char codice[20];
    char giorno[20];
    char mese[20];
    char anno[20];
    char locali[20];
    char ospiti[20];
    char risultato[20];
}giocate[1000],appoggio[1000],finale[52];

void main()
{
    int scelta,I=0,count=0;
    char anno[5],mese[10];
    do
    {
    cout<<"Questo programma serve per la gestione delle schedine del totocalcio"<<endl;
    cout<<"1-Gioca schedina del totocalcio"<<endl<<"2-Ricerca schedina(per anno e per mese)"<<endl<<"3-Esci"<<endl;
    cin>>scelta;
    switch (scelta)
    {
    case (1):
        cout<<"Inserisci il codice della scheda"<<endl;
        cin>>appoggio[0].codice;
        cout<<"Inserisci il giorno"<<endl;
        cin>>appoggio[0].giorno;
        cout<<"Inserisci il mese"<<endl;
        cin>>appoggio[0].mese;
        cout<<"Inserisci l'anno"<<endl;
        cin>>appoggio[0].anno;
        for (I=0;I<13;I++)
        {
            strcpy_s(giocate[I].codice,appoggio[0].codice);
            strcpy_s(giocate[I].giorno,appoggio[0].giorno);
            strcpy_s(giocate[I].mese,appoggio[0].mese);
            strcpy_s(giocate[I].anno,appoggio[0].anno);
            cout<<"Inserisci il nome della squadra che gioca in casa"<<endl;
            cin>>giocate[I].locali;
            cout<<"Inserisci il nome della squadra ospite"<<endl;
            cin>>giocate[I].ospiti;
            do
              {
                  cout<<"inserire il risultato[1,X,2]  "<<endl;
                  cin>>giocate[I].risultato;
              }
            while( (strcmp(giocate[I].risultato,"x")!=0) && (strcmp(giocate[I].risultato,"1")!=0) && (strcmp(giocate[I].risultato,"2")!=0) );
            cin.ignore();
            
        }
        count=count+1;
        break;
    
    case (2):
        cout<<"Inserisci l'anno delle schedine che vuoi cercare"<<endl;
        cin>>anno;
        cout<<"Inserisci il mese delle schedine che vuoi cercare"<<endl;
        cin>>mese;
        for (I=0;I<count*13;I++)
        {
            if (strcmp(giocate[I].anno,anno)==0 && strcmp(giocate[I].mese,mese)==0)
            {
                strcpy_s(finale[I].codice,giocate[I].codice);
                strcpy_s(finale[I].giorno,giocate[I].giorno);
                strcpy_s(finale[I].mese,giocate[I].mese);
                strcpy_s(finale[I].anno,giocate[I].anno);
                strcpy_s(finale[I].locali,giocate[I].locali);
                strcpy_s(finale[I].ospiti,giocate[I].ospiti);
                strcpy_s(finale[I].risultato,giocate[I].risultato);
            }
        }
        break;

    case (3):
        break;
    default:
        cout<<"Attenzione.E' stato inserito un numero non valido."<<endl;
    }
}while(scelta!=3);
    system("pause");
}



il programma riscontra uin problema nella ricerca perchè se metto o meglio inserisco tre schedine ne trova solo una e le altre se le cerco successivamente sono come scomparse.Perchè uff come posso fare a modificarlo????????:noway:


matteog
PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 10:47
Giovedì, 16/04/2009
Testo quotato

Postato originariamente da matteog:

[...]

il programma riscontra uin problema nella ricerca perchè se metto o meglio inserisco tre schedine ne trova solo una e le altre se le cerco successivamente sono come scomparse.Perchè uff come posso fare a modificarlo????????:noway:



Il problema e' che ogni volta l'inserimanto lo fai a partire dalla posizione 0.
Prova a fare cosi', nel ciclo dell'inserimento fai:

Codice sorgente - presumibilmente C/C++

  1. [...]
  2.  
  3. int J = Count * 13;
  4. for (I = 0; I < 13; I++)
  5. [...]
  6.      giocate[J + I].codice
  7. [...]



Per la ricerca poi, si puo' ottimizzare cosi':

Codice sorgente - presumibilmente C/C++

  1. [...]
  2.  
  3. for (J = 0; J < count * 13; J += 13)
  4.     {
  5.      if ((strcmp(giocate[J].anno,anno) == 0) && (strcmp(giocate[J].mese,mese) == 0))
  6.         {
  7.          for (I = 0; I < 13; I++)
  8.              {
  9.               [...]
  10.               strcpy_s(finale[J + I]
  11.               [...]
  12.              }
  13.         }
  14.  
  15. [...]


Ultima modifica effettuata da gigisoft il 16/04/2009 alle 10:49


Le cose si fanno per bene o non si fanno affatto
PM Quote