Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    il mio primo programma

    ciao a tutti, volevo chiedervi un aiuto su di un mio programmino (il mio 1 FUNZIONANTE programmino)
    io ho provato a mettere un while x un ciclo ma, quando lo compilo, e lo avvio mi cicla senza darmi pri ma il menu...

    ecco il codice:
    #include <stdio.h>

    main()

    {

    int selezionea;

    while (selezionea!=0)
    printf("\n Scegli l'ambito matematico:\n\n");
    printf(" 1) Le 4 operazioni basiche.\n");
    printf(" 2) Elevazioni al quadrato e al cubo.\n");
    printf(" 3) Elevazione con esponente a scelta\n");
    printf(" 4) Radice quadrata di un numero\n");
    printf(" 5) Percentuale di un numero\n");
    printf(" 0) esci\n\n");
    scanf("%d",&selezionea);
    switch(selezionea)
    {
    case 1:

    int selezioneb;
    printf(" 1) addizione\n");
    printf(" 2) sottrazione\n");
    printf(" 3) moltiplicazione\n");
    printf(" 4) divisione\n");
    scanf("%d",&selezioneb);
    switch(selezioneb)
    {
    case 1:

    float addendoa;
    float addendob;
    float somma;
    printf("dammi il primo numero\n");
    scanf("%f",&addendoa);
    printf("dammi il secondo numero\n");
    scanf("%f",&addendob);
    somma = addendoa+addendob;
    printf("il risultato è %f\n",somma);
    break;

    case 2:

    float minuendo;
    float sottraendo;
    float resto;
    printf("dammi il primo numero\n");
    scanf("%f",&minuendo);
    printf("dammi il secondo numero\n");
    scanf("%f",&sottraendo);
    resto = minuendo-sottraendo;
    printf("il risultato è %f\n",resto);
    break;

    case 3:

    float moltiplicando;
    float moltiplicatore;
    float prodotto;
    printf("dammi il primo numero\n");
    scanf("%f",&moltiplicando);
    printf("dammi il secondo numero\n");
    scanf("%f",&moltiplicatore);
    prodotto = moltiplicando*moltiplicatore;
    printf("il risultato è %f\n",prodotto);
    break;

    case 4:

    float dividendo;
    float divisore;
    float quoto;
    printf("dammi il primo numero\n");
    scanf("%f",&dividendo);
    printf("dammi il secondo numero\n");
    scanf("%f",&divisore);
    quoto = dividendo/divisore;
    printf("il risultato è %f\n",quoto);
    break;

    default:
    printf("selezione sbagliata\n");
    }

    case 2:

    int selezionec;
    printf(" 6) elevazione al quadrato\n");
    printf(" 7) elevazione al cubo\n");
    scanf("%d",&selezionec);
    switch(selezionec);
    {

    case 6:

    float base;
    float quadrato;
    printf("dammi il numero da elevare\n");
    scanf("%f",&base);
    quadrato = base*base;
    printf("il risultato è %f\n",quadrato);
    break;

    case 7:

    float basea;
    float cubo;
    printf("dammi il numero da elevare\n");
    scanf("%f",&basea);
    cubo = basea*basea*basea;
    printf("il risultato è %f\n",cubo);
    break;

    default:
    printf("scelta sbagliata\n");
    }

    case 3:

    float basec;
    float elevatore;
    float elevato;
    printf("dammi il numero da elevare\n");
    scanf("%f",&basec);
    printf("dammi l'esponente a scelta\n");
    scanf("%f",&elevatore);
    elevato = (basec*basec)*elevatore;
    printf("il risultato è %f",elevato);
    break;

    case 4:

    float sradicando;
    float sradicato;
    printf("dammi il numero\n");
    scanf("%f",&sradicando);
    sradicato = sradicando*1/2;
    printf("il risultato è %f\n",sradicato);
    break;

    case 5:

    float percentuando;
    float percentuatore;
    float percentuato;
    printf("dammi il primo numero\n");
    scanf("%f",&percentuando);
    printf("dammi la percentuale che vuoi sapere\n");
    scanf("%f",&percentuatore);
    percentuato = (percentuando/100)*percentuatore;
    printf("il la percentuale è %f\n",percentuato);
    break;



    }

    }

    approposito, io ho provato a capire il problema ma non ci arrivo
    B4D H4B1T forever.
    "don't drink and drive,
    just smoke and fly"
    citazione del mio amico davide. XD

  2. #2
    Un paio di cose che noto subito: selezionea non è inizializzato, per cui all'interno di esso ci potrebbe essere qualunque valore, e l'esito della prima iterazione del while è indefinito. Inoltre dopo il while non hai aperto la graffa, per cui il while ha effetto solo sulla prima istruzione che lo segue. Infine, dal momento che il ciclo almeno una volta va ripetuto, devi usare un do ... while invece del semplice while.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465

    Moderazione

    Originariamente inviato da B4D H4B1T
    ciao a tutti
    Ciao e benvenuto nel forum di Programmazione.

    Ti segnalo da subito la lettura del nostro Regolamento che contiene tutte le norme da seguire per partecipare correttamente a quest'area del forum.

    In modo particolare, devi sempre indicare il linguaggio utilizzato nel titolo della discussione, indicando la versione nel caso in cui ne esistesse più di una, assieme ad una sintesi breve ma significativa ed esplicativa del problema.

    Inoltre, il codice sorgente va racchiuso con il tag [CODE] (*).

    Le correzioni di cui sopra le ho apportate io: leggi e tieni a mente le norme per il futuro.

    Detto questo, ciao e...buon forum!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.