domenica 2 maggio 2010

C++ - Torri di Hanoi

// Rocco Meli, 16.04.2010
// Torri di Hanoi

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <cmath>

// Dichiarazione variabili
int anelli;
int sorgente;
int destinazione;
int ausiliario;

// Prototipi di funzioni
void soluzionehanoi (int, int, int, int);

int main()
{
// Dichiarazione variabili locali
unsigned long mosse;
std::cout << std::endl;
std::cout << " TORRI DI HANOI" << std::endl;
std::cout << std::endl;
// Assegnazione numeri alle torri
std::cout << "Inserisci gli anelli da spostare: ";
std::cin >> anelli;
std::cout << std::endl;
std::cout << "Numero torre iniziale: ";
std::cin >> sorgente;
std::cout << std::endl;
std::cout << "Numero torre finale: ";
std::cin >> destinazione;
std::cout << std::endl;
std::cout << "Numero torra ausiliaria: ";
std::cin >> ausiliario;
std::cout << std::endl;
mosse = pow(2, anelli) - 1;
std::cout << "Serviranno " << mosse << " mosse per completare il gioco!" << std::endl;
std::cout << std::endl;
soluzionehanoi(anelli, sorgente, destinazione, ausiliario);
return 0;
}

// Funzione Hanoi
void soluzionehanoi (int anelli, int sorgente, int destinazione, int ausiliario)
{
if (anelli < 1)
{
return;
}
else
{
soluzionehanoi (anelli - 1, sorgente, ausiliario, destinazione);
std::cout << sorgente << " -> " << destinazione << std::endl;
soluzionehanoi (anelli - 1, ausiliario, destinazione, sorgente);
return;
}
}

C++ - Radice quadrata

// Rocco Meli, 15.04.2010
// Radice quadrata con algoritmo babilonese

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main()
{
// Dichiarazione variabili
long double radicandor;
long double radicen;
long double radicen1;
long double while1;
// Inizializzazione
radicen1 = 0;
while1 = 1;
std::cout << "Inserisci un radicando: " << std::endl;
std::cin >> radicandor;
radicen = radicandor; // Primo numero

while (while1 > 0.0000000000000001)
{
radicen1 = 0.5 * ( radicen + radicandor / radicen);
while1 = radicen - radicen1;
radicen = radicen1;
}
std::cout << "Radice di " << radicandor << " é circa: " << radicen1 << endl;

return 0;
}

C++ - Fibonacci II

// Rocco Meli, 13.04.2010
// Sequenza di fibonacci

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main()
{
// Dichiarazione variabili
int for1;
int numvis;
unsigned long numfib;
unsigned long numero1;
unsigned long numero2;
// Inizializzazione variabili
numero1 = 0;
numero2 = 1;

std::cout << "SEQUENZA DI FIBONACCI" << std::endl;
std::cout << "Quanti numeri vuoi visuaizzare? ";
std::cin >> numvis;

if (numvis == 1) // Numero 0
{
std::cout << "fibonacci(0) = 0" << std::endl;
}
else if (numvis == 2) // Primo numero
{
std::cout << "fibonacci(0) = 0" << std::endl;
std:cout << "fibonacci(1) = 1" << std::endl;
}
else if (numvis > 2 and numvis <= 93) // Sequenza fino a 93 numeri
{
std::cout << "fibonacci(0) = 0" << std::endl;
std::cout << "fibonacci(1) = 1" << std::endl;
for (for1 = 2; for1 <= numvis; for1++)
{
numfib = numero1 + numero2;
std::cout << "fibonacci (" << for1 << ") = " << numfib << std::endl;
numero1 = numero2;
numero2 = numfib;
}
}
else if (numvis > 93) // Limite memorizzazione variabili
{
std::cout << "Questo programma in C++ si limita a 93 numeri!" << endl;
}
else 
{
std::cout << "Non vi sono numeri da visuaizzare!" << std::endl;
}
return 0;
}

C++ - Elevazione a potenza

