Oppure

Loading
24/02/16 18:21
redi


#include <stdio.h>
#define MAXUTENTI 10
typedef struct
{
char prefisso[5];
int numero;
}phone;
typedef struct
{
char nome[20];
char cognome[20];
phone telefono;
}utente;
typedef enum
{false,true} Boolean;
main()
{
utente UTENTI[MAXUTENTI];
char nome[20],cognome[20],prefisso[5];
int inseriti,a,i,j,numero;
Boolean fine,trovato;
char scelta,c;
inseriti=0;
fine=false;
while
(inseriti<MAXUTENTI && !fine){
printf("Vuoi inserire un utente?");
scelta=getchar();
c=getchar();
if (scelta==10 || scelta==20){
printf("Inserisci il nome:");
gets(UTENTI[inseriti].nome);
printf("Inserisci il cognome:");
gets(UTENTI[inseriti].cognome);


printf("Inserisci il numero:");
scanf("%s",UTENTI[inseriti].telefono.numero);
inseriti++;
c=getchar();
}
else
 fine=true;
}
fine=false;
do
{
printf("\n");
printf("QUALE SCELTA VUOI EFFETTUARE NELLA RUBRICA?\n");
printf("1: inserisci nominativo\n");
printf("2: ricerca\n");
printf("3: uscita\n");
scanf("%d",&a);
c=getchar();
switch
(op){

case(2):
/* ricerca */
printf("Inserisci il dati della persona da ricercare: \n");
printf("Nome:");
gets(nome);
printf("Cognome:");
gets(cognome);
i=0;
trovato=false;
while
(i<inseriti && !trovato){
if
(strcmp(UTENTI[i].nome,nome)==0 && strcmp(UTENTI[i].cognome,cognome)==0){
trovato=true;
printf("Il numero di telefono e‘: (%s) %d\n",UTENTI[i].telefono.numero);
}
i++;
}
if
(!trovato)
printf("L’utente ricercato non appartiene all’archivio!\n");
break;
case(1):
/* inserimento */
if
(inseriti<MAXUTENTI){
printf("Inserisci il nominativo dell'utente: \n");
printf("Nome:");
gets(UTENTI[inseriti].nome);
printf("Cognome:");
gets(UTENTI[inseriti].cognome);
printf("Numero di telefono:\n");
scanf("%d",&UTENTI[inseriti].telefono.numero);
inseriti++;
}
else
 printf("Non e' presente piu' spazio per inserire nuovi nominativi.\n");
break;
case
(3):
/* uscita */
fine=true;
break;
default: printf("ESCI!");
}
}
while(!fine);
}
 

cosa ne pensate?
aaa
24/02/16 18:24
redi
#include <stdio.h>
#define MAXUTENTI 10
typedef struct
{
char prefisso[5];
int numero;
}phone;
typedef struct
{
char nome[20];
char cognome[20];
phone telefono;
}utente;
typedef enum
{false,true} operazioni logiche;
main()
{
utente UTENTI[MAXUTENTI];
char nome[20],cognome[20],prefisso[5];
int inseriti,a,i,j,numero;
operazioni logiche fine,trovato;
char scelta,c;
inseriti=0;
fine=false;
while
(inseriti<MAXUTENTI && !fine){
printf("Vuoi inserire un utente?");
scelta=getchar();
c=getchar();
if (scelta==10 || scelta==20){
printf("Inserisci il nome:");
gets(UTENTI[inseriti].nome);
printf("Inserisci il cognome:");
gets(UTENTI[inseriti].cognome);


printf("Inserisci il numero:");
scanf("%s",UTENTI[inseriti].telefono.numero);
inseriti++;
c=getchar();
}
else
 fine=true;
}
fine=false;
do
{
printf("\n");
printf("QUALE SCELTA VUOI EFFETTUARE NELLA RUBRICA?\n");
printf("1: inserisci nominativo\n");
printf("2: ricerca\n");
printf("3: uscita\n");
scanf("%d",&a);
c=getchar();
switch
(op){

case(2):
/* ricerca */
printf("Inserisci il dati della persona da ricercare: \n");
printf("Nome:");
gets(nome);
printf("Cognome:");
gets(cognome);
i=0;
trovato=false;
while
(i<inseriti && !trovato){
if
(strcmp(UTENTI[i].nome,nome)==0 && strcmp(UTENTI[i].cognome,cognome)==0){
trovato=true;
printf("Il numero di telefono e‘: (%s) %d\n",UTENTI[i].telefono.numero);
}
i++;
}
if
(!trovato)
printf("L’utente ricercato non appartiene all’archivio!\n");
break;
case(1):
/* inserimento */
if
(inseriti<MAXUTENTI){
printf("Inserisci il nominativo dell'utente: \n");
printf("Nome:");
gets(UTENTI[inseriti].nome);
printf("Cognome:");
gets(UTENTI[inseriti].cognome);
printf("Numero di telefono:\n");
scanf("%d",&UTENTI[inseriti].telefono.numero);
inseriti++;
}
else
 printf("Non e' presente piu' spazio per inserire nuovi nominativi.\n");
break;
case
(3):
/* uscita */
fine=true;
break;
default: printf("ESCI!");
}
}
while(!fine);
}
 

cosa ne pensate?
aaa
24/02/16 19:03
TheDarkJuster
Non voglio leggere quel codice. La formattazione del codice sorgente E' UN OBBLIGO in tutte le discussioni pubbliche. NESSUNO leggerà MAI il tuo codice sorgente senza averlo prima formattato.

L'algoritmo è semplice:
più è profondo il livello più TAB devi premere prima della riga di codice.

es.

0 tab
{
    1 tab
    {
        2 tab
        {
             3 tab

             ecc.....
        }
    }
}


Non volermene, non è cattiveria, è che non mi va di affaticarmi e perdere molto tempo per negligenza altrui, e nessun altro membro della community lo farà.

Una delle prime cose che noto è:
scelta=getchar();
c=getchar();
if (scelta==10 || scelta==20)


ascii-code.com/ come dovrei fare a inserire un "Device Control 4" in input dalla console?
perchè leggi c? Perchè lo leggi alle righe 29 e 40 quando lo lasci inutilizzato? Perchè non hai diviso il codice in funzioni attenendoti alle regole di buona programmazione?

scelta=getchar();
c=getchar();
if (scelta==10 || scelta==20){
printf("Inserisci il nome:");
gets(UTENTI[inseriti].nome);
printf("Inserisci il cognome:");
gets(UTENTI[inseriti].cognome);


printf("Vuoi inserire un utente?";)

se rispondo ok, si, no, bo, cc, ff, Ye, Ja, ecc.... otterrei sempre lo stesso risultato: Ho richiesto di NON inserire altri utenti. Inconcepibile.

Tra l'altro siccome non hai spezzato il codice in più funzioni ti ritrovi a dover copiare e incollare pezzi di programma tali e quali, riducendo la leggibilità del programma a niente e occupando spazio inutilmente.

Questo evidentemente non è il modo giusto di scrivere un programma.

Tra l'altro dubito quel codice possa funzionare, ma sono sicuro che non funzionerà come vuoi.

aaa