Numar de vizitatori unici

duminică, 1 mai 2011

Citirea si afisarea unei matrici bidimensionale

In programul de mai jos se citeste si tipareste o matrice. Initial se citesc numarul de linii si de coloane ale matricei (m si n). Observati modul in care am afisat matricea - de asa natura incat pe ecran sa arate ca o matrice.

#include<iostream.h>                                                             Download Link
int main()
{
   int m,n,i,j,a [50] [50];
   cout<<"m="; cin>>m;
   cout<<"n="; cin>>n;
   for (i=0;i<n;i++)
       for(j=0;j<n;j++)
       {
          cout <<"a["<<i+1<<','<<j+1<<"]=";
          cin>>a[i] [j];
          cout<<endl;
       }
   for (i=0;i<m;i++)
   {
     for (j=0;j<n;j++) cout<<a[i] [j]<<' ';
     cout<<endl;
   }
}

miercuri, 27 aprilie 2011

Ecuatia algebrica de gradul 1 cu o necunoscuta, cu coeficienti reali

Programul urmator rezolva ecuatia de gradul 1 de forma a*x+b=0.

C++
Pseudocod
#include<iostream.h>
int main()
{
    float a,b,x;
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    if (a)
    {
      x=-b/a;
      cout<<x;
    }
    else
        if (b==0) cout<<"infinitate de solutii";
    else cout<<"nu are solutie";
        return 0;
}
main
inceput
real a,b,x;
scrie "a="; citeste a;
scrie "b="; citeste b;
daca (a≠0) atunci
      x=-b/a;
      scrie x;

altfel
      daca (b=0) scrie "infinitate de solutii";
            altfel scrie "nu are solutie";
      sfarsit daca (b=0);
sfarsit daca (a≠b);
sfarsit;

joi, 21 aprilie 2011

Maximul dintre doua numere

Programul care urmeaza calculeaza maximul dintre doua numere citite de la tastatura:

C++
Pseudocod

#include<iostream.h>
int main ()
{ int a,b,max;
   cout<<"a="; cin>>a;
   cout<<"b="; cin>>b;
   if (a>b) max=a;
   else max=b;
   cout<<"maximul este "<<max;
return 0;
}

main
inceput
intreg a,b,max;
scrie "a="; citeste a;
scrie "b="; citeste b;
daca (a>b) atunci max=a;
                 altfel max=b;
sfarsit daca
scrie "maximul este" max;
sfarsit

Media artimetica a doua numere intregi

Exercitiu: Se citesc doua valori intregi a si b. Se cere sa se afiseze media aritmetica a lor.
C++
Pseudocod

#include<iostream.h>
int main ()
{ int a,b;
   float medie;
   cout<<"a="; cin>>a;
   cout<<"b="; cin>>b;
   medie=float (a+b)/2;
   cout<<"media este "<<medie;
return 0;
}


main
inceput
intreg a,b;
real medie;
scrie "a="; citeste a;
scrie "b="; citeste b;
medie=(a+b)/2;
scrie "media este" medie;
sfarsit

Valoarea absoluta a unui numar real

Programul urmator citeste x (de tip float) si tipareste |x|. Cum a fost realizat?
  1. Se testeaza daca x este mai mare sau egal cu 0.

  2. In cazul in care conditia este indeplinita, se evalueaza x (a doua expresie). In acest caz expresia conditionala, in ansamblul ei, ia valoarea pe care o retine variabila x. Aceasta valoare se tipareste.

  3. Daca x este strict mai mic decat 0, expresia evaluata este -x si aceasta este valoarea pe care o ia expresia conditionala si care este tiparita.
#include <iostream.h>
int main ()
{ float x;
   cout<<"x=";
   cin>>x;
   cout<<(x>=0?x:-x);
   return 0;
}

luni, 11 aprilie 2011

Programe C++ clasa a 11-a


  1. Palindrom                                                Download Link
  2. Factorialul unui numar                               Download Link
  3. Sirul lui Fibonachi                                     Download Link
  4. Cel mai mare divizor comun                       Download Link
  5. Functia Ackerman                                     Download Link
  6. Functia Manna Pnueli                                Download Link
  7. Testarea unui numar prim                           Download Link
  8. Combinari                                                 Download Link





1.

Palindromul unui numar

C++ Pseudocod

#include<iostream.h>
int main()
{
int copie,invers,c,n;
invers=0;
cout<<"Introduceti numarul pentru a-l testa daca este palindrom: ";
cin>>n;
copie=n;
while(n!=0)
{
c=n%10;
invers=invers*10+c;
n=n/10;
}
if(copie==invers)
cout<<"Numarul tastat este palindrom \n";
else
cout<<"Numarul tastat nu este palindrom \n";
cout<<"Inversul numarului introdus este "<<invers;
return 0;
}

main
inceput
intreg copie,invers,c,n;
invers=0;
scrie "Introduceti numarul pentru a-l testa daca este palindrom: "
citeste n
copie=n
cat timp n!=0
{
c=n mod 10
invers=invers*10+c
n=n div 10
}
daca copie=invers atunci
scrie "Numarul este palindrom"
scrie "Inversul numarului introdus este " invers
altfel
scrie "Numarul tastat nu este palindrom"
scrie "Inversul numarului introdus este " invers
sfarsit

2.

C++ Pseudocod

#include<iostream.h>
int fact (int n)
{
if (n==0) return 1;
else return n*fact(n-1);
}

int main()
{
int n;
cout<<"Introduceti numarul de la tastatura";
cin>>n;
cout<<"!"<<n<<"="<<fact(n);
return 0;
}

fact (n)
inceput
intreg n
daca n=1 atunci returneaza 1
altfel returneaza n*fact de n-1
sfarsit

main
inceput
intreg n
scrie "Introduceti numarul de la tastatura"
citeste n
scrie "factorial de n este egal cu" fact (n)
sfarsit





3.

C++ Pseudocod
//Sirul lui fibonachi (varianta recursiva)

#include<iostream.h>
long fib (long n)
{
if (n <= 1) return n;
else return fib(n-1)+fib(n-2);
}

int main ()
{
int n;
cout<<"Introduceti numarul ";
cin>>n;
cout<<"Rezultatul este "<<fib(n);
return 0;
}

fib (n)
inceput
intreg n
daca n<=1 atunci returneaza n
altfel returneaza fib(n-1)+fib(n-2)
sfarsit daca
sfarsit

main
inceput
intreg n
scrie "Introduceti numarul "
citeste n
scrie "Rezultatul este " fib(n)
sfarsit






4.

C++ Pseudocod

#include<iostream.h>
int main ()
{
int a,b,c,d;
cout<<"Introduceti primul numar: ";
cin>>a;
cout<<"Introduceti al doilea numar: ";
cin>>b;
c=b;
d=a;
while (a!=b)
if (a>b) a=a-b;
else b=b-a;
cout<<"Cel mai mare divizor comun al numerelor "<<d<<" si "<<c<<" este "<<a;
return 0;
}

main
inceput
intreg a,b,c,d
scrie "Introduceti primul numar: "
citeste a
scrie "Introduceti al doilea numar: "
citeste b
c=b
d=a
cat timp a!=b
{
daca a>b atunci a=a-b
altfel b=b-a
scrie "Cel mai mare divizor comun al numerelor d si c este a"
}
sfarsit






5.

C++ Pseudocod
//Functia Ackerman (varianta recursiva)

#include<iostream.h>
long long ack(long m, long n)
{
if (!m) return n+1;
else
if (!n) return ack(m-1,1);
else return ack(m-1, ack(m,n-1));
}

int main()
{
long long m,n;
cout<<"Introduceti prima cifra: ";
cin>>m;
cout<<"Introduceti al doilea numar: ";
cin>>n;
cout<<ack(m,n);
return 0;
}

ack (m,n)
inceput
intreg m,n
daca m=0 atunci returneaza n+1
altfel
daca n=0 atunci returneaza ack(m-1, 1)
altfel returneaza ack(m-1, ack(m, n-1))
sfarsit

main
inceput
intreg m,n
scrie "Introduceti prima cifra: "
citeste>>m;
scrie "Introduceti al doilea numar: "
citeste n
afiseaza ack(m,n)
sfarsit






6.

C++ Pseudocod
//Functia Manna Pnueli (varianta recursiva)
#include<iostream.h>
int submannapnueli(int x)
{
if(x>=12)
return x-1;
else
return submannapnueli(submannapnueli(x+2));


int main()
{
int x;
cout<<"Manna Pnueli.\n\n";
cout<<"Introduceti numarul: ";
cin>>x;
cout<<"Rezultatul este " <<submannapnueli(x);
}
submannapnueli (x)
inceput
intreg x
daca x>=12 atunci returneaza x-1
altfel returneaza submannapnueli de submannapnuelli de x+2
sfarsit 

main
inceput
intreg n
scrie "Manna Pnueli"
scrie "Introduceti numarul"
citeste n
scrie "Rezultatul este" submannapnueli (x)
sfarsit




7.

C++ Pseudocod

#include<iostream.h>
int main()
{
long int n, prim, d;
cout<<"Introduceti numarul ";
cin>>n;
prim=1;
d=2;
while (d<=n/2)
{
if (n%d==0)
prim=0;
d=d+1;
}
if (prim==1)
cout<<"Numarul este prim";
else cout<<"Numarul nu este prim";
return 0;
}

main
inceput
intreg n,prim,d
scrie "Introduceti numarul "
citeste n
prim=1
d=2
cat timp d<=n div 2
{
daca n mod d=0 atunci
prim=0
d=d+1
}
daca prim=1 atunci
scrie "Numarul este prim"
altfel scrie "Numarul nu este prim"
sfarsit





8.

C++ Pseudocod
//Combinari (varianta recursiva)
#include<iostream.h>
int combinari(int c,int k)
{
if (k==0)
return 1;
else
if (k>c)
return 0;
else
return (combinari(c-1,k)+combinari(c-1,k-1));
}

int main()
{
int k,c;
cout<<"Combinari.\n\n"
<<"Combinari de ";
cin>>c;
cout<<"Luate cate ";
cin>>k;
cout<<"Rezultatul combinarii este " <<combinari(c,k);
}

combinari (c,k)
inceput
intreg c,k
daca k=0 atunci returneaza 1
altfel
daca k>c atunci returneaza 0
altfel returneaza
combinari de c-1,k+combinari de c-1 si k-1
sfarsit

main
inceput
intreg k,c
scrie "Combinari de"
citeste c
scrie "luate cate"
citeste k
scrie
"Rezultatul combinarii este" combinari (c,k)
sfarsit

miercuri, 6 aprilie 2011

1. Instructiunea decizionala simpla:
if(expresie)                    
instr1;
else                                       //alternativa else este optionala
instr2;

Exemplu:

C++ Pseudocod

if(a>0)
cout<<"pozitiv";
else
cout<<"negativ";
daca (a>0)
scrie pozitiv;
altfel
scrie negativ;
Instrucţiunea de mai sus afişează textul "pozitiv" dacă a > 0 şi "negativ" în
caz contrar.

2. Instructiunea decizionala multipla

switch (selector)
{
case 'v1': instr1; break;
case 'v2': instr2; break;
case 'v3': instr3; break;
default instr;
} 
 
Exemplu: 
 
C++ Pseudocod
#include<iostream.h>
int main()
{int x;
cin>>x;
switch (x)
{
case 1: cout<<"pozitiv"; break;
case 2: cout<<"negativ"; break;
case 3: cout<<"neutru"; break;
case 4: cout<<"etc..."; break;
}
return 0; }
main
inceput
intreg x
citeste x
switch (x)
{
cazul 1 scrie pozitiv
cazul 2 scrie negativ
cazul 3 scrie neutru
cazul 4 scrie etc...
}
sfarsit


3. Instructiunea repetitiva while 
Cu test initial:
cat timp (conditie)
executa actiune;
Cu test final:
repeta
bloc de instructiuni
pana cand (conditie)
 
Exemple:
C++Pseudocod
//cu test initial
while (v==0)               
c=v+a;
//cu test initial
cat timp v=0 c=v+a
//cu test final
do 
{c=v+a;
}
while (c==100)
//cu test final
 executa c=v+a cat timp c=100


4. Instructiunea repetitiva for
In cazul buclei repetitive for, codul specificat se executa de un numar specificat de ori.
Exemplu: for (i=0;i<=n;i++) sir de actiuni... 
  •  unde 'i' este un contor pentru numarul de repetari, sau variabila de initializare a buclei;
  •   'n' reprezinta numarul maxim de repetari (este un numar prestabilit); 
  •  'i++' incrementeaza valoarea cu o unitate (i+1); ca si alternativa exista 'i--' (i-1); 
Instructiunea de mai sus executa o bucata de cod (sir de actiuni) pana cand
contorul ('i') devine mai mic sau egal cu 'n'.

Exemplu:
C++Pseudocod
#include int main() 

int i,n;
cin>>n;
 for (i=1;i<=n;i++) 
cout<<"Acesta este un mesaj repetitiv \n";
 return 0;
 }
main
inceput
intreg i,n
citeste n
 pentru i=1, i<=n, i++
scrie "Acesta este un mesaj repetitiv"
sfarsit