Su questa pagina inizieremo a programmare un po' in C++
Intanto iniziamo a scaricare un compilatore aggiornato qui, che funziona su Windows XP/Vista/7, Linux e Mac OS X
Come editor di testo, compatibile con molti linguaggi esiste questo programmino qua per chi non lo conoscesse
Qui potete trovare le funzioni nelle loro rispettive librerie (ammesso che sappiate il nome della funzione)
Lancio di un dado
Il primo esercizio su cui volevo porre la vostra attenzione è quello sul lancio dei dadi, molto facile da fare, soprattutto dopo essere riusciti a trovare un'escamotage per avere un random soddisfacente
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<conio.h> #include <time.h> using namespace std; int main(){ system ("title Lancio di un dado"); int a, b; cout<<"Inserisci il numero di lanci: "; cin>>b; cout<<"\n"; srand(time(NULL)); int c[6]; for(int j=0;j<=5;j++){ c[j]=0; } for(int i=1;i<=b;i++){ a=(rand()%6)+1; cout<<a<<"\t"; for(int d=0; d<=5; d++){ if( a==d+1){ c[d]=c[d]+1; } } } cout<<"\n\n"; for (int e=0; e<=5; e++){ cout<<"Numero di volte che esce "<<e+1<<": "<<c[e]<<"\n"; } getch(); }
Decadimento atomico
Un altro programmino, con un sorgente derivato da questo è quello del decadimento atomico
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<conio.h> #include <time.h> using namespace std; int main(){ system ("title Decadimento atomico"); int a, b, f; cout<<"Inserisci il numero di atomi iniziali: "; cin>>b; cout<<"\nInserisci il numero per il quale l'atomo decade: "; cin>>f; while(f>6 or f==0){ while(f>6){ cout<<"\nUn dado ha solo sei facce. Non mi prendere in giro e non inserire di nuovo un numero pi"<<char(163)<<" grande di 6: "; cin>>f; } while (f==0){ cout<<"\nUn dado ha sei facce. Non mi prendere in giro e non inserire di nuovo lo 0: "; cin>>f; } } cout<<"\n"; srand(time(NULL)); int c[6]; while (b>0){ for(int j=0;j<=5;j++){ c[j]=0; } for(int i=1;i<=b;i++){ a=(rand()%6)+1; cout<<a<<"\t"; for(int d=0; d<=5; d++){ if( a==d+1){ c[d]=c[d]+1; } } } cout<<"\n\n"; for (int e=0; e<=5; e++){ cout<<"Numero di volte che esce "<<e+1<<": "<<c[e]<<"\n"; } b=b-c[f-1]; cout<<"\nNumero di atomi finali: "<<b<<"\n\n"; system("pause"); cout<<"\n"; } }
Ago di Buffon
Cose simili si possono scrivere per l'ago di Buffon
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<conio.h> #include<time.h> #include<math.h> #define PI 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214 using namespace std; int main(){ system ("title Ago di Buffon"); int c, f=0,g=0; float a, b, d, e; double p; cout<<"Inserisci la distanza tra le due linee: "; cin>>a; cout<<"\nInserisci la lunghezza dell'ago: "; cin>>b; cout<<"\nInserisci il numero di lanci da eseguire: "; cin>>c; srand(time(NULL)); cout<<"Posizione\t\t\t\tAngolo\n"; for(int i=1;i<=c;i++){ d=(rand()%100)*a/200; cout<<d<<"\t\t\t"; e=(rand()%100)*PI/100; cout<<e<<"\t\t\t"; if(d<=b/2*sin(e)){ f=f+1; cout<<"Tangente"; }else{ g=g+1; cout<<"Non tangente"; } cout<<"\n"; } p=2*b*c/(a*f); cout<<"\nNumero di lanci tangenti: "<<f<<"\n"; cout<<"Numero di lanci non tangenti: "<<g<<"\n"; cout<<"Stima di Pi: "<<p<<"\n"; getch(); }
Nota: Non ho messo la condizione che impedisca ad a di essere maggiore di b. La vuole inserire qualcuno?
Calcolo di Pi
Se poi invece volete provare a calcolare Pi greco (devo dire che è lento e adulterato però)
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<conio.h> #include<time.h> #include<math.h> #define PI 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214 using namespace std; int main(){ system ("title Ago di Buffon"); int f=0,g=0; float a, b, d, e; double p; cout<<"Inserisci la distanza tra le due linee: "; cin>>a; b=5*a/6; srand(time(NULL)); for(int i=1; ;i++){ d=(rand()%100)*a/200; e=(rand()%100)*PI/100; if(d<=b/2*sin(e)){ f=f+1; }else{ g=g+1; } p=2*b*i/(a*f); cout<<p<<"\n"; system("cls"); } getch(); }