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

    problema con linguaggio c

    salve a tutti..sono alle prime armi con il linguaggio c...volevo scrivere un programma che mi facesse il prodotto di due numeri(che inserisco io da tastiera),fin quando il loro prodotto sia minore di 36.
    solo che il programma mi fa tutto il contrario.
    esegue solo il prodotto di due numeri il cui risultato è > 36 e ci aggiunge pure un'unita.
    ecco quello che ho scritto,dove è il problema?


    #include<stdio.h>
    #include<iostream>


    int main (){
    int add1;
    int add2;
    int moltiplicazione=36;
    int i;


    printf("Immetti il primo numero\n");
    scanf("%d", &add1);
    printf("Immetti il secondo numero\n");
    scanf("%d", &add2);

    for(i=0; i<= moltiplicazione;i++) {
    i=add1*add2;
    }
    printf("il risultato è %d\n",i);
    system("PAUSE");
    return 0;
    }

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Se per caso inserisci 2 e 3,i diventa uguale a 6,poi viene incrementato di uno (=7),e poi viene posto di nuovo uguale a 2*3.Quindi il programma non termina,mentre se inserisci numeri tipo 6 e 7 ti fa la moltiplicazione e il ciclo for temina perche' i non e' <=36.
    L' idea di usare i come risultato della moltiplicazione non quadra perche' in pratica ti continua a moltiplicare quei numeri all' infinito e ad assegnarli a i,finche' non diventa >=36,ma 2*3 fa sempre 6.
    Io farei cosi':
    codice:
      i=add1*add2;
      if(i<=36)
        printf("Il risultato e' %d",i);
      else 
        printf("Risultato maggiore di 36");

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466

    Re: problema con linguaggio c

    Originariamente inviato da katesweet
    #include<stdio.h>
    #include<iostream>
    Perchè?

  4. #4
    ti posso consigliare di usare un ciclo:

    do
    {
    printf("Immetti il primo numero\n");
    scanf("%d", &add1);
    printf("Immetti il secondo numero\n");
    scanf("%d", &add2);

    int i = add1 * add2;
    }
    while(i <= 36)

  5. #5

    Re: problema con linguaggio c

    Originariamente inviato da katesweet
    salve a tutti..sono alle prime armi con il linguaggio c...volevo scrivere un programma che mi facesse il prodotto di due numeri(che inserisco io da tastiera),fin quando il loro prodotto sia minore di 36.
    solo che il programma mi fa tutto il contrario.
    esegue solo il prodotto di due numeri il cui risultato è > 36 e ci aggiunge pure un'unita.
    ecco quello che ho scritto,dove è il problema?


    #include<stdio.h>
    #include<iostream>


    int main (){
    int add1;
    int add2;
    int moltiplicazione=36;
    int i;


    printf("Immetti il primo numero\n");
    scanf("%d", &add1);
    printf("Immetti il secondo numero\n");
    scanf("%d", &add2);

    for(i=0; i<= moltiplicazione;i++) {
    i=add1*add2;
    }
    printf("il risultato è %d\n",i);
    system("PAUSE");
    return 0;
    }
    Ben arrivato nel forum di HTML.it

    Ti dico subito 2 cose:

    1. nel titolo si deve indicare, in linea molto generale, il tipo di problema riscontrato
    2. includere il codice nei tag "CODE".


    Erano doverose queste due precisazioni, tuttavia andiamo al problema.
    Non capisco in realtà quale sia il problema, o meglio: quando il prodotto risulta maggiore di 36, cosa deve succedere? Deve terminare il programma? La questione è tutta qui, ovviamente per vedere se il risultato è > 36 occorre svolgere il prodotto, ma non come hai fatto (il tuo ciclo for mi spaventa....); forse volevi fare una cosa del genere:
    codice:
    int add1;
    int add2;
    int prodotto;
    
    printf("Immetti il primo numero\n");
    scanf("%d", &add1);
    printf("Immetti il secondo numero\n");
    scanf("%d", &add2);
     
    prodotto = add1 * add2;
    
    if (prodotto>=36)
       prodotto++;
    Inoltre, per una maggiore correttezza formale, dichiarerei "moltiplicazione" come una costante e non come una variabile, visto che il suo valore non cambia.

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.