Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C]Menu' in c

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    24

    [C]Menu' in c

    Buona domenica a tutti volevo chiarirmi un piccolo dubbio riguardante i menù.

    In genere io il menù in un file c, per le conoscenze attuali, sono abituato a vederlo con un do{}while(), per essere più chiari :

    codice:
    int scl;
    do{
        printf("\n1)Scelta x\n");
        printf("2)Scelta y\n");
        printf("3)Scelta z\n");
        printf("0)Esci");
        scanf("%d" ,&scl)
        if(scl < 0 || scl > 3)
            printf("Errore hai inserito un valore invalido");
    
        switch(scl)
        {
            case 1:
                 break;
            case 2:
                 break;
             case 3:
                 break;
         }
    
    }while( scl != 0);
    oggi, ho visto questo tipo di codice:

    codice:
    main(){
          struct contatto dati[100];
          int numero_dati = 0;
          for (;;) {
              char scelta;
              printf("0- Fine\n");
              printf("1- Nuovo Inserimento\n");
              printf("2- Stampa\n");
              printf("3- Ordinamento\n");
              printf("4- Scrivi rubrica su file\n");
              printf("5- Leggi rubrica da file\n");
              printf("Scelta:");
              scanf("%c",&scelta);
              if (scelta == '0') 
    
              break;
              else if (scelta == '1') {
                 struct contatto nuovo_dato;
                 printf("--------------\n");
                 printf("Cognome:");
                 scanf("%s", nuovo_dato.cognome);
                 printf("Nome:");
                 scanf("%s", nuovo_dato.nome);
                 printf("Anno di nascita:");
                 scanf("%d", &nuovo_dato.anno_nascita);
                 if (inserimento(dati,numero_dati,nuovo_dato) == 1)
                    numero_dati++;
                 else
                     printf("Inserimento non possibile, cognome gia' presente\n");
              }
              else if (scelta == '2') {
                 stampa(dati, numero_dati);             break;

    sono praticamente uguali o il secondo formato è più indicato del primo?

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,
    secondo me sono equivalenti: si tratta sempre di un ciclo con presentazione delle opzioni, lettura della scelta dell'utente e conseguente reazione, cioè un classico menu! Addirittura io preferirei il tuo perché mi sembra che esca dal menu (e quindi dal programma) in modo più "naturale", al momento in cui la variabile di scelta assume il valore 0. Invece il secondo codice ha un ciclo infinito che viene forzatamente interrotto quando l'utente sceglie di uscire.
    Comunque mi sembrano dettagli.


  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Sicuramente è più leggibile il primo, a patto che nei case venga richiamata una funzione e non ci sia tutto il codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da legeo88 Visualizza il messaggio
    for ( ; ; )
    hnnnnng.jpg





    Solo perché il linguaggio permette certe porcherie non vuol dire che si debbano usare per forza
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    24
    Eh ma infatti per questo ho chiesto a voi, anche io sono rimasto un attimo dubbioso.

    per le funzioni: decisamente! Senza quelle un programma lunghetto sarebbe troppo caotico .

    comunque ho trovato quest'esempio sia su una rubrica uppata(mi pare) qui da voi su html.it, e su un file di *rullo di tamburi* un professore universitario ...per questo ero dubbioso

    ovviamente grazie mille per le delucidazioni

  6. #6
    for ( ; ; )
    codice:
    #define forever for(;;)
    Per me esiste solo perchè permette di poterlo definire con quel nomignolo carino,col while come l'avresti chiamato?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Nello stesso modo

    #define
    forever while(1)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.