Moltiplicazione

annuncio pubblicitario
Iterazioni con controllo in testa:
algoritmi notevoli ed esercizi classici
Esercizio
Dati due valori interi positivi calcolarne il
prodotto supponendo che l’esecutore non
abbia a disposizione l’operatore di
moltiplicazione né quello per effettuare la
divisione
esercizio:
Prodotto di due interi positivi
Analisi del problema:
DATI DI INPUT
due valori interi positivi
DATI DI OUTPUT
prodotto
esercizio:
Prodotto di due interi positivi
Analisi del problema:
Schema dati
Identificatore
Descrizione
Var/Cost
Tipo
a
Primo fattore
VAR
Num
b
Secondo fattore
VAR
Num
prodotto
Prodotto di a e b
VAR
Num
contatore
VAR
Num
cont
Schema variabili
Identificatore
input
a
X
b
X
prodotto
cont
output
lavoro
X
X
esercizio:
Prodotto di due interi positivi
Algoritmo risolutivo:
Inizio
a
I
b
#include <iostream.h>
int main()
{ int a,b; // fattori VAR Input
I
int cont; // contatore
prodotto  0
cin>>a;
cont  0
cont < b
int prodotto; // Var output
cin>>b;
F
V
prodottoprodotto + a
cont  cont + 1
prodotto=0;
cont=0;
while (cont<b)
{
prodotto=prodotto+a;
cont=cont+1;
prodotto O
Fine
}
cout<<prodotto;
return 0; }
esercizio:
Prodotto di due interi positivi
Fate la tabella
di traccia!!!
esercizio:
Prodotto di due interi positivi: TRACE
{ int a,b; // fattori VAR Input
N° istr
a
b
cont
prodot
?
video
int cont; // contatore
int prodotto; // Var output
1
1 cin>>a;
2
2 cin>>b;
3
3 prodotto=0;
4
4 cont=0;
5
5 while (cont<b)
6
{
7
6
prodotto=prodotto+a;
7
cont=cont+1;
}
8 cout<<prodotto;
9 return 0; }
3
2
0
0
V
3
1
5
V
6
7
5
8
9
6
2
F
6
esercizio:
Prodotto di due interi positivi
Altra soluzione equivalente:
Decrementiamo
il contatore!
esercizio:
Prodotto di due interi positivi
Algoritmo risolutivo:
Inizio
a
I
b
#include <iostream.h>
int main()
{ int a,b; // fattori VAR Input
I
int cont; // contatore
prodotto  0
cin>>a;
cont  b
cont > 0
int prodotto; // Var output
cin>>b;
F
V
prodottoprodotto + a
cont  cont - 1
prodotto=0;
cont=b;
while (cont>0)
{
prodotto=prodotto+a;
cont=cont-1;
prodotto O
Fine
}
cout<<prodotto;
return 0; }
esercizio:
Prodotto di due interi positivi
E se fosse a=0?
E se fosse b=0?
Esercizio
Dati due valori interi positivi calcolarne il
quoziente ed il resto supponendo che
l’esecutore non abbia a disposizione
l’operatore di moltiplicazione né quello per
effettuare la divisione
esercizio:
Divisione fra due interi positivi
Analisi del problema:
DATI DI INPUT
due valori interi positivi
DATI DI OUTPUT
quoziente, resto
esercizio:
Prodotto di due interi positivi
Analisi del problema:
Schema dati
Identificatore
Descrizione
Var/Cost
Tipo
a
dividendo
VAR
Num
b
divisore
VAR
Num
quoz
quoziente di a e b (contatore)
VAR
Num
resto
Resto della divisione
VAR
Num
Schema variabili
Identificatore
input
a
X
b
X
output
quoz
X
resto
X
lavoro
esercizio:
Divisione fra due interi positivi
Inizio
Leggi(a)
Leggi(b)
I
Algoritmo risolutivo: #include <iostream.h>
int main()
{ int a,b; // VAR Input
int quoz; // contatore var out
I
resto  a
quoz  0
resto >= b
F
V
restoresto - b
quoz  quoz +1
Scrivi(quoz) O
Scrivi(resto)
Fine
O
int resto; // Var output
cin>>a;
cin>>b;
resto=a;
quoz=0;
while (resto>=b)
{
resto = resto - b;
quoz = quoz + 1;
}
cout<<quoz;
cout<<resto;
return 0; }
esercizio:
Prodotto di due interi positivi
Fate la tabella
di traccia!!!
Scarica