Problema con un programma in c

Lampada0102

Nuovo Utente
18
0
CPU
Ryzen 5 3500U
In pratica per domani dovrei finire questo programma e in pratica tengo questo problema che quando finisco uan funzione switch, me ne avvia un'altra anche se l'ho interrotta. Il codice è qua:
C:
#include <stdio.h>
main ()
{
    float a,v,t,v0,s0,s;
    int risposta_1, risposta_2;
    printf ("Questo e' un programma per l'analisi del moto rettilineo di un corpo in base ai dati inseriti.\n");
    printf ("N.B: Questo programma e' utile solo nel caso in cui si deve analizzare un moto rettilineo.\n");
    printf ("N.B: Inserire i valori con grandezze del S.I.\n");
    printf ("E' presente una accelerazione? (0 per si, 1 per no).\n");
    scanf ("%d", &risposta_1);
    switch (risposta_1) {
    case 1:
        printf ("Il moto e' rettilineo uniforme.\n");
        printf ("Si vuole sapere la posizione nello spazio del corpo? (0 per si, 1 per no)\n");
        scanf ("%d", &risposta_2);
        switch (risposta_2) {
            case 0:
                printf ("Si prega di inserire la velocita' del corpo...\n");
                scanf ("%f", &v);
                printf ("Inserire l'istante di tempo che si vuole calcolare...\n");
                scanf ("%f", &t);
                printf ("Inserire la posizione iniziale del corpo... (inserire 0 se non e' presente)\n");
                scanf ("%f", &s0);
                s=(v*t)+s0;
                printf ("La posizione del corpo nell'instante di tempo specificato e' di... %f\n", s);
                break;
                case 1:
                    printf ("Si prega di riavviare il programma per una nuova analisi.\n");
                    break;
                    default:
                        printf ("Riavviare il programma e inserire un valore riconosciuto dal sistema.");
                        break;
                }       
        case 0:
            printf ("Il moto e' rettilineo uniformemente accelerato.\n");
            printf ("Si vuole sapere la posizione nello spazio del corpo? (0 per si, 1 per no)\n");
            scanf ("%d", &risposta_2);
            switch (risposta_2) {
                case 0:
                    printf ("Si prega di inserire l'istante di tempo da considerare...\n");
                    scanf ("%f", &t);
                    printf ("Inserire l'accelerazione del corpo...\n");
                    scanf ("%f", &a);
                    printf ("Inserire la velocita' iniziale del corpo... (inserire 0 se non e' presente)\n");
                    scanf ("%f", &v0);
                    printf ("Inserire il valore della posizione iniziale... (inserire 0 se non e' presente)\n");
                    scanf ("%f", &s0);
                    s=s0+(v0*t)+0.5*a*(t*t);
                    printf ("La posizione del corpo nell'istante di tempo specificato e' di...%f\n", s);
                    break;
                    case 1:
                        printf ("Si prega di riavviare il programma per una nuova analisi.\n");
                        break;
                        default:
                        printf ("Riavviare il programma e inserire un valore riconosciuto dal sistema.");
                        break;
                    }
                    default:
                        printf ("Riavviare il programma e inserire un valore riconosciuto dal sistema.\n");
                        break;
                }
                system ("pause");
            }
Qualcuno che mi riesce a risolvere? Grazie mille. Se non avete capito il problema potete provare ad eseguire il problema da compilatore. Grazie millle in anticipo.
 
Ultima modifica da un moderatore:

BigIssue

Utente Attivo
221
18
CPU
intel dual core n3050
Scheda Madre
asus x540s
RAM
4gb
GPU
intel HD
OS
Windows 10
dimentichi un break.
default:
printf ("Riavviare il programma e inserire un valore riconosciuto dal sistema.");
break;
}
break;

che interrompe il primo il primo switch da secondo.
 

Allegati

  • switches.txt
    2.4 KB · Visualizzazioni: 57
U

Utente cancellato 371741

Ospite
Prima di postare codice completamente incasinato/stabulato, meglio tabularlo bene, e da solo capiresti che mancano break come tra case 0 e case 1(accelerazione)

Esistono tanti stili, importante e' la corerenza.

Lo stile che usa ad esempio il kernel linux :

C:
switch (test) {
case 0:
    /* qui fai le cose */
    break;
case 1:
    /* qui fai le cose */
    break;
case 3:
    /* qui fai le cose anche per 4 */
    /* fall-through intenzionale */
case 4:
    /* qui fai le cose */
    break;
default:
    /* buona norma sempre un default */
    /* qui fai le cose */
    break;
}

Per un idea di uno stile come un altro, purche sia chiaro:
 
Ultima modifica da un moderatore:

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili