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;
}