// Rocco Meli, 17.03.2010
// Programma per l'elevazione a potenza
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

// Definizione variabili
int base;
int esponente;
int esp;
int risultato;

int main()
{
std::cout << "Inserisci una base intera: ";
std::cin >> base; // Associa la base alla variabile base
std::cout << "" << endl; // Salta una riga
std::cout << "Inserisci un esponente intero: ";
std::cin >> esponente; // Associa l'esponente alla variabile esponente
std::cout << "" << endl; // Salta una riga
int risultato = 1;
for (int esp = 1; esp <= esponente; esp++) // moltiplica il risultato precedente per la base esponente volte
{
risultato *= base; // Moltiplica il risultato precedenta alla base
// L'operatore di assegnamento *= é obbligatorio (risultato=risultato*base non é valido)
}
std::cout << "Risultato: " << risultato << endl; // Stampa il risultato
std::cout << "" << endl; // Salta una riga
return 0;
}

mercoledì 21 aprile 2010

C++ - Fibonacci

// Rocco Meli, 12.04.2010
// Sequenza di Fibonacci

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <ctime>

unsigned long sequenzafib (unsigned long); // Prototipo di funzione

int main()
{
// Dichiarazione variabili locali
int scelta;
int numerivis1;
int numerovis2;
int for1;
unsigned int tempo;
clock_t inizio;
clock_t fine;
std::cout << "SEQUENZA DI FIBONACCI" << endl;
std::cout << "[1] Visualizza la sequenza fino all'ennesimo numero" << std::endl;
std::cout << "[2] Visulizza l'ennesimo numero" << std::endl;
std::cin >> scelta;
switch (scelta) 
{
case (1):
std::cout << "Quanti numeri vuoi visualizzare?" << std::endl;
std::cin >> numerivis1;
for (for1 = 0; for1 <= numerivis1; for1++) 
{
inizio = clock();
std::cout << "Fibonacci(" << for1 << ") = " << sequenzafib(for1) << endl;
fine = clock();
tempo = fine - inizio;
std::cout << tempo << " ticks" << std::endl;
}
break;
case (2):
std::cout << "Quale numero vuoi visualizzare?" << std::endl;
std::cin >> numerovis2;
std::cout << "Fibonacci(" << numerovis2 << ") = " << sequenzafib(numerovis2) << endl;
break;
default:
break;
}
return 0;
}



// Funzione Fibonacci
unsigned long sequenzafib (unsigned long numerofib)
{
if ((numerofib == 0) or (numerofib == 1))
{
return numerofib;
}
else
{
return sequenzafib(numerofib - 1) + sequenzafib(numerofib - 2);
}
}

C++ - Cerchio/Sfera

// Rocco Meli, 05.04.2010
// Cerchio/Sfera

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <cmath>

int main()
{
long double raggio;
long double circonferenza;
long double area;
long double superficie;
long double volume;

std::cout << "Inserisci il raggio: ";
std::cin >> raggio;
std::cout << std::endl;

circonferenza = 2 * raggio * M_PI;
area = M_PI * pow(raggio, 2);
superficie = 4 * M_PI * pow(raggio, 2);
volume = (double) 4/3 * M_PI * pow(raggio, 2);
std::cout << "Circonferenza cherchio di raggio " << raggio << " : " << circonferenza << std::endl;
std::cout << "Area cherchio di raggio " << raggio << " : " << area << std::endl;
std::cout << "Superficie sfera di raggio " << raggio << " : " << superficie << std::endl;
std::cout << "Volume sfera di raggio " << raggio << " : " << volume << std::endl;
return 0;
}

venerdì 16 aprile 2010

C++ - Maggiore

