SOLUZIONE DI RIFERIMENTO in C++.

Corso di Fondamenti di Informatica (Unificato)
Prof Aldo Franco Dragoni
Avvertenze
•
•
•
•
•
•
Usare ESCLUSIVAMENTE penne ad inchiostro nero o blu (NO MATITE).
Consegnare solo fogli formato A4 scritti da ambo i lati.
In testa a ciascun foglio scrivere: cognome, nome, numero progressivo di pagina rispetto al totale; esempio per il
secondo foglio di 3 consegnati: Giuseppe Russo 2/3
Mantenere sul banco il libretto o altro documento di riconoscimento fino a controllo avvenuto
Nient’altro deve trovarsi sul banco: non è consentito consultare libri, dispense, appunti, ecc.
La correzione di riferimento per l’autovalutazione verrà fornita sul sito internet del Corso
Prova Scritta del 16/11/09
Il programma dovrà attraverso un Menù leggere da tastiera se l'utente vuole:
1. calcolare il quoziente ed il resto di una divisione tra interi (carattere a);
2. calcolare il prodotto tra interi (carattere b);
3. uscire dal programma (carattere c);
Fatta la scelta dal Menù il programma dovrà:
1. leggere dalla tastiera due numeri interi attraverso l'apposita funzione, tale lettura dovrà ripetersi finché
non ne siano immessi due entrambi positivi e nel caso della divisione lo zero non sarà ammesso;
2. nel caso si sia scelto di fare la divisione, calcolare e stampare a video il QUOZIENTE ed il RESTO della
divisione intera del MAGGIORE dei due per il MINORE, attraverso le due apposite funzioni;
3. nel caso si sia scelto di fare il prodotto, calcolare e stampare a video il PRODOTTO dei due numeri
attraverso l'apposita funzione;
Sia il RESTO che il QUOZIENTE della divisione intera NON DEVONO ESSERE CALCOLATI FACENDO
USO DEGLI OPERATORI PREDEFINITI ( / e % ) ma mediante le due funzioni appositamente scritte.
Anche il PRODOTTO NON DEVE ESSERE CALCOLATO FACENDO USO DELL'OPERATORE
PREDEFINITO (*) ma mediante la funzione appositamente scritta.
Una possibile esecuzione potrebbe essere (in grassetto sono indicati i valori forniti da tastiera !!!):
MENU'
a) Per calcolare il quoziente ed il resto della divisione tra due numeri positivi
b) Per calcolare il prodotto tra due numeri positivi
c) Per uscire dal programma
Scelta: b
Scrivi il primo numero positivo: -4
Scrivi il primo numero positivo: 4
Scrivi il secondo numero positivo: -6
Scrivi il secondo numero positivo: 0
Il prodotto dei due numeri è: 0
MENU'
a) Per calcolare il quoziente ed il resto della divisione tra due numeri positivi
b) Per calcolare il prodotto tra due numeri positivi
60131 ANCONA - ITALY - Via Brecce Bianche
Phone (+39) 0712204390 - e-mail: [email protected]
Corso di Fondamenti di Informatica (Unificato)
Prof Aldo Franco Dragoni
c) Per uscire dal programma
Scelta: b
Scrivi il primo numero positivo: 2
Scrivi il secondo numero positivo: 6
Il prodotto dei due numeri è: 12
MENU'
a) Per calcolare il quoziente ed il resto della divisione tra due numeri positivi
b) Per calcolare il prodotto tra due numeri positivi
c) Per uscire dal programma
Scelta: p
Usa solo le lettere indicate nel Menu'
MENU'
a) Per calcolare il quoziente ed il resto della divisione tra due numeri positivi
b) Per calcolare il prodotto tra due numeri positivi
c) Per uscire dal programma
Scelta: a
Scrivi il primo numero positivo: -4
Scrivi il primo numero positivo: 0
Non puoi dividere per 0
Scrivi il primo numero positivo: 4
Scrivi il secondo numero positivo: -6
Scrivi il secondo numero positivo: 0
Non puoi dividere per 0
Scrivi il secondo numero positivo: 9
Il quoziente della divisione è: 2
Mentre il resto è: 1
MENU'
a) Per calcolare il quoziente ed il resto della divisione tra due numeri positivi
b) Per calcolare il prodotto tra due numeri positivi
c) Per uscire dal programma
Scelta: c
(* Fine dell'esempio *)
60131 ANCONA - ITALY - Via Brecce Bianche
Phone (+39) 0712204390 - e-mail: [email protected]
Corso di Fondamenti di Informatica (Unificato)
Prof Aldo Franco Dragoni
#include <iostream>
using namespace std; // [15 PUNTI]
// questa procedura legge da tastiera i due numeri ed esegue gli opportuni controlli sui valori inseriti
void leggi_numeri(int& pri, int& sec, bool flag)
{
int temp = 0;
do{
do{
cout << "\nScrivi il primo numero positivo: ";
cin >> pri;
}while(pri < 0);
if(pri == 0 && flag)
cout << "\nNon puoi dividere per 0\n";
}while(pri == 0 && flag);
do{
do{
cout << "\nScrivi il secondo numero positivo: ";
cin >> sec;
}while(sec < 0);
if(sec == 0 && flag)
cout << "\nNon puoi dividere per 0\n";
}while(sec == 0 && flag);
if(pri < sec)
{
temp = pri;
pri = sec;
sec = temp;
}
}
60131 ANCONA - ITALY - Via Brecce Bianche
Phone (+39) 0712204390 - e-mail: [email protected]
//PUNTI 4
Corso di Fondamenti di Informatica (Unificato)
Prof Aldo Franco Dragoni
// questa funzione calcola il resto della divisione senza utilizzare il %
int resto(int num1, int num2)
// PUNTI 2
{
int acc = num1;
while (acc >= num2) acc -= num2;
return acc;
}
// questa funzione calcola il quoziente della divisione senza utilizzare il /
int quoziente(int num1, int num2)
// PUNTI 2
{
int c=0, acc = num2;
while (acc <= num1){
acc += num2;
c++;
}
return c;
}
// questa funzione calcola il prodotto senza utilizzare il *
int prodotto(int num1, int num2)
{
int acc = 0;
while (num2 > 0){
acc += num1;
num2--;
}
return acc;
}
60131 ANCONA - ITALY - Via Brecce Bianche
Phone (+39) 0712204390 - e-mail: [email protected]
// PUNTI 2
Corso di Fondamenti di Informatica (Unificato)
Prof Aldo Franco Dragoni
int main()
// PUNTI 4
{
int primo, secondo;
char s;
do{
do{
cout << "\nMENU'\n";
cout << "a) Per calcolare il quoziente ed il resto della divisione tra due numeri positivi\n";
cout << "b) Per calcolare il prodotto tra due numeri positivi\n";
cout << "c) Per uscire dal programma\n";
cout << "Scelta: ";
cin >> s;
if(s != 'a' && s != 'b' && s!= 'c')
cout << "Usa solo le lettere indicate nel Menu'\n";
}while(s != 'a' && s != 'b' && s != 'c');
switch(s)
{
case 'a':
leggi_numeri(primo,secondo,true);
cout << "\nIl quoziente della divisione e': " << quoziente(primo,secondo)
<< "\nMentre il resto e': " << resto(primo,secondo) << endl;
break;
case 'b':
leggi_numeri(primo,secondo,false);
cout << "\nIl prodotto dei due numeri e': " << prodotto(primo,secondo) << endl;
break;
}
}while(s != 'c');
system("PAUSE");
return 0;
}
60131 ANCONA - ITALY - Via Brecce Bianche
Phone (+39) 0712204390 - e-mail: [email protected]