C++

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

Download Code::Blocks

Come editor di testo, compatibile con molti linguaggi esiste questo programmino qua per chi non lo conoscesse

Download Notepad++ 5.8.6

Qui potete trovare le funzioni nelle loro rispettive librerie (ammesso che sappiate il nome della funzione)

Cerca in C++

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();
    }
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License