|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 83
|
[C]Calcolo quadrati e cubi : strano output
Salve amici programmatori,
scrivo questo post perché sono molto incuriosito dal comportamento di un programma che ho scritto in 2 versioni. E' l'esercizio 2.31 del Deitel : il programma deve stampare un'intestazione,e sotto di essa i numeri,i quadrati e i cubi degli interi da 1 a 10. L'output deve essere questo : Ora,io ho scritto il programma in 2 versioni. La prima : Codice:
// esercizio deitel 2.31
#include <stdio.h>
#include <stdlib.h>
main()
{
int numero=0,quadrato,cubo;
printf("Numero\t\t\tQuadrato\t\tCubo\n");
quadrato = numero * numero;
cubo = numero * numero * numero;
while(numero <= 10)
{
printf("%d\t\t\t\%d\t\t\t%d\n",numero,quadrato,cubo);
numero=numero+1;
}
system("PAUSE");
}
Codice:
// esercizio deitel 2.31
#include <stdio.h>
#include <stdlib.h>
main()
{
int numero=0,quadrato,cubo;
printf("Numero\t\t\tQuadrato\t\tCubo\n");
while(numero <= 10)
{
printf("%d\t\t\t\%d\t\t\t%d\n",numero,numero * numero,numero * numero * numero);
numero=numero+1;
}
system("PAUSE");
}
e dei cubi mi viene dato come valore sempre 0 ??? (Nella 2a versione invece è tutto ok...). Dov'è che sbaglio o non capisco ? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
nella prima versione fai solo l'incremento del numero ma non ricalcoli il quadrato e il cubo.
in alternativa per non ricalcolarlo puoi fare così Codice:
while(numero <= 10)
{
printf("%d\t\t\t\%d\t\t\t%d\n",numero, pow(numero, 2), pow(numero, 3));
numero=numero+1;
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Devi spostare le istruzioni
Codice:
quadrato = numero * numero; cubo = numero * numero * numero;
__________________
Il sole è giallo |
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 83
|
Quote:
in effetti avevo anche provato a spostare dentro al while le definizioni delle var quadrato e cubo,e il programma anche così è ok. Quello che non mi quadra è la spiegazione di tutto ciò : se io le definizioni delle var quadrato e cubo le lascio fuori dal while,quando poi le chiamo dalla printf,non dovrebbero essere calcolate automaticamente,usando come "base di partenza" la var numero (che via via sto incrementando) ???? 'Sta cosa proprio non mi è chiara... |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
Quote:
E' come se tu avessi due scatole. Una contenente un numero al cubo e uno al quadrato. Dal while tu vai a vedere semplicemente il contenuto delle scatole e non ne modifichi il contenuto incrementando il numero.
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 83
|
Quote:
In effetti io nel while dicevo al programma che deve incrementare soltanto la var numero (e poi nell'output errato mi usciva incrementata soltanto quella colonna)... |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2002
Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello
Messaggi: 9571
|
Quote:
|
|
|
|
|
|
|
#8 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 83
|
Quote:
Il procedimento mentale che bisogna fare è dunque quello di vedere,quando la printf interna al ciclo while chiama i valori delle var quadrato e cubo,se questi valori vengono aggiornati o meno. La risposta è sì,ma solo a patto che siano interni al ciclo while ! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:02.




















