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

Discussione: Problema if/else C

  1. #1
    Utente di HTML.it L'avatar di Salvy95
    Registrato dal
    Jul 2008
    Messaggi
    199

    Problema if/else C

    #include <stdio.h>
    main(){
    //Dichiaro variabili//
    int j,n1,n2,somma,differenza,prodotto,quoziente,fine;
    char end;
    for(j=0;j<1;j++){
    printf("Giacomo is gay\n");
    printf("Calcolatrice niubba, lol\n");
    }
    scanf("%d", &n1);
    scanf("%d", &n2);
    somma=n1+n2;
    differenza=n1-n2;
    prodotto=n1*n2;
    quoziente=n1/n2;
    printf("La somma is %d \n", somma);
    printf("La somma is %d \n", differenza);
    printf("La somma is %d \n", prodotto);
    printf("La somma is %d \n", quoziente);
    printf("Vuoi fare un altra operazione idiota? s/n \n");
    scanf("%c", &end);
    if(end=="s"){
    main();
    }
    else{
    printf("Ok pesce! \n");
    scanf("%d", &fine);
    }
    }

    Salve ragazzi, come potete notare la mia calcolatrice molto niubba è un vero portento a fare calcoli XD
    ma li vuol fare una sola volta! infatti se analizzate bene il costrutto if/else noterete che compilando non lo prende in considerazione, ma fa funzionare solo l'else xD
    Quindi se l'input utentesco è "s" non riavvia il programma
    Perchè?

  2. #2
    se non sbaglio in c quel "s" equivale ad una stringa di 2 caratteri il primo è s il secondo è il terminatore... per un solo carattere devi utilizzare ovviamente il 's'

    e poi richiamare il main è la cosa peggiore che potevi fare:

    devi utilizzare un semplice ciclo che ripete le stesse operazione nel caso l'input sia s

    qualcosa del genere

    while((c=getchar())=='s') {

    }

  3. #3
    concordo con xnavigator....ma se non sai usare il getchar o lo trovi complicato fai così:

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    [...]//definisco le varibili... ti suggerisco di metterle float così potrai usare i decimali
    int main(){
    for( ; ; ){//avvio un ciclo infinito
    [...codice calcolatrice...]
    int scelta = 0;
    do{//open do
    system("cls"); //pulisco la schermata N.B "cls" funziona solo con windows
        printf("\n1- continua\n");
        printf("2- esci\n");
        printf("\n\nScegli -> ");
        scanf("%d", &scelta);
    }//close do
    while(scelta < 1 && scelta > 2);
    //il while è giusto...perchè per terminare il do{} la condizione del while deve risultare false
    if(scelta == 2){
    break;//termino il ciclo prematuramente
    }
       
    
    }//chiudo ciclo infinito for
    return 0;
    }
    Spero di non aver fatto errori

  4. #4
    Originariamente inviato da Multanova

    Spero di non aver fatto errori
    invece li hai fatti lol

    se inserisci 1 il ciclo non continua...
    forse dovresti rivedere meglio le strutture di controllo ^^

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da Multanova
    while(scelta < 1 && scelta > 2);
    Quale numero e' contemporaneamente <1 e >2 ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di Mad_al
    Registrato dal
    Jun 2009
    Messaggi
    125
    infatti.. io farei con un getchar o un getline.
    ma avrei strutturato diversamente dall'inizio... con una variabile bool sulla quale effettuare il controllo per la ripetizione.

  7. #7
    Utente di HTML.it L'avatar di Salvy95
    Registrato dal
    Jul 2008
    Messaggi
    199
    Originariamente inviato da xnavigator
    se non sbaglio in c quel "s" equivale ad una stringa di 2 caratteri il primo è s il secondo è il terminatore... per un solo carattere devi utilizzare ovviamente il 's'

    e poi richiamare il main è la cosa peggiore che potevi fare:

    devi utilizzare un semplice ciclo che ripete le stesse operazione nel caso l'input sia s

    qualcosa del genere

    while((c=getchar())=='s') {

    }
    E dovei dovrei inserirlo il ciclo?
    Non posso creare la funziona calcola, e poi dare il comando calcola(); con in php??

    EDIT: Ho modificato in questo modo

    codice:
    #include <stdio.h>
    main(){
    //Dichiaro variabili//
    int j,n1,n2,somma,differenza,prodotto,quoziente,c,fine;
    char x;
    for(j=0;j<1;j++){
    printf("Giacomo is gay\n");
    printf("Calcolatrice niubba, lol\n");
    }
    scanf("%d", &n1);
    scanf("%d", &n2);
    somma=n1+n2;
    differenza=n1-n2;
    prodotto=n1*n2;
    quoziente=n1/n2;
    printf("La somma is %d \n", somma);
    printf("La somma is %d \n", differenza);
    printf("La somma is %d \n", prodotto);
    printf("La somma is %d \n", quoziente);
    printf("Vuoi fare un altra operazione idiota? s/n \n");
    scanf("%c",&x);
    while((x=getchar())=="s"){
                          main();
                          }        
     }

    EDIT: LOL, grazie al nostro moderatore

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Moderazione

    @Salvy95: al primo post c'eri andato vicino... hai usato il QUOTE al posto del CODE... qui, proprio non hai usato i tag per il codice... e se magari posti il codice con un po' di indentazione risulta anche meglio.


    Li aggiungo io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    ma lol.. non leggi quello che ti ho suggerito?

    questo
    codice:
    (x=getchar())=="s"
    è errato..

    devi fare =='s' con l'apice ' e non con le virgolette " perchè s è un solo carattere
    poi se metti il tuo codice dentro al while è meglio il ciclo ogni volta farà eseguire il blocco di codice senza richiamare ogni volta la funzione

    poi questo for non ha senso:
    codice:
    for(j=0;j<1;j++){
      printf("Giacomo is gay\n");
      printf("Calcolatrice niubba, lol\n");
    }
    (indenta il codice come ho fatto io sopra la prox volta)

  10. #10
    Utente di HTML.it L'avatar di Salvy95
    Registrato dal
    Jul 2008
    Messaggi
    199
    Perfetto!! tutto riuscito!
    Posto il codice nel caso qualcuno voglia sapere come ho risolto:

    #include <stdio.h>
    main(){
    //Dichiaro variabili//
    int j,n1,n2,somma,differenza,prodotto,quoziente,c,fine ;
    char x;
    for(j=0;j<1;j++){
    printf("Giacomo Gaglione is gay\n");
    printf("Calcolatrice niubba, lol\n");
    }
    scanf("%d", &n1);
    scanf("%d", &n2);
    somma=n1+n2;
    differenza=n1-n2;
    prodotto=n1*n2;
    quoziente=n1/n2;
    printf("La somma is %d \n", somma);
    printf("La somma is %d \n", differenza);
    printf("La somma is %d \n", prodotto);
    printf("La somma is %d \n", quoziente);
    printf("Vuoi fare un altra operazione idiota? s/n \n");
    scanf("%c",&x);
    while((x=getchar())=='s'){
    main();
    }
    }
    Ps: Il programma era inizialmente un modo per fottere un mio amico, infatti non era j=0;j<1;j++
    bensì
    j=0;j<100000000000;j++

    :P

    VI RINGRAZIO DI NUOVO DELLE RISPOSTE, SEMPRE DISPONIBILI!
    Si può chiudere

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.