Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problemino Rubrica
Forum - C/C++ - Problemino Rubrica

Avatar
Mahat89 (Normal User)
Newbie


Messaggi: 4
Iscritto: 13/11/2009

Segnala al moderatore
Postato alle 16:48
Lunedì, 30/11/2009
Ciao a tutti, devo creare una rubrica molto semplice in C (nel senso che non deve usare puntatori o i files). E' finita, il compilatore (dev c++) compila senza errori o warning, ma quando la lancio e scelgo di aggiungere un contatto mi si chiude e mi appare la segnalazione errori di windows. La funzione visualizza contatti pare funzionare ( anche se non posso testare piu' di tanto visto che non posso aggiungere i contatti )
Premetto che è finita, ma non completa, cioè dovrebbe funzionare ma devo ancora migliorare gli spazi, gli " a capo", alcune condizioni di uscita...però prima di passare a questi "dettagli" volevo vedere almeno qualche risultato... se poteste darci un'occhiata ne sarei molto felice...ripeto, è molto semplice, alla fine usa solo funzioni/procedure e cicli, nient'altro..:yup:
ecco il link http://mahat.altervista.org/rubrica.c

PM Quote
Avatar
giuseppe93 (Ex-Member)
Pro


Messaggi: 166
Iscritto: 02/08/2009

Segnala al moderatore
Postato alle 20:09
Lunedì, 30/11/2009
Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. const int MaxContatti=100;
  5.  
  6. /*definisco dei vettori di caratteri che serviranno per inserire il nome e il cognome nella struct*/
  7. typedef char strin15[16];
  8. typedef char strin10[11];
  9.  
  10.  
  11. typedef struct TContatto
  12. {
  13.         strin15 Nome;
  14.         strin15 Cognome;
  15.         strin10 Telefono;
  16. } Tcontatto;
  17.  
  18. /*defifinizione di un vettore di struct*/
  19. typedef TContatto VettoreContatti[MaxContatti];
  20.  
  21. /*definizione dei prototipi delle procedure*/
  22. void Inizializza(int i,VettoreContatti Rubrica);
  23. void VisualizzaRubrica(int i, VettoreContatti Rubrica);
  24. void AggiungiContatto(int i, char scelta, VettoreContatti Rubrica);
  25. void RimuoviContatto(int i, VettoreContatti Rubrica);
  26.  
  27. /*programma principale*/
  28. int main()
  29. {
  30.      VettoreContatti Rubrica; /* variabile per accedere all'array di struct */
  31.      int i,scelta;
  32.           Inizializza(i, Rubrica); /* Pulisce i campi " nome, cognome telefono " */
  33.           printf (" #######################\n");
  34.           printf (" #        RUBRICA      #\n");
  35.           printf (" #######################\n\n");
  36.           printf (" 0) ESCI\n\n");
  37.           printf (" 1) VISUALIZZA RUBRICA\n\n");
  38.           printf (" 2) AGGIUNGI CONTATTO\n\n");
  39.           printf (" 3) RIMUOVI CONTATTO\n\n");
  40.          
  41.           printf (" la tua scelta > ");
  42.           scanf ("%d", &scelta);
  43.                    
  44.                  if (scelta==0)
  45.                  {
  46.                          return 0;
  47.                          }
  48.                  
  49.                  else if (scelta==1)
  50.                  {
  51.                       VisualizzaRubrica(i, Rubrica);
  52.                       }
  53.                  else if (scelta==2)
  54.                  {
  55.                       AggiungiContatto(i,scelta,Rubrica);
  56.                      
  57.                       }
  58.                  else if (scelta==3)
  59.                  {
  60.                       RimuoviContatto(i,Rubrica);
  61.                       }
  62.                        
  63. }
  64. /*pulisce Nome, Cognome e Telefono*/                
  65. void Inizializza(int i, VettoreContatti Rubrica)
  66. {
  67.      
  68.      for(i=0; i<MaxContatti; i++)
  69.      {
  70.               strcpy(Rubrica[i].Nome," ");
  71.               strcpy(Rubrica[i].Cognome," ");
  72.               strcpy(Rubrica[i].Telefono," ");
  73.      }
  74. };
  75.  
  76.  
  77. /*Stampa a video i contatti*/
  78. void VisualizzaRubrica(int i, VettoreContatti Rubrica)
  79. {
  80.    for(i=0; i<MaxContatti;i++)
  81.     {
  82.             printf("Dati del %d utente: \n",i+1);
  83.             printf("Nome: %s\n", Rubrica[i].Nome);
  84.             printf("Cognome: %s\n", Rubrica[i].Cognome);
  85.             printf("Telefono: %s\n", Rubrica[i].Telefono);
  86.     system("PAUSE");
  87.     }
  88.  }  
  89.  
  90. /*Inserisce contatto (nome,cognome,telefono  nella struttura*/
  91. void AggiungiContatto(int i, char scelta, VettoreContatti Rubrica)
  92. {
  93.        
  94.       do {
  95.             printf("inserisci il nome: ");
  96.             gets(Rubrica[i].Nome);
  97.             printf("Inserisci il cognome: ");
  98.             gets(Rubrica[i].Cognome);
  99.             printf("Inserisci il numero di telefono");
  100.             scanf("%sRubrica.Telefono");
  101.             i++;
  102.            
  103.          
  104.           }while (i<MaxContatti);
  105.  
  106. }
  107.  
  108. /*Dati nome e cognome trova il contatto e lo cancella, lasciando lo "spazio" */
  109. void RimuoviContatto(int i,  VettoreContatti Rubrica)
  110. {
  111.      char nome[16],cognome[16];
  112.      bool trovato=false;
  113.      for (i=0;i<MaxContatti;i++)
  114.      {
  115.      if ((Rubrica[i].Nome == nome) && (Rubrica[i].Cognome == cognome))
  116.      {
  117.               strcpy(Rubrica[i].Nome," ");
  118.               strcpy(Rubrica[i].Cognome," ");
  119.               strcpy(Rubrica[i].Telefono," ");
  120.           trovato=true;
  121.               }
  122.      else if (!trovato)
  123.      {
  124.           printf("Il contatto non esiste");
  125.           }
  126.      }
  127. }




non capisco che valore passi per i in ogni funzione dal momento che i non è inizializzata:noway:

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:36
Lunedì, 30/11/2009

eh si perchè tu puoi comparare le stringhe in quel modo...


PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 22:18
Lunedì, 30/11/2009
proprio come dice hedo non puoi comparare le stringhe come faresti per int o char.
devi usare strcmp(rubrica.nome, nome).
Se la funzione restituisce 0 allora le due stringhe sono uguali :k:

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 23:11
Lunedì, 30/11/2009
Testo quotato

Postato originariamente da Mahat89:

Codice sorgente - presumibilmente C/C++

  1. typedef struct TContatto
  2. {
  3.         strin15 Nome;
  4.         strin15 Cognome;
  5.         strin10 Telefono;
  6. } Tcontatto;
  7.  
  8. /*defifinizione di un vettore di struct*/
  9. typedef TContatto VettoreContatti[MaxContatti];




Mi chiedo come faccia a funzionarti sto pezzo di codice.


Codice sorgente - presumibilmente C/C++

  1. typedef struct
  2. {
  3.         strin15 Nome;
  4.         strin15 Cognome;
  5.         strin10 Telefono;
  6. } Tcontatto;
  7.  
  8. /*defifinizione di un vettore di struct*/
  9. TContatto VettoreContatti[MaxContatti];


Lo sistemerei in così al massimo.

Ultima modifica effettuata da Lawliet il 30/11/2009 alle 23:17
PM Quote