Numar de vizitatori unici

duminică, 19 ianuarie 2014

Citirea si afisarea unui vector

Acest program citeste de la tastatura un sir de numere, le memoreaza si le afiseaza in aceasi ordine in care au fost introduse.

#include <iostream.h>
int main()
{
    int i, x, a[5];
    cout<<"x= "; cin>>x;            //declararea nr total de numere ce vor fi introduse
        for (i=0; i<x; i++)                //bucla pentru citire numere
    {
        cout<<"a["<<i<<"]= ";
        cin>>a[i];
    }
    cout<<"numerele sunt: ";
    for (i=0; i<5; i++)                //bucla pentru afisare numere
    {
        cout<<a[i]<<" ";
    }
return 0;
}   


vineri, 27 ianuarie 2012

Incrementarea si Decrementarea unei variabile

       In limbajul C++, folosim des incrementari si decrementari, mai ales in sintaxa for pentru a ridica sau cobora valoarea unei variablie.

Tipuri de incrementare:
  • incrementarea unei variabile cu doua sau mai multe unitati:

      Se considera variabila i=4. Pentru a rdica valoarea variabilei la 6 trebuie sa o incrementam cu 2 unitati:
i=i+2;
sau
i+=2;
La fel pentru decrementare:
i=i-2;
sau
i-=2;

  • Incrementarea cu o singura unitate:

       Acest tip de incrementare este cel mai des utilizat in acest limbaj, el stand la baza celor mai multi algoritmi. Forma cea mai des folosita este var++, in traducere insemnand var+1:
i=i++;
sau
i=i+1;
sau
i+=1;
  •  Incrementarea inainte si dupa o operatie:

    Se da urmatorul cod:
    int n=15,k=3,v=0,x=0;
    v=n/++k;                 //k devine 4 inainte de executarea functiei div
    k=3;
    x=n/k++;                 //k devine 4 dupa executarea functiei div
    cout<<v<<endl<<x;
          Observam ca datele de intrare n si k raman neschimbate pe toata durata executarii codului. In urma executarii operatiei programul va afisa:
    3
    5

    Acelasi lucru se intampla si la decrementare.

    miercuri, 25 ianuarie 2012

    Eficienta agloritmilor si optimizarea lor

           Optimizarea este procesul prin care un algoritm devine cât mai eficient posibil, de cele mai multe ori punându-se accent pe timpul de executie, dar si pe spatiul ocupat de acesta.
           Numim un algoritm eficient atunci cand numarul de pasi pentru a-l finaliza este redus la valoarea cea mai mica, acest lucru micsorand timpul de executie.


         
          Stim deja ca un algoritm trebuie sa posede urmatoarele proprietati:
    Generalitate – un algoritm destinat rezolvarii unei probleme trebuie sa permita obtinerea rezultatului pentru orice date de intrare nu numai pentru valori particulare ale acestora
    Finitudine – un algoritm trebuie sa admita o descriere finita si fiecare dintre prelucrarile pe care le contine trebuie sa poata fi executata in timp finit. Prin intermediul algoritmilor nu pot fi prelucrate structuri infinite.
    Rigurozitate – prelucrarile algoritmului trebuie specificate riguros, fara ambiguitati. In orice etapa a executiei algoritmului trebuie sa se stie exact care este urmatoarea etapa si cum poate fi executata aceasta.
    Eficienta – algoritmii pot fi efectiv utilizati doar daca folosesc resurse de calcul in volum acceptabil. Resursele de calcul se refera la spatiul necesar stocarii datelor si timpul necesar executiei prelucrarilor.

         Pentru a optimiza un program si a-l face sa ruleze mai eficient trebuie sa reducem ordinul de complexitate fara a altera functiile programului:
    •      Un bun exemplu aici ar fi inlocuirea lui for cu while, deoarece, in bucla lui for instructiunea este repetata de un numar de ori impus de noi, spre deosebire de while, unde bucla este intrerupta imediat ce algoritmul ajunge la rezultatul final:
    •  While este mai eficient decat do while deoarece testeaza conditia la inceputul algoritmului, iar daca aceasta este falsa nu intra in bucla. 
    • De asemenea, utilizarea functiilor recursive sporeste cu mult eficienta unui program si micsoreaza timpul de executie.
    • Folosirea sintaxei if in programele nerecursive reprezinta de cele mai multe ori o alegere ineficienta, irosindu-se astfel mai multa memorie si lungind timpul de executie al programului.
    Exemplu:
    if (conditie1)            if (conditie1 || conditie2)
    executa actiune;          executa actiune;
        else 
    if (conditie2)
    executa actiune;

           O tehnica foarte cunoscuta si utilizata de programatori este metoda backtracking, aceasta fiind folosita pentru a solutiona o problema atunci cand nu stim cu ce sa incepem; algoritm ce ia la rand fiecare posibilitate pentru a solutiona problema si care afiseaza rezultatul corect odata obtinut.  O putem numi o metoda buna din punct de vedere al rezolvarii problemei, dar una ineficienta d.p.d.v al eficientei si timpului de executie.

    marți, 24 ianuarie 2012

    Actualizare blog

             
          

    Salutare!
        
              Am sa incep prin a va spune ca m-am bucurat cand am observat ca, in ciuda faptului ca nu am mai postat pe acest blog de aproximativ 8 luni, interesul oamenilor a crescut, tot mai multi accesand lista de algoritmi.
           Blogul a fost creat in special cu scopul de a pastra programele si algoritmii cu care lucrez, acesta fiind si motivul pentru care nu detine o interfata foarte prietenoasa. In acelasi timp am vrut ca aceste informatii sa fie utile si accesibile celor incepatori in limbajul de programare C++ si sa-i ajute sa inteleaga modul cum functioneaza fiecare algoritm, prin alaturarea lui de un limbaj in pseudocod. Bineanteles, ca pentru aceasta sunt necesare un minim de cunostinte despre programare, iar din dorinta de eficienta nu am putut sa explic fiecare linie de cod in detaliu.
            Acestea fiind spuse am decis sa actualizez acest blog cu algoritmi si programe noi, eventual si cu o interfata mai placuta. De asemenea astept commenturile voastre cu opinii, intrebari si sugestii referitoare la subiect.Puteti comenta pe blog sau la adresa de email de mai jos, eventual daca aveti sugestii sau doriti sa publicati ceva puteti trimite pe adresa de email (insotit de numele dvs.in cazul in care doriti sa il public la sfarsit la rubrica "recomandat de:").
            Impreuna putem crea un spatiu virtual in care sa pastram lucrurile pentru care am muncit invatand, ca atunci cand cineva apropiat ne cere ajutorul, sa-i putem recomada un link in care se afla toate informatiile necesare, fara a mai trebui sa o ia de la 0.
            Este foarte posibil ca urmarind evolutia acestui blog sa putem depasi sfera actualului limbaj  de programare si sa putem pune la un loc, intr-un website, informatii utile din diverse domenii.

    Adresa email:


    vineri, 6 mai 2011

    Culori

    Dupa cum poate a-ti observat, in programele pe care le-am urcat la "Download Link", sunt schimbate culorile, atat fundalul cat si textul.
    Acest lucru a fost realizat cu ajutorul functiei  system("color xy"), unde:
    x=culoarea de fundal;
    y=culoarea textului;
    Spre exemplu, daca vrem sa avem fundalul gri iar textul verde vom scrie in program           system("color 72");






    Codul sursa pentru programul de mai sus este urmatorul:
    #include<iostream.h>
    int main()
    {
       system("color 72");
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       cout<<"Culoare text\n";
       system ("pause");    //are rolul de a face o pauza la sfarsitul programului pentru a vedea textul
    }

    Lista culori

    0 = Negru
    1 = Albastru
    2 = Verde
    3 = Aqua
    4 = Rosu
    5 = Purpuriu
    6 = Galben
    7 = Alb
    8 = Gri
    9 = Albastru deschis
    A = Verde deschis
    B = Aqua deschis
    C = Rosu deschis
    D = Purpuriu deschis
    E = Galben deschis
    F = Alb stralucito

    luni, 2 mai 2011

    Vecinii unui numar

    C++Pseudocod
    #include<iostream.h>
    int main()
    {
    int a,b,n;
    cout<<"Introduceti numarul caruia doriti sa ii aflati vecinii ";
    cin>>n;
    a=n-1;
    b=n+1;
    cout<<"Vecinii numarului "<<n<<" sunt "<<a<<" si "<<b;
    return 0;
    }
    main()
    intreg a,b,n;
    scrie "Introduceti numarul caruia doriti sa ii aflati vecinii ";
    citeste n;
    a=n-1;
    b=n+1;
    scrie "Vecinii numarului " n sunt a si b;
    sfarsit;

    duminică, 1 mai 2011

    Ghiceste numarul

     Programul de mai jos genereaza in secret un numar de la 1 la 10 iar tu trebuie sa il ghicesti introducand numere de la tastatura. Se poate obtine o gama mai larga de numere prin modificarea liniei 8 (numar = rand() % 10 + 1)

    #include <stdio.h>                                                              Download Link
    #include <stdlib.h>
    #include <time.h>
    int main ()
    {
      int numar, ghiceste;
       srand ( time(NULL) );            //initializeaza numarul
        numar = rand() % 10 + 1;      //genereaza numarul
      do
      {
        printf ("Ghiceste numarul cuprins intre 1 si 10: ");
        scanf ("%d",&ghiceste);
        if (numar<ghiceste) puts ("Numarul este mai mic");
        else if (numar>ghiceste) puts ("Numarul este mai mare");
      }
      while (numar!=ghiceste);

      puts ("Felicitari, ai ghicit numarul!");
      system ("pause");                               //pauza la sfarsitul programului
      return 0;
    }