SOMMA FRAZIONI PROBLEMA: Scrivere un programma che, date

SOMMA FRAZIONI
PROBLEMA:
Scrivere un programma che, date in input due frazioni, stampi a video la loro somma.
ANALISI:
Dopo aver letto il numeratore e il denominatore di ogni frazione, il programma richiama la funzione
per il calcolo del mcm (denominatore comune), dopodiché convertirà le due funzioni inserite a quel
denominatore richiamando la funzione converti_numeratore. Infine il programma effettuerà la
somma dei numeratori convertiti.
FUNZIONI UTILIZZATE:
•int calcolo_mcm (int a, int b): calcola il mcm tra i denominatori
•int converti_numeratore(int mcm, int den, int num): converte il numeratore di una frazione
—————————————————————
CALCOLATRICE
PROBLEMA:
Scrivere un programma che simuli una calcolatrice, avente le operazioni di somma, sottrazione,
moltiplicazione, divisione, inverso di un numero, potenza e radice quadrata.
ANALISI:
Il programma si servirà di una funzione per ogni operazione richiesta.
All'inizio leggerà il primo numero, dopodichè inizierà un ciclo while che avrà termine quando
l'utente digiterà =.
All'interno di questo ciclo il programma richiederà l'operazione da compiere e, con uno switch,
richiamerà la funzione corrispondente mettendo il risultato nella variabile ris.
FUNZIONI UTILIZZATE:
• void stampaMenu(): stampa il menu con la scelta delle operazioni
• double somma(double, double): calcola la somma tra due numeri
• double sott(double, double): calcola la differenza tra due numeri
• double prodotto(double, double): calcola il prodotto tra due numeri
• void quozResto(double, double, &int,&int): calcola il quoziente ed il resto tra due numeri
• double opposto(double): calcola il numero di segno opposto ad un numero dato
• double radice(double): calcola la radice quadrata di un numero
• double potenza (double n1, double n2): la potenza di un numero elevato ad un altro numero
——————————————————————————
POTENZA
PROBLEMA:
Scrivere un programma che calcoli la potenza di un numero elevato ad un altro numero utilizzando
una funzione.
ANALISI:
Il programma leggerà la base e l'esponente della potenza, dopodichè richiamerà la funzione potenza,
passandogli questi due dati. La funzione potenza moltiplicherà la base per se stessa per un numero
di volte pari all'esponente. Considerare anche il caso di esponente negativo.
FUNZIONI UTILIZZATE:
•
double potenza (int, int): calcola la potenza di un numero elevato ad un altro numero
————————————————————————
DATA VALIDA
PROBLEMA:
Scrivere un programma che verifichi se una data inserita è valida.
ANALISI:
Il programma leggerà giorno mese e anno della data da tastiera, dopodichè richiamerà la funzione
data_valida che verificherà la validità della data. La funzione controllerà prima il mese, poi l'anno e
infine il giorno, mettendo a confronto quest'ultimo con la variabile globale max_giorni che contiene
il numero massimo di giorni del mese inserito, calcolato con uno switch all'interno della funzione
(se viene inserito il mese n°2 il programma richiamerà la funzione bisestile, che verifica se l'anno
inserito è bisestile oppure no).
La funzione data_valida restituirà 0 se la data è valida, 1 se è sbagliato il giorno, 2 se è sbagliato il
mese e 3 se è sbagliato l'anno.
FUNZIONI UTILIZZATE:
•
int data_valida(int g, int m, int a): verifica se la data inserita è valida
•
int bisestile(int a): verifica se l'anno inserito è bisestile
———————————————————————————
NUMERI PRIMI
PROBLEMA:
Scrivere un programma che stampa i primi 50 numeri primi che utilizza una funzione che verifica se
un numero è primo.
ANALISI:
Il programma è composto da un ciclo che avrà termine quando il contatore dei numeri primi trovati
arriva a 50.
All'interno del ciclo verrà richiamata la funzione primo, passandogli un valore intero che partirà da
1 e si incrementerà ad ogni ciclo. Se questo valore passato alla funzione è primo, la funzioni
ritornerà 1 e il numero verrà stampato, altrimenti la funzione ritornerà 0 e il numero non verrà
stampato.
FUNZIONI UTILIZZATE:
•
int primo(int): verifica se il valore passato è un numero primo
CALENDARIO PERPETUO
PROBLEMA:
Scrivere un programma che, inserita una data in forma numerica, restituisca il giorno di quella data
in forma letterale.
ANALISI:
Il programma leggerà il giorno, il mese e l'anno della data, verificherà la sua validità con le funzioni
dell'esercizio data_valida e se la data inserita è valida richiamerà la funzione stampa_giorno la
quale, richiamando a sua volta la funzione distanza, calcolerà la distanza in giorni tra la data inserita
e l'1 gennaio 1901.
Dopodichè questa data verrà divisa per 7 e il resto darà il giorno della data inserita, tenendo conto
che se si ottiene resto 0 il giorno sarà uguale a quello del 1° gennaio 1901 (martedi) , se si ottiene
resto 1 il giorno sarà mercoledì e così via.
FUNZIONI UTILIZZATE:
• int data_valida(int, int, int): verifica validità della data inserita
• int bisestile(int): verifica se l'anno inserito è bisestile
• long int distanza(int, int, int): calcola la distanza in giorni tra la data inserita e l'1
gennaio 1901
• void stampa_giorno(int, int, int): stampa il giorno calcolato
———————————————————————————————
INSEGNA LUMINOSA
Realizzare un programma che simuli un’insegna luminosa che a seconda della scelta effettuata
- Scorre orizzontalmente
- si sposta in modo casuale cambiando colore
- abbia una cornice di rettangoli che si aprono e si chiudono intorno al nome del locale
******************************************
*
*
*
Birreria da Franz
*
*
*
*****************************************
Utilizzare opportune funzioni.
Per l'effetto animazione usare il codice proposto di seguito.
*/
/* clock example */
#include <time.h>
#include <stdio.h>
#include <iostream.h>
#include <iostream>
#include <dos.h>
#include <windows.h>
#include <conio2.h>
using namespace std;
void gotoxy(int x, int y)
{
COORD coor;
HANDLE hOutput;
hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
coor.X = x;
coor.Y = y;
SetConsoleCursorPosition(hOutput,coor);
}
int main(void)
{
clock_t start, end;
start = clock();
// delay(2000);
Sleep(1000);
end = clock();
cout<<(end-start)/1000<<"\n";
//printf("The time was: %f\n", (end - start) / CLK_TCK);
Sleep(5000);
gotoxy(20,20);
cout<<" CIAO";
Sleep(5000);
clrscr;
system("CLS");
gotoxy(30,20);
cout<<" CIAO";
system("PAUSE");
return 0;
}