Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
agenda problemi con l' ordinamento
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
GG4Core
Mortale devoto
Mortale devoto


Registrato: 02/07/15 16:11
Messaggi: 11

MessaggioInviato: 03 Lug 2015 16:34    Oggetto: agenda problemi con l' ordinamento Rispondi citando

ciao ragazzi ho creato un agenda elettronica ora nella nella funzione visualizza, prima di visualizzare vorrei ordinare con Selection Sort di minimo i giorni, in modo da stampare gli appuntamenti adeguatamente ho gia provato qualcosina, ma mi produce un loop infinito.

Codice:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<ctype.h>
#define MAX_ORA 23
#define MAX_LUNGHEZZA_STRINGA 50
#define MAX_GIORNI 31
#define MAX_MESE 12
#define MAX_IMPEGNI 5
#define MAX_UTENTE 20
#define MAX_ANNO 2015

struct
{
  char Nome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
  char Cognome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
  int indice[MAX_UTENTE];
  int num_utenti;
  char Password[MAX_UTENTE][MAX_IMPEGNI];
}agenda;

struct
{
   int libero;
   int num_impegni;
   char description[MAX_IMPEGNI][MAX_LUNGHEZZA_STRINGA];
   int ora[MAX_IMPEGNI];
   int mese[MAX_IMPEGNI];
   int giorno[MAX_IMPEGNI];
   int anno[MAX_IMPEGNI];
}utente[MAX_UTENTE]; //facciamo un array di struct per ogni persona

void crea_agenda();
void inizializza();
int controllo_password(char [MAX_IMPEGNI]); // Riferimento per indirizzo del primo elemento dell' array che puo' essere visto come un puntatore
void visualizza();
void disdire();
void aggiorna();