// Rocco Meli, 16.064.2010
// Maggiore tra n numeri

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main()
{
// Dichiarazione variabili
int numeri;
int for1;
long double maggiore;
long double numero;
std::cout << "MAGGIORE" << std::endl;
std::cout << std::endl;
std::cout << "Quanti numeri vuoi inserire? ";
std::cin >> numeri;
std::cout << std::endl;
if (numeri <= 0
{
std::cout << "Non ci sono numeri" << std::endl;
}
else if (numeri == 1)
{
std::cout << "Inserire numero: ";
std::cin >> numero;
std::cout << std::endl;
maggiore = numero;
std::cout << "Il numero maggiore é " << maggiore << std::endl;
}
else // Numeri > 1
{
std::cout << "Inserire numero: ";
std::cin >> numero;
std::cout << std::endl;
maggiore = numero;
for (for1 = 1; for1 < numeri; for1++)
{
std::cout << "Inserire numero: ";
std::cin >> numero;
std::cout << std::endl;
if (numero > maggiore) 
{
maggiore = numero;
}
}
std::cout << "Il numero maggiore é " << maggiore << std::endl;
}
return 0;
}

mercoledì 14 aprile 2010

C++ - Note GS (Conteggio Voti)

// Rocco Meli, 25.03.2010
// Programma per i conteggio di promossi/bocciati
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

// Definizione variabili
int partecipanti;
int nota; // Nota (1 bocciato, 2 passato, 3 e 4 raccomandato)
int passatinr; // Passati non raccomandati
int passatir; // Passati raccomandati
int passatitot; // Passati totali
int bocciati; // Bocciati
int for1; // Controllo for

int main ()
{
std::cout << "" << endl;
std::cout << "NOTE GS" << endl;
std::cout << "" << endl;
// Inizializzazione variabili
passatinr = 0;
passatir = 0;
passatitot = 0;
bocciati = 0;
for1 = 1;
std::cout << "Numero di parteipanti: " << endl;
std::cin >> partecipanti;
for (for1 = 1; for1 <= partecipanti; for1++) // Ripete per ogni partecipante
{
std::cout << "Inserisci nota (da 1 a 4): " << endl;
std::cin >> nota;
if (nota == 2
{
passatinr += 1;
}
else if (nota == 3)
{
passatir += 1;
}
else if (nota == 1
{
bocciati += 1;
}
else if (nota == 4)
{
passatir += 1;
}
else 
{
std::cout << "Nota non valida!" << endl;
for1 -= 1;
}
}
passatitot = passatir + passatinr;
std::cout << "Passati con raccomandazione: " << passatir << endl;
std::cout << "Passati senza raccomandazione: " << passatinr << endl;
std::cout << "Passati totali: " << passatitot << endl;
std::cout << "Bocciati: " << bocciati << endl;
std::cout << "Partecipenti totali: " << partecipanti << endl;
return 0;
}

C++ - Fattoriale II

// Rocco Meli, 14.04.2010
// Calcolo del fattoriale

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int main()
{
// Dichiarazione variabili
int fattori;
int for1;
unsigned long fattoriale;
// Inizializzazione variabili
fattoriale = 1;
std::cout << "Di che numero vuoi calcolare il fattoriale? ";
std::cin >> fattori;
for (for1 = fattori; for1 >= 1; for1--) // Fattoriale
{
fattoriale *= for1;
}
std::cout << fattori << "! = " << fattoriale << endl;
return 0;
}

C++ - Fattoriale

// Rocco Meli, 14.04.2010
// Calcolo del fattoriale

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

unsigned long fattoriale(unsigned long); // Prototipo di funzione

int main()
{
// Dichiarazione variabili
int fattori;
int for1;
// Inizializzazione variabili
for1 = 0;

std::cout << "Di che numero vuoi calcolare il fattoriale? ";
std::cin >> fattori;
for (for1 = 0; for1 <= fattori; for1++)
{
std::cout << for1 << "! = " << fattoriale(for1) << endl;
}
return 0;
}

// Definizione funzione fattoriale
unsigned long fattoriale(unsigned long n)
{
if (n <= 1) // Caso base (1!=0!=1)
{
return 1;
}
else  // Ricorsione
{
return n * fattoriale (n - 1);
}
}