Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27

Discussione: [c]programma con menu

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383

    [c]programma con menu

    In questo programma che sto scrivendo:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    main()
    {
     int n,num[n];
     char x;
     printf("\tMENU DI PROVA\n\n\ta) Per immettere dati\n\tb) Per determinare il maggiore\n\tc) Per determinare il minore\n\td) Per ordinare\n\te) Per visualizzare\n\n");
     printf("[PER USCIRE PREMERE q]\t\tScelta(a,b,c,d,e): ");
     x=getchar();
     switch(x) {
        case 'a':
          printf("In esecuzione l'opzione a..\n");
          printf("Immettere dei numeri interi(separati da uno spazio): ");
          scanf("d",&
        case 'b':
          printf("In esecuzione l'opzione b..\n");
          break;
        case 'c':
          printf("In esecuzione l'opzione c..\n");
          break;
        case 'd':
          printf("In esecuzione l'opzione d..\n");
          break;
        case 'q':
        default:
          printf("Opzione inesistente\n");
          break;
     }
    per esempio per quanto riguarda l'opzione a dello switch, vorrei fare in modo da avere uno scanf che prenda un input dei numeri interi.
    Cioe' sul terminale mi viene richiesto di fornire dei numeri interi, separati da uno spazio, poi quando ho finito mi basta premere invio,
    C'e' un modo semplice per ottenerlo?(scusate se mi sono spiegato male)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    int n, m;

    scanf("%d %d", &n, &m);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    non e' detto che debbano essere due i numeri..., in base a quanti gliene do, e smette di acquisirli quando premo invio

  4. #4
    Puoi usare un array di dimensione massima dichiarata (ad esempio 100), e terminare l'acquisizione dei numeri quando si riceve un terminatore (ad esempio 0). Il limite è che puoi inserire però un numero di elementi <= rispetto a quanti ne dichiari nella dimensione dell'array...
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Mister Bean, grazie.
    Ma allora come si realizza uno scanf in questo modo?

  6. #6
    Ti scrivo il pezzo di codice che ti interessa:

    int main()
    {
    int i, num[100] // Al posto di 100 puoi mettere un numero a tua scelta
    ................... // Qui metti il resto del codice

    // Quando arrivi alla scanf, la fai così:
    for(i = 0; (i < 100) && (num[i] != 0); i++) // Al posto di 100 metti il numero che hai messo tra le parentesi quadre nel dichiarare l'array
    scanf("%d", &num[i]);
    ...................
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    (i < 100) && (num[i] != 0)
    come terminatore vorrei utilizzare INVIO(che credo sia '\0'), ma non e' un numero e' un carattere,
    quindi al posto di num[i] != 0 mettero' num[i] != ?

  8. #8
    Originariamente inviato da cristianc
    come terminatore vorrei utilizzare INVIO(che credo sia '\0'), ma non e' un numero e' un carattere,
    quindi al posto di num[i] != 0 mettero' num[i] != ?
    Qui non saprei dirti... il fatto è che la scanf ti accetta quei valori sia che tu usi lo spazio, sia che usi l'invio. Io, nella mia inesperienza, non so come risolvere questo problema. Può darsi che sia come dici tu, ma non ne sono certo.
    Aspetta risposte da gente che ne sa più di me
    Se state chiamando per i piedini mancanti,lasciate il vostro indirizzo,e i piedi di ricambio vi saranno consegnati da mio nipote Jody. E ora, io devo ritornare nel dolce abbraccio della cripta... Ma tornerò!!!

    The Simpson ; AABF08 (Domenica orrenda domenica)

  9. #9
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Se si preme il tasto invio senza premere niente il risultato della scanf dovrebbe essere niente.
    Potresti provare a fare
    codice:
    num[i] == ''
    Non garantisco risultati, però
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Ecco una prima bozza del programma:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    main()
    {
     int i,num[100],ord[100];
     char x;
     printf("\tMENU DI PROVA\n\n\ta) Per immettere dati\n\tb) Per determinare il maggiore\n\tc) Per determinare il minore\n\td) Per ordinare\n\te) Per visualizzare\n\n");
     printf("[PER USCIRE PREMERE q]\t\tScelta(a,b,c,d,e): ");
     x=getchar();
     switch(x) {
        case 'a':
          printf("In esecuzione l'opzione a..\n");
          printf("Immettere dei numeri interi(separati da uno spazio): ");
          for(i=0;(i<100) && (num[i]='');i++) scanf("%d",&num[i]);
        case 'b':
          printf("In esecuzione l'opzione b..\n");
          max=num[0];
          for(i=1;i<100;i++) 
             if (num[i]>max) max=num[i];
        case 'c':
          printf("In esecuzione l'opzione c..\n");
          min=num[0];
          for(i=1;i<100;i++)
             if (num[i]<min) min=num[i];
        case 'd':
          printf("In esecuzione l'opzione d..\n");
          ord[0]=num[0];
          for(i=0;i<100;i++) 
          break;
        case 'q':
        default:
          printf("Opzione inesistente\n");
          break;
     }
    
    
     
    }
    Avete qualche idea riguardo all'opzione d,cioe' quella iche dati dei numeri interi ti chiede di riordinarli in modo crescente?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.