Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [c] compito con switch-case

    Salve a tutti, sono una studentessa di informatica al quarto anno.. Il nostro professore ci ha assegnato un compito che però non riesco a fare.. Ci ha detto di creare un programma in C che data un operazione matematica (ad esempio 3*3, 3+3 ecc) con lo switch far riconoscere al pc quale operazione ho scritto per poterla eseguire...
    Non ho mai utilizzato questo switch e su internet sono solamente riuscita a trovare questo schema e a capire solamente in linea teorica a cosa serve... :
    codice:
    switch (variabile)
    {
     case valore1:
      istruzione1;
      break;
     
     case valore2:
      istruzione2;
      break;
     
     case valoreN:
      istruzioneN;
      break;
    }
    qualcuno mi può dare una mano su come fare?

  2. #2

    Re: [c] compito con switch-case

    Che cosa non hai capito ? :master: (cerca nel forum trovi molti esempi)
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    In realta' non e' chiaro il problema e come ci possa entrare lo switch...case

    Precisa (con un esempio migliore ...) il problema che hai avuto dal professore ... cosa fornisci in input e cosa deve esserci in output ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Originariamente inviato da oregon
    cosa fornisci in input e cosa deve esserci in output ...
    In input io devo dare un operazione matematica, e in output devo avere il risultato...

    Prendendo lo schema che ho postato:

    codice:
    case valore1:
      istruzione1;
    Al posto di valore1 dovrei mettere se si verifica un certo caso, mentre sull'istruzione quello che deve fare il programma se quel caso è quello giusto... Ma sto in blocco non so come applicarlo nel mio problema... e cosa dovrei mettere al posto di variabile ?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Se non e' ben identificato l'input, non si puo' dire cosa devi mettere nelle variabili o quale codice scrivere ...

    COSA vuol dire che in input devi dare una operazione matematica?

    Cioe', COSA devi scrivere in input nel tuo programma ? Fai un ESEMPIO pratico ...

    Ad esempio, hai un MENU da cui scegliere l'operazione (ad esempio, addizione, sottrazione, moltiplicazione, divisione ...) tramite un numero (1 per +, 2 per -, 3 per *, 4 per / ...), nel qual caso useresti lo switch-case, oppure devi fare in un altro modo ...?

    1 - addizione
    2 - sottrazione
    3 - moltiplicazione
    4 - divisione

    input in una variabile v

    input dei due operandi

    switch(v)
    {
    case 1:
    istruzioni per l'addizione dei due operandi
    break;
    case 2:
    istruzioni per la sottrazione dei due operandi
    break;
    case 3:
    istruzioni per la moltiplicazione dei due operandi
    break;
    case 4:
    istruzioni per la divisione dei due operandi
    break;
    default:
    operazione non valida
    break;
    }

    ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Allora, l'unica cosa che il professore ci ha fatto vedere è il programma in esecuzione:

    codice:
    Scrivi operazione da eseguire: (e scrivo da tastiera) 3+3
    Risultato: 6
    
    ---
    
    Scrivi operazione da eseguire: 3-3
    Risultato: 0
    
    ---
    
    Scrivi operazione da eseguire: 3*3
    Risultato: 9
    
    ---
    
    Scrivi operazione da eseguire: 3/3
    Risultato: 1
    Resto: 0

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Beh ... allora la faccenda si fa un po' piu' complessa ...

    A parte lo switch-case (che non e' il punto fondamentale del problema), hai scritto la parte del programma che prende in input la stringa e la "esamina"?

    Ovvero, devi avere prima di tutto, il codice che analizza la stringa in input, estrae il primo operando, l'operazione e il secondo operando ...

    Solo dopo aver fatto questa parte, puoi inserire il carattere dell'operazione in una variabile (ad esempio, nella variabile oper di tipo char) e scrivere

    switch(oper)
    {
    case '+';
    istruzioni ...
    break;
    case '-';
    istruzioni ...
    break;
    case '*';
    istruzioni ...
    break;
    case '/';
    istruzioni ...
    break;
    default:
    operazione non consentita ...
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Io farei un parser (formato da un tokenizer e un lexer), per maggiori info cerca su WikiPedia: http://en.wikipedia.org/wiki/Lexical_analysis

  9. #9
    Originariamente inviato da flash.tato
    Io farei un parser (formato da un tokenizer e un lexer), per maggiori info cerca su WikiPedia: http://en.wikipedia.org/wiki/Lexical_analysis
    L'utente, evidentemente alle prime armi, è in difficoltà ad usare uno switch,
    e tu gli proponi ci creare un parser ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  10. #10
    Poi secondo me il problema non ce l'ha con lo switch ma nell'analisi della stringa data in input, e per questo gli ho proposto il parser che concettualmente è facile da creare basterebbe una routine che faccia il loop di tutti i caratteri presenti nell'array della stringa data in input e li riconosca.

    A mio modo di vedere un parser se si capisce come funziona poi è facile da fare (sopratutto se devi fare il parsing di cose semplici come questa operazione 3 + 3).

    ovviamente è solo una mia idea e anzi mi scuso di averla proposta se non è l'ideale per quanto richiedeva l'autore

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.