čtvrtek 9. února 2012

Rozloučení s céčkem

     Zametla jsem si ve své školní složce, promazala jsem hromadu smetí a vybrané věci jsem si tam zanechala, možná pro chvíle stesku XD... tak se chci o pár těch krás podělit, určitě to všichni ocení :D

můj oblíbíbenec
ROZKLAD ČÍSLA NA SOUČET ČÍSEL Z FIBONACCIHO POSLOUBNOSTI:
#include <iostream> #include <vector>

double pocet=20;
std::vector<double> fib (int pocet);
double nejblizsi_cislo (double cislo);

int main()
{
    using namespace std;

    for(int i=1; i<=50; i++){
    int cislo=i;
    int roz;
    int roz2;
    int roz3;

     if(cislo==nejblizsi_cislo(cislo)){cout << cislo << " = " << nejblizsi_cislo(cislo) << endl;}

    else{
        roz=cislo-nejblizsi_cislo(cislo);
        if(roz==nejblizsi_cislo(roz)){cout << cislo << " = " << nejblizsi_cislo(cislo) << " + " << roz << endl;}
    else{
            roz2=roz-nejblizsi_cislo(roz);
            if(roz2==nejblizsi_cislo(roz2)){cout << cislo << " = " << nejblizsi_cislo(cislo) << " + " << nejblizsi_cislo(roz) << " + " << roz2 << endl; }
    else{
                roz3=roz2-nejblizsi_cislo(roz2);
                if(roz3==nejblizsi_cislo(roz3)){cout << cislo << " = " << nejblizsi_cislo(cislo) << " + " << nejblizsi_cislo(roz) << " + " << nejblizsi_cislo(roz2) << " + " << roz3 << endl; }
     else{
                    cout << "cislo se rozlozi na vic nez 4 cisla z fibbonaciho posloupnosti" << endl;
  } } } } }
    return 0;
}

std::vector<double> fib (int pocet){

    using namespace std;
    vector<double> vec;
    double a1=1;
    double a2=1;
    vec.push_back(a1);
    vec.push_back(a2);

    for(int i=2; i<pocet; i++){
        vec.push_back(vec[i-2]+vec[i-1]);
    }
    return vec;
}

double nejblizsi_cislo (double cislo){

    using namespace std;
    double c;
    for(int i=0; i<pocet; i++){
        if(cislo==fib(pocet)[i]){c=cislo;}
        if(fib(pocet)[i]>cislo){c=fib(pocet)[i-1]; break;}
    }
    return c;
}

MONTY HALL PROBLEM
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <vector>

int N=10000;
bool zvolene_dvere ();

int main()
{
    using namespace std;
    double vysl;
    srand(time(0));
    rand()/RAND_MAX;
    int cetnost=0;

    for(int i=0; i<N; i++){
        if(zvolene_dvere()){cetnost++;}
    }
    vysl=1.0*cetnost/N;
    cout << vysl << endl;
    return 0;
}

bool zvolene_dvere (){

    using namespace std;
    bool pravda=false;
    vector<int> dvere;
    int pozice_auto;
    int otevrene_dvere;
    int vybrane_dvere;
    int konecne_dvere;

    for(int i=0; i<3; i++){
        dvere.push_back(0);
    }
    pozice_auto=int(3*rand()/RAND_MAX);
    dvere[pozice_auto]=1;
    vybrane_dvere=int(3*rand()/RAND_MAX);

    for(int i=0; i<3; i++){
        if(i!=vybrane_dvere and i!=pozice_auto){
            otevrene_dvere=i; break;
   } }

    for(int i=0; i<3; i++){
        if(i!=otevrene_dvere and i!=vybrane_dvere){
            konecne_dvere=i; break;
   } }
    
   if(dvere[konecne_dvere]==1){pravda=true;}
   return pravda;
}

ODHALENÍ PRVOČÍSEL
#include <iostream>
#include <vector>
#include <cmath>

int n=149;
bool prvok(int n);
std::vector<int> posl (int n);

int main()
{
    using namespace std;

    if(prvok(n)==true){cout << n << " je prvocislo" << endl;}
    else{cout << n << " neni prvocislo" << endl;}
    return 0;
}
// zjisti jestli je n prvocislo
bool prvok(int n){

    bool pravda=true;
    if (n<2){pravda=false;}

    for(int i=2; i<n; i++){
        if (n%i==0){pravda=false; break;}
    }

return pravda;
}

// vector prvocisel do cisla n nebo nizsiho
std::vector<int> posl (int n){

    using namespace std;
    vector<int> pos;

    for(int i=2; i<=n ;i++)

    if (prvok(i)){pos.push_back(i);}

return pos;
}

HAMMINGOVA ČÍSLA - dělitelná 2, 3 a 5
#include <iostream>
#include <vector>

bool hammi (int n);

int main()
{
    using namespace std;
    double N=20;
    vector<double> posl;
    posl.push_back(1);

    for(double i=2; posl.size()<N; i++){
        if(hammi(i)){posl.push_back(i);}
    }

    cout << posl[N-1] << endl;

    return 0;
}

bool hammi (int n){

    using namespace std;
    bool pravda=false;
    while(n%2==0) n/=2;
    while(n%3==0) n/=3;
    while(n%5==0) n/=5;
    if(n==1){pravda=true;}

    return pravda;
}

     Takovýchto krasavců mám víc, ale myslíš že toho už bylo dost, s céčkem končím... sbohem... :)

Žádné komentáře:

Okomentovat