Moltiplicazione scuola

Stato
Discussione chiusa ad ulteriori risposte.

edo1493

Utente Silver
13 Settembre 2008
79
16
1
79
I computer giocano un ruolo sempre più importante nell'educazione. Scrivete un programma che aiuti uno studente di scuola elementare ad apprendere la moltiplicazione. Utilizzate rand per produrre due interi positivi di una cifra.
Ecco il mio:blush:
[ot]
Codice:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int main()

{

int num1,num2, risultato,num3;

srand(time ( NULL) );

num1 = 1 + (rand() % 10 );

num2 = 1 + (rand() % 10 );

printf(" Quanto fà %d per %d ?\n", num1,num2);
scanf("%d",&risultato);

num3 = num1*num2;

if(risultato == num3){

printf( " Very good!\n");
}

else{ 
	while( risultato != num3) {
		
printf(" Try again\n");

scanf("%d",&risultato);

num3 = num1*num2;

if(risultato == num3){

printf( " Very good!\n");


}

}

}

return 0;

}
[/ot]

Il mio va tranquillamente solo che penso di aver messo #include<stdlib.h > in più ma non ne sono sicuro..e poi l'uso di rand() mi hanno detto che non è corretto...

Qualcuno sa come avitare quella ripetizione nell' else?
 
ma sei così all'inizio?
perchè se si lascia perdere un'attimo il codice e segui un corso di logica di programmazione (sul serio non intendo offenderti ora è un consiglio spassionato)
Codice:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int main()

{

	int num1,num2, risultato;

	srand(time ( NULL) );

	num1 = 1 + (rand() % 10 );

	num2 = 1 + (rand() % 10 );

	printf(" Quanto fa\' %d per %d ?\n", num1,num2);
	do
	{
		scanf("%d",&risultato);
		if(risultato != num1*num2)
			printf(" Try again\n");

	}while( risultato != num1*num2);

	printf( " Very good!\n");
	return 0;

}
 
opocaj ha detto:
[Ruby]
Codice:
#!/usr/bin/ruby
puts a=rand(9)
puts b=rand(9)
puts "Prodotto?\n"
puts "Corretto!" if gets().to_i==a*b

mah, in python nn vale nemmeno la pena farlo.. cambiano due mezze seghe da quello ruby alla fine...
 
boh, giusto per perderci cinque minuti
Codice:
#!/usr/bin/perl
while (1) {
$a = int(rand(9));
$b = int(rand(9));
print $c = "$a * $b";
print " = ";
<>==eval($c) ? print "sisi, bravo\n" : print "bella merd*!\n";
}
worka fino ad un ^C
 
Codice:
print("{0} * {1}".format([(a = (Math.random()*10).ceil()), (b = (Math.random()*10).ceil())]));
print("{0}".format([(input("Il risultato e': ") == a * b) ? "Esatto!1!11!!QUATTRO" : "Sbagliato, fa {0}".format([a * b])]))
 
Jacoboss è che sono spensierato...xD Il do while lo so pure fare questo mi preoccupa, cmq per puro caso oggi stavo sfogliando la guida di blacklight e mi sono accorto dell'istruzione goto che per questo codice andrebbe più che bene invece di un do while..:p

Codice:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int main()

{

int num1,num2, risultato,num3;

srand(time ( NULL) );

num1 = 1 + (rand() % 10 );

num2 = 1 + (rand() % 10 );

printf(" Quanto fà %d per %d ?\n", num1,num2);

hello:

scanf("%d",&risultato);

num3 = num1*num2;

if(risultato == num3){

printf( " Very good!\n");
}

else{ 
	
		
printf(" Try again\n");


goto hello;


}

return 0;

}

Modificato :p
 
ODDIO IL GOTO

hai idea che questo costrutto è stato la rovina di moltissimi codici?

spezzetta il sorgente e lo rende illeggibile

NON USARLOOOO

e indenta i codici
 
meh. ha detto:
Codice:
print("{0} * {1}".format([(a = (Math.random()*10).ceil()), (b = (Math.random()*10).ceil())]));
print("{0}".format([(input("Il risultato e': ") == a * b) ? "Esatto!1!11!!QUATTRO" : "Sbagliato, fa {0}".format([a * b])]))

python 3.0?
 
Ecco il mio in AutoIt. Per favore non mi prendete in giro per il linguaggio che ho usato... xD
Codice:
While 1
HotKeySet ("{F2}", "esci")
$1 = Random (0, 10)
$2 = Random (0, 10)
$n1 = Int ($1)
$n2 = Int ($2)