void inizializza()
{
   int i,j;
   agenda.num_utenti=0;
   for(i=0;i<MAX_UTENTE;i++)
   {
      utente[i].libero=1;
      for(j=0;j<MAX_IMPEGNI;j++)
      {
        utente[i].ora[j]=-1;
      }
   }
}
void crea_agenda()
{

   int n_utente=0;
   int loop;
   int i,j;

   printf("Inserisci il numero di utenti da registrare:\t");
   do
   {
      loop=1;
      scanf("%d",&n_utente);
      fflush(stdin);
      if(n_utente+agenda.num_utenti > MAX_UTENTE)
      {
         printf("Non posso gestire tutti questi utenti! Ridefinire numeri di utenti:\a\t");
         loop=0;
      }
   }while(loop==0);

   agenda.num_utenti=agenda.num_utenti+n_utente;


   for(i=agenda.num_utenti-n_utente;i<agenda.num_utenti;i++)
   {
      printf("Inserire il proprio nome:\t");
      scanf("%s",&agenda.Nome[i]);
      printf("Inserire il proprio cognome:\t");
      scanf("%s",&agenda.Cognome[i]);
      do
      {
         printf("Inserire Password di almeno 4 caratteri:\t");
         scanf("%s",&agenda.Password[i]);
      }while(strlen(agenda.Password[i])>=MAX_IMPEGNI || controllo_password(agenda.Password[i])==1);

      do
      {
         agenda.indice[i]=rand()%MAX_UTENTE; //GESTIONE RANDOM DELLA POSIZIONE DEGLI UTENTI
      }while(utente[agenda.indice[i]].libero!=1);

      do
      {
         loop=1;
         printf("Definire il numero di impegni:\t");
         scanf("%d",&utente[agenda.indice[i]].num_impegni);
         fflush(stdin);
         if(utente[agenda.indice[i]].num_impegni > MAX_IMPEGNI)
         {
            printf("Troppi impegni, Rischi di collassare! Ridefinire impegni:\a\t");
            loop=0;
         }
      }while(loop == 0);

      for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
      {
         printf("Definire impegno %d.\n",j+1);
         do
         {
            printf("Inserisci l' ora in cui vuoi inserire l' impegno:\t");
            scanf("%d",&utente[agenda.indice[i]].ora[j]);
             fflush(stdin);
         }while(utente[agenda.indice[i]].ora[j] > MAX_ORA || utente[agenda.indice[i]].ora[j] < 0);
         do
         {
            printf("\nInserisci il giorno in cui vuoi inserire l' impegno:\t");
            scanf("%d",&utente[agenda.indice[i]].giorno[j]);
             fflush(stdin);
         }while((utente[agenda.indice[i]].giorno[j] > MAX_GIORNI) || (utente[agenda.indice[i]].giorno[j] <= 0));

         do
         {
            printf("\nInserisci l' anno in cui vuoi inserire l' impegno:\t");
            scanf("%d",&utente[agenda.indice[i]].anno[j]);
             fflush(stdin);
         }while(utente[agenda.indice[i]].anno[j] < MAX_ANNO);

         do
         {
            printf("\nInserisci il mese in cui vuoi inserire l' impegno:\t");
            scanf("%d",&utente[agenda.indice[i]].mese[j]);
            fflush(stdin);
         }while(utente[agenda.indice[i]].mese[j] > MAX_MESE || utente[agenda.indice[i]].mese[j] <= 0);

         printf("\nInserisci la descrizione del tuo impegno %d:\t",j+1);
         scanf("%s",&utente[agenda.indice[i]].description[j]);
         system("cls");
      }
   }
}
int controllo_password( char buffer[MAX_IMPEGNI]) //Passaimo il primo indirizzo dell' array mia_password
{
   int i;
   int count=0;
   for(i=0;i < agenda.num_utenti ;i++ )
   {
      if(!strcmp(buffer,agenda.Password[i]))
      {
         count++;
         if(count>1)
         {
            return 1;
         }
      }
   }
   return 0;
}
void visualizza()
{
   char mia_password[MAX_IMPEGNI];
   int i;

   printf("Inserire Password:\t");
   scanf("%s",&mia_password);
   for(i=0;i<agenda.num_utenti;i++)
   {
      if(!strcmp(mia_password,agenda.Password[i]))
      {
         int mia_ora,j,mio_mese,mio_giorno;
         printf("Inserci l' ora degli appuntamenti :\t");
         scanf("%d",&mia_ora);
         printf("Inserisci il mese dove cercare:\t");
         scanf("%d",&mio_mese);
         int count=0;
           
       //Selection Sort e stampa
          do{
            j=0;
            if((mia_ora==utente[agenda.indice[i]].ora[j]) && (mio_mese==utente[agenda.indice[i]].mese[j]))
            {
               int k;
               mio_giorno=utente[agenda.indice[i]].giorno[j];
               for(k=j+1;k<MAX_GIORNI;k++)
               {
                     if(utente[agenda.indice[i]].giorno[k] < mio_giorno)
                     {
                        mio_giorno=utente[agenda.indice[i]].giorno[k];
                        utente[agenda.indice[i]].giorno[k]=mio_giorno=utente[agenda.indice[i]].giorno[j];
                        mio_giorno=utente[agenda.indice[i]].giorno[j]=mio_giorno;
               }
            }
               printf("Gli appuntamenti del mese %d del giorno %d dell ora %d sono :\n",mio_mese,mio_giorno,mia_ora);
               printf("Impegno %d Descrizione: %s\n",j+1,utente[agenda.indice[i]].description[j]);
               count++;
            }
            j++;
         }while(count<utente[agenda.indice[i]].num_impegni || j < MAX_GIORNI );
         break;
      }
   }
}

void disdire()
{
   char mia_password[MAX_IMPEGNI];
   int i;
   printf("Inserire Password:\t");
   scanf("%s",&mia_password);
   for(i=0;i<agenda.num_utenti;i++)
   {
      if(!strcmp(mia_password,agenda.Password[i]))
      {
         int mia_ora,j,mio_mese,mio_giorno,mio_anno;
         printf("Inserci l' ora dell' appuntamento da disdire :\t");
         scanf("%d",&mia_ora);
         printf("Inserire il giorno dell' appuntamento da disdire:\t");
         scanf("%d",&mio_giorno);
         printf("Inserisci il mese dove cercare:\t");
         scanf("%d",&mio_mese);
         printf("Inserisci l' anno:\t");
         scanf("%d",&mio_anno);
         for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
         {
            if(mia_ora==utente[agenda.indice[i]].ora[j] && mio_mese==utente[agenda.indice[i]].mese[j] && mio_anno==utente[agenda.indice[i]].anno[j] && mio_giorno==utente[agenda.indice[i]].giorno[j])
            {
               strcpy(utente[agenda.indice[i]].description[j],"DELETED");
               printf("\n");
               utente[agenda.indice[i]].ora[j]=utente[agenda.indice[i]].mese[j]=-1;
               utente[agenda.indice[i]].num_impegni--;
               printf("%s",utente[agenda.indice[i]].description[j]);
               break;
            }
         }
      break;
      }
   }
}

void aggiorna()
{

   int i,j;
   char mia_password[MAX_IMPEGNI];
   printf("Inserire Password:\t");
   scanf("%s",&mia_password);
   for(i=0;i<agenda.num_utenti;i++)
   {
      if(!strcmp(mia_password,agenda.Password[i]))
      {
         for(j=0;j<MAX_IMPEGNI;j++)
         {
           if(utente[agenda.indice[i]].ora[j]==-1)
           {
            printf("Definire impegno\n");
            do
            {
               printf("Inserisci l' ora in cui vuoi inserire l' impegno:\t");
               scanf("%d",&utente[agenda.indice[i]].ora[j]);
               fflush(stdin);
            }while(utente[agenda.indice[i]].ora[j] > MAX_ORA || utente[agenda.indice[i]].ora[j] < 0);
            do
            {
               printf("\nInserisci il giorno in cui vuoi inserire l' impegno:\t");
               scanf("%d",&utente[agenda.indice[i]].giorno[j]);
                fflush(stdin);
            }while((utente[agenda.indice[i]].giorno[j] > MAX_GIORNI) || (utente[agenda.indice[i]].giorno[j] <= 0));

            do
            {
               printf("\nInserisci l' anno in cui vuoi inserire l' impegno:\t");
               scanf("%d",&utente[agenda.indice[i]].anno[j]);
               fflush(stdin);
             
            }while(utente[agenda.indice[i]].anno[j] < MAX_ANNO);

            do
            {
               printf("\nInserisci il mese in cui vuoi inserire l' impegno:\t");
               scanf("%d",&utente[agenda.indice[i]].mese[j]);
                fflush(stdin);
            }while(utente[agenda.indice[i]].mese[j] > MAX_MESE || utente[agenda.indice[i]].mese[j] <= 0);

            printf("\nInserisci la descrizione del tuo impegno:\t");
            scanf("%s",&utente[agenda.indice[i]].description[j]);
            utente[agenda.indice[i]].num_impegni++;
            break;
           }
         }
        break;
      }
   }
}

int main()
{
   srand(time(NULL));
   char cosa_fare;
   int flag=0;
   inizializza();
   crea_agenda();
   while(flag==0)
   {

      printf("***********************************************\n");
      printf("* Benvenuto/a nella proria agenda elettronica *\n");
      printf("***********************************************\n");
      printf("Digitare la propria scelta\n");
      printf("'V' per Visualizzare un appuntamento\n");
      printf("'I' per Inserire un appuntamento\n");
      printf("'D' per Disdire un appuntamento\n");
      printf("'S' per Uscire dall'agenda elettronica\n");
      printf("Inserire la propria scelta:\t");

       cosa_fare= getchar();//Uso la funzione getchar per inserire i caratteri per la scelta dell'operazione da eseguire
       fflush(stdin);
       system("cls");
       if(cosa_fare == 'v' || cosa_fare == 'V')   //Utilizzo il costrutto di controllo if per gestire i vari casi di inseriemnto da parte dell' utente
       {
          visualizza();
       }
       if(cosa_fare == 'i' || cosa_fare == 'I')
       {
          aggiorna();
       }
       if(cosa_fare == 'D' || cosa_fare == 'd')
       {
          disdire();
       }
       if(cosa_fare == 'S' || cosa_fare == 's')
       {
           printf("Ciao e' stato un piacere esserti stato utile\n");
           flag=1;
       }
   system("pause");
   }
     return 0;
}
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11559
Residenza: Tokelau

MessaggioInviato: 06 Lug 2015 10:37    Oggetto: Rispondi citando

se esegui il programma in un debugger, puoi seguire l'esecuzione del programma riga per riga e, visualizzando il valore che le variabili assumono dopo ogni istruzione, verificare che stia facendo ciò che ti aspetti.
Altrimenti, se non hai un debugger, metti delle printf dentro il tuo ciclo for interno e con la printf stampi il valore delle variabili (il debugger del povero Wink ) e poi dopo ci ragioni e vedi dove non quadra.
Top
Profilo Invia messaggio privato HomePage
GG4Core
Mortale devoto
Mortale devoto


Registrato: 02/07/15 16:11
Messaggi: 11

MessaggioInviato: 06 Lug 2015 11:41    Oggetto: Rispondi citando

ok ti dirò che ho già fatto in una versione di prova fatto supponiamo di inserire come primo giorno 8 per il mese 8 e l' ora 8,
poi richiamo inserisci, e supponiamo di inserire il giorno 7 per il mese 8 e l' ora 8
e poi richiamo ancora inserisci, e supponiamo di inserire il giorno 10, per il mese 8 e l' ora 8,
il valore contenuto in utente[agenda.indice[i]].giorno[j] , in utente[agenda.indice[i]].giorno[k]
e mio_giorno è 8, e non cambia, quindi quel va in loop
Top
Profilo Invia messaggio privato
GG4Core
Mortale devoto
Mortale devoto


Registrato: 02/07/15 16:11
Messaggi: 11

MessaggioInviato: 06 Lug 2015 15:57    Oggetto: Rispondi citando

per capirci meglio ecco cosa vorrei fare
Codice:

void visualizza()
{
   char mia_password[MAX_IMPEGNI];
   int i,j;

   printf("Inserire Password:\t");
   scanf("%s",&mia_password);
   for(i=0;i<agenda.num_utenti;i++)
   {
      if(!strcmp(mia_password,agenda.Password[i]))
      {
         int mia_ora,mio_mese,mio_giorno;
         printf("Inserci l' ora degli appuntamenti :\t");
         scanf("%d",&mia_ora);
         printf("Inserisci il mese dove cercare:\t");
         scanf("%d",&mio_mese);
         int count=0;
           
           //Selection Sort of min
          selection_sort(i);
           j=0; //prima era nel do e giustamente creava un loop infinito
           do{
               
               if((mia_ora==utente[agenda.indice[i]].ora[j]) && (mio_mese==utente[agenda.indice[i]].mese[j]))
               {
                     mio_giorno=utente[agenda.indice[i]].giorno[j];
                     printf("Gli appuntamenti del mese %d del giorno %d dell ora %d sono :\n",mio_mese,mio_giorno,mia_ora);
                     printf("Impegno %d Descrizione: %s\n",j+1,utente[agenda.indice[i]].description[j]);
                     count++;
               }
               j++;
         break;
            }while(count < utente[agenda.indice[i]].num_impegni || j < MAX_GIORNI );
      }
   }
}


Codice:

void selection_sort(int i)
{
   int k,j;
   int mio_giorno;
    for(j=0;j<MAX_GIORNI;j++)
    {
        mio_giorno=utente[agenda.indice[i]].giorno[j];
        for(k=j+1;k<MAX_GIORNI;k++)
        {
             if(utente[agenda.indice[i]].giorno[k] < mio_giorno)
         {
            mio_giorno=utente[agenda.indice[i]].giorno[k];
            utente[agenda.indice[i]].giorno[j]=utente[agenda.indice[i]].giorno[k];
            utente[agenda.indice[i]].giorno[j]=mio_giorno;
         }   
      }
   }
   
}

Ora dopo aver risolto il loop dando all' inizio un appuntamento in crea_agenda e due appntamenti in aggiorna, mi stampa un unico appuntmento dove mio_giorno assume valore 0 come valore
Top
Profilo Invia messaggio privato
GG4Core
Mortale devoto
Mortale devoto


Registrato: 02/07/15 16:11
Messaggi: 11

MessaggioInviato: 06 Lug 2015 16:38    Oggetto: Rispondi citando

come faccio ora?
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11559
Residenza: Tokelau

MessaggioInviato: 07 Lug 2015 09:44    Oggetto: Rispondi citando

non vorrei dire ma... stai ordinando gli impegni sui giorni lasciando le descrizioni degli impegni nelle posizioni dove si trovavano prima?
Top
Profilo Invia messaggio privato HomePage
GG4Core
Mortale devoto
Mortale devoto


Registrato: 02/07/15 16:11
Messaggi: 11

MessaggioInviato: 07 Lug 2015 15:38    Oggetto: Rispondi citando

ciao, finalmente ha ordinato, ma però dopo il primo valore di giorno esatto gli altri li setta a 0, come faccio a risolvere?
Codice:

void visualizza()
{
   char mia_password[MAX_IMPEGNI];
   int i,j;

   printf("Inserire Password:\t");
   scanf("%s",&mia_password);
   for(i=0;i<agenda.num_utenti;i++)
   {
      if(!strcmp(mia_password,agenda.Password[i]))
      {
         int mia_ora,mio_mese,mio_giorno,k;
         printf("Inserci l' ora degli appuntamenti :\t");
         scanf("%d",&mia_ora);
         printf("Inserisci il mese dove cercare:\t");
         scanf("%d",&mio_mese);
         int count=1;
         
       //Selection Sort of min
          j=0;
          do{
               if((mia_ora==utente[agenda.indice[i]].ora[j]) && (mio_mese==utente[agenda.indice[i]].mese[j]))
               {
                     mio_giorno=utente[agenda.indice[i]].giorno[j];
                   mio_giorno=selection_sort(i,mio_giorno);
                   
                     printf("Gli appuntamenti del mese %d del giorno %d dell ora %d sono :\n",mio_mese,mio_giorno,mia_ora);
                     printf("Impegno %d Descrizione: %s\n",count,utente[agenda.indice[i]].description[k]);
               }
               j++;
               count++;
            }while(count < utente[agenda.indice[i]].num_impegni || j < MAX_GIORNI );
      }
   }
}

int selection_sort(int i,int mio_giorno)
{
   int k,j;
    for(j=0;j<MAX_GIORNI;j++)
    {
        mio_giorno=utente[agenda.indice[i]].giorno[j];
        for(k=j+1;k<MAX_GIORNI;k++)
        {
             if(utente[agenda.indice[i]].giorno[k] < mio_giorno)
         {
            mio_giorno=utente[agenda.indice[i]].giorno[k];
            utente[agenda.indice[i]].giorno[j]=utente[agenda.indice[i]].giorno[k];
            return utente[agenda.indice[i]].giorno[j]=mio_giorno;
         }   
      }
    }
   
}

cioè considerando che in input inserisca il giorno 8
e poi successivamente il giorno 4, in output viene stampato,4 e a posto di 8 viene stampato 0
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11559
Residenza: Tokelau

MessaggioInviato: 08 Lug 2015 11:55    Oggetto: Rispondi citando

nella selection_sort(), dentro il ciclo for più interno, hai un if che usa la variabile 'mio_giorno' che setti sia prima di entrare nel ciclo sia dentro il ciclo stesso. Non mi sembra corretto...

Guarda l'implementazione della selection sort qui.
Top
Profilo Invia messaggio privato HomePage
GG4Core
Mortale devoto
Mortale devoto


Registrato: 02/07/15 16:11
Messaggi: 11

MessaggioInviato: 09 Lug 2015 11:55    Oggetto: Rispondi citando

ciao si lo so che ordino i giorno e no la descrizione, ora voglio un atimo ritornare a un problema precedente... perchè se inserisco due appuntamenti poi mi visualizza un terzo dove il giorno è 2015?
Codice:

/*
  Name: Agenda Elettronica
  Copyright: 0124000773
  Author: Giacomo Gargiulo
  Description: Gestione di un agenda elettronica

Si vuole simulare la gestione di un’agenda elettronica contenente appuntamenti.
L’agenda è suddivisa in giorni, per 12 mesi complessivi. Ogni giorno è identificato
da 24 ore. Dato un mese, un giorno e un’ora permettere all’utente di:
• Inserire un appuntamento
• Disdire un appuntamento
Inoltre permettere all’utente di
• Data un’ora visualizzare tutti gli appuntamenti in un mese
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<ctype.h>
#define MAX_ORA 23
#define MAX_LUNGHEZZA_STRINGA 50
#define MAX_GIORNI 31
#define MAX_MESE 12
#define MAX_IMPEGNI 5
#define MAX_UTENTE 20
#define MAX_ANNO 2015

struct
{
  char Nome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
  char Cognome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
  int indice[MAX_UTENTE];
  int num_utenti;
  char Password[MAX_UTENTE][MAX_IMPEGNI];
}agenda;

struct
{
   int libero;
   int num_impegni;
   char description[MAX_IMPEGNI][MAX_LUNGHEZZA_STRINGA];
   int ora[MAX_IMPEGNI];
   int mese[MAX_IMPEGNI];
   int giorno[MAX_IMPEGNI];
   int anno[MAX_IMPEGNI];
}utente[MAX_UTENTE]; //facciamo un array di struct per ogni persona

void crea_agenda();
void inizializza();
int controllo_password(char [MAX_IMPEGNI]); // Riferimento per indirizzo del primo elemento dell' array che puo' essere visto come un puntatore
void visualizza();
void disdire();
void aggiorna();

void inizializza()
{
   int i,j;
   agenda.num_utenti=0;
   for(i=0;i<MAX_UTENTE;i++)
   {
      utente[i].libero=1;
      for(j=0;j<MAX_IMPEGNI;j++)
      {
        utente[i].ora[j]=-1;
      }
   }
}
void crea_agenda()
{

   int n_utente=0;
   int loop;
   int i,j;

   printf("Inserisci il numero di utenti da registrare:\t");
   do
   {
      loop=1;
      scanf("%d",&n_utente);
      fflush(stdin);
      if(n_utente+agenda.num_utenti > MAX_UTENTE)
      {
         printf("Non posso gestire tutti questi utenti! Ridefinire numeri di utenti:\a\t");
         loop=0;
      }
   }while(loop==0);

   agenda.num_utenti=agenda.num_utenti+n_utente;


   for(i=agenda.num_utenti-n_utente;i<agenda.num_utenti;i++)
   {
      printf("Inserire il proprio nome:\t");
      scanf("%s",&agenda.Nome[i]);
      printf("Inserire il proprio cognome:\t");
      scanf("%s",&agenda.Cognome[i]);
      do
      {
         printf("Inserire Password di almeno 4 caratteri:\t");
         scanf("%s",&agenda.Password[i]);
      }while(strlen(agenda.Password[i])>=MAX_IMPEGNI || controllo_password(agenda.Password[i])==1);

      do
      {
         agenda.indice[i]=rand()%MAX_UTENTE; //GESTIONE RANDOM DELLA POSIZIONE DEGLI UTENTI
      }while(utente[agenda.indice[i]].libero!=1);

      do
      {
         loop=1;
         printf("Definire il numero di impegni:\t");
         scanf("%d",&utente[agenda.indice[i]].num_impegni);
         fflush(stdin);
         if(utente[agenda.indice[i]].num_impegni > MAX_IMPEGNI)
         {
            printf("Troppi impegni, Rischi di collassare! Ridefinire impegni:\a\t");
            loop=0;
         }
      }while(loop == 0);

      for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
      {
         printf("Definire impegno %d.\n",j+1);
         do
         {
            printf("Inserisci l' ora in cui vuoi inserire l' impegno:\t");
            scanf("%d",&utente[agenda.indice[i]].ora[j]);
             fflush(stdin);
         }while(utente[agenda.indice[i]].ora[j] > MAX_ORA || utente[agenda.indice[i]].ora[j] < 0);
         do
         {
            printf("\nInserisci il giorno in cui vuoi inserire l' impegno:\t");
            scanf("%d",&utente[agenda.indice[i]].giorno[j]);
             fflush(stdin);
         }while((utente[agenda.indice[i]].giorno[j] > MAX_GIORNI) || (utente[agenda.indice[i]].giorno[j] <= 0));

         do
         {
            printf("\nInserisci l' anno in cui vuoi inserire l' impegno:\t");
            scanf("%d",&utente[agenda.indice[i]].anno[j]);
             fflush(stdin);
         }while(utente[agenda.indice[i]].anno[j] < MAX_ANNO);

         do
         {
            printf("\nInserisci il mese in cui vuoi inserire l' impegno:\t");
            scanf("%d",&utente[agenda.indice[i]].mese[j]);
            fflush(stdin);
         }while(utente[agenda.indice[i]].mese[j] > MAX_MESE || utente[agenda.indice[i]].mese[j] <= 0);

         printf("\nInserisci la descrizione del tuo impegno %d:\t",j+1);
         scanf("%s",&utente[agenda.indice[i]].description[j]);
         system("cls");
      }
   }
}
int controllo_password( char buffer[MAX_IMPEGNI]) //Passaimo il primo indirizzo dell' array mia_password
{
   int i;
   int count=0;
   for(i=0;i < agenda.num_utenti ;i++ )
   {
      if(!strcmp(buffer,agenda.Password[i]))
      {
         count++;
         if(count>1)
         {
            return 1;
         }
      }
   }
   return 0;
}
void visualizza()
{
   char mia_password[MAX_IMPEGNI];
   int i;

   printf("Inserire Password:\t");
   scanf("%s",&mia_password);
   for(i=0;i<agenda.num_utenti;i++)
   {
      if(!strcmp(mia_password,agenda.Password[i]))
      {
         int mia_ora,j,mio_mese;
         do
         {
          printf("Inserci l' ora degli appuntamenti :\t");
            scanf("%d",&mia_ora);
            printf("Inserisci il mese dove cercare:\t");
            scanf("%d",&mio_mese);
         }while(mia_ora < 0 && mia_ora > MAX_ORA && mio_mese < 0 && mio_mese > MAX_MESE);
         int count=1;
            
       j=0;
         do{
            if((mia_ora==utente[agenda.indice[i]].ora[j]) && (mio_mese==utente[agenda.indice[i]].mese[j]))
            {
               printf("Gli appuntamenti del mese %d del giorno %d dell ora %d sono :\n",mio_mese,utente[agenda.indice[i]].giorno[j],mia_ora);
               printf("Impegno %d Descrizione: %s\n",count,utente[agenda.indice[i]].description[j]);
               count++;
            }
            j++;
         }while(count<=utente[agenda.indice[i]].num_impegni || j < MAX_GIORNI );
         break;
      }
   }
}
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11559
Residenza: Tokelau

MessaggioInviato: 10 Lug 2015 09:43    Oggetto: Rispondi

se inserisci due appuntamenti e dopo l'ordinamento ne trovi 3, allora il tuo ordinamento ha un serio problema... Confused
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi