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

    [C]problemi con il while

    salve volevo presentami il mio problema,
    ho fattto un pikkolo programma (nn fate kaso ai nomi x le variabili...)
    ho messo un while, ma non funziona ,
    definizione: teoricamente dovrebbe uscirmi un menu kon dei numeri ke corispondo alle varie attivita..eccecc pero quando lo avvio da di matto...
    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");
    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(" 1") elevazione al quadrato\n");
    printf(" 2") elevazione al cubo\n");
    scanf("%d",&selezionec);
    switch(selezionec);
    {

    case 1:

    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 2:

    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^elevatore;
    printf("il risultato è %f",elevato);
    break;

    case 4:

    float sradicando;
    floata 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;

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

    }

    ho provato a pensare il motivo
    ma sono solo un newbie... qualke errore mi è koncessovero...kredo.....
    B4D H4B1T forever.
    "don't drink and drive,
    just smoke and fly"
    citazione del mio amico davide. XD

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    prova ad inizializzare int selezionea con un valore non nullo oppure usa il cico
    codice:
     do { ... } while ( ... );

  3. #3
    Hai già postato lo stesso problema qui e io ti ho già risposto...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    200 righe?
    codice:
    #include <stdio.h>
    #include<math.h>
    main(){
    int sel;
    float a,b;
    do {
    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");
    scanf("%d",&sel);
    switch(sel){
    case 1:
    printf(" 1) addizione\n");
    printf(" 2) sottrazione\n");
    printf(" 3) moltiplicazione\n");
    printf(" 4) divisione\n");
    scanf("%d",&sel);
    printf("dammi il primo numero\n");
    scanf("%f",&a);
    printf("dammi il secondo numero\n");
    scanf("%f",&b);
    switch(sel) {
            case 1:
            printf("il risultato e' %f\n",a+b); 
            break;
            case 2:
            printf("il risultato e' %f\n",a-b);
            break;
            case 3:
            printf("il risultato e' %f\n",a*b);
            break;
            case 4:
            printf("il risultato e' %f\n",a/b);
            break;
            default:
            printf("selezione sbagliata\n");
            }
    break; 
    case 2:
    printf(" 1 elevazione al quadrato\n");
    printf(" 2 elevazione al cubo\n");
    scanf("%d",&sel);
    switch(sel){
            case 1:
            printf("dammi il numero da elevare al quadrato\n");
            scanf("%f",&a);
            printf("il risultato e' %f\n",a*a);
            break;
            case 2:
            printf("dammi il numero da elevare al cubo\n");
            scanf("%f",&a);
            printf("il risultato e' %f\n",a*a*a);
            break;
            default:
            printf("scelta sbagliata\n");
            }
    break;
    case 3:
    printf("dammi il numero da elevare\n");
    scanf("%f",&a);
    printf("dammi l'esponente a scelta\n");
    scanf("%f",&b);
    printf("il risultato e' %f",pow(a,b));
    break;
    case 4:
    printf("dammi il numero\n");
    scanf("%f",&a);
    printf("il risultato e' %f\n",sqrt(a));
    break;
    case 5:
    printf("dammi il primo numero\n");
    scanf("%f",&a);
    printf("dammi la percentuale che vuoi sapere\n");
    scanf("%f",&b);
    printf("il la percentuale e' %f\n",(a/100)*b);
    break;
    default:
    printf("scelta sbagliata\n");
    }
    getchar();getchar();}while (sel!=0);
    }
    dai un'occhiata a questo, è il tuo programma fatto in modo più raziocinante (scherzo, alle prime armi si fa questo e altro)..
    ma fai più attenzione quando scrivi..nel tuo codice mancavano dei break, delle printf erano scritte male, l'operazione di elevazione a potenza non si fa con "^" e la radice ovviamente non si fa "^1/2"...ma sopratutto fai dichiarato una 50ina di variabili inutili

  5. #5
    grazie mille a tutti quelli ke mi hanno risposto!!
    ora posso compilarlo yeah1
    B4D H4B1T forever.
    "don't drink and drive,
    just smoke and fly"
    citazione del mio amico davide. XD

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

    Moderazione

    Originariamente inviato da B4D H4B1T
    grazie mille a tutti quelli ke mi hanno risposto!!
    Sì, ma non aprire più discussioni sullo stesso argomento: come ti è stato segnalato, c'era già un thread attivo per lo stesso problema.
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.