$risp = InputBox ("La moltiplicazione a scuola", "Sai dirmi quanto fa "&$n1&'x'&$n2&'?'&@CRLF&'Premi F2 per uscire!')

If $risp = $n1*$n2 Then
	MsgBox (0, "COMPLIMENTI!", "Sei bravissimo con le moltiplicazioni!")
Else
	MsgBox (0, "PECCATO!", "Riprova!")
EndIf
WEnd

Func esci ()
	Exit
EndFunc
HF!:rulezmg:
 
antru mi spieghi perchè hai messo Hotkeyset ?
non ha senso...
bastava mettere il tutto dentro un while o un Do Until e se come risultava di dava un numero minore di 0 terminavi
non capisco perchè ti complichi la vita...
ps:non ti devi vergognare del linguaggio che studi, basta che lo studi bene e puoi dire di saper programmare in quel linguaggio, in fondo è una cosa in + che si sà.
Meglio sapere un pò su tutto che tutto su una cosa.
 
Bastava mettere il tutto dentro un while o un Do Until e se come risultava di dava un numero minore di 0 terminavi

Come mai non leggi ?

bastava un while $risp >= 0 ... wend
oppure un do ... until $risp >= 0
 
RedSkull92 ha detto:
antru mi spieghi perchè hai messo Hotkeyset ?
non ha senso...
bastava mettere il tutto dentro un while o un Do Until e se come risultava di dava un numero minore di 0 terminavi
non capisco perchè ti complichi la vita...
ps:non ti devi vergognare del linguaggio che studi, basta che lo studi bene e puoi dire di saper programmare in quel linguaggio, in fondo è una cosa in + che si sà.
Meglio sapere un pò su tutto che tutto su una cosa.

oh mio dio! do until invece di do while come parole chiavi?? autoit :pattmg:
 
Sono due costrutti del tutto diversi. Il do while cicla sul vero (cioè mentre la condizione è vera ripete, esce quando è falsa), il do until fa l'esatto opposto (ripete fino a quando la condizione è falsa ed esce non appena è vera).
 
stoner ha detto:
Sono due costrutti del tutto diversi. Il do while cicla sul vero (cioè mentre la condizione è vera ripete, esce quando è falsa), il do until fa l'esatto opposto (ripete fino a quando la condizione è falsa ed esce non appena è vera).

... beh.. do while (!condizione) fa la stessa cosa....
 
edo1493 ha detto:
Jacoboss è che sono spensierato...xD Il do while lo so pure fare questo mi preoccupa, cmq per puro caso oggi stavo sfogliando la guida di blacklight e mi sono accorto dell'istruzione goto che per questo codice andrebbe più che bene invece di un do while..:p




Allora... rileggi BENE la guida di black da capo perchè tanto per cambiare hai bestemmiato... sono CERTO che black sconsigli l'uso del goto se non al massimo sulla gestione degli errori ma li c'è il try catch che ti permette di evitare completamente il goto
ricordati bene queste parole EVITA I SALTI INCONDIZIONATI
non è bello non è buono e ti fa guadagnare il disprezzo della gente...
l'unico ambito per cui serve è la vecchia tecnica di infezione degli eseguibili che prevede di inserire una serie di ustruzioni in fondo e un simpatico jmp in cima ed è demenziale lo stesso...
 
Jacoboss ha detto:
edo1493 ha detto:
Jacoboss è che sono spensierato...xD Il do while lo so pure fare questo mi preoccupa, cmq per puro caso oggi stavo sfogliando la guida di blacklight e mi sono accorto dell'istruzione goto che per questo codice andrebbe più che bene invece di un do while..:p




Allora... rileggi BENE la guida di black da capo perchè tanto per cambiare hai bestemmiato... sono CERTO che black sconsigli l'uso del goto se non al massimo sulla gestione degli errori ma li c'è il try catch che ti permette di evitare completamente il goto
ricordati bene queste parole EVITA I SALTI INCONDIZIONATI
non è bello non è buono e ti fa guadagnare il disprezzo della gente...
l'unico ambito per cui serve è la vecchia tecnica di infezione degli eseguibili che prevede di inserire una serie di ustruzioni in fondo e un simpatico jmp in cima ed è demenziale lo stesso...



Il goto è deprecato in favore della programmazione strutturata che permette, utilizzando i costrutti adeguati (for, if, while ec...) di evitare ogni salto incondizionato, nella programmazione a basso livello però non è deprecato mentre in quella di alto livello potrebbe anche non esistere.
 
Stato
Discussione chiusa ad ulteriori risposte.