Sunteți pe pagina 1din 21

( http://infoliceu.webnode.

com/ ) INFORMATICA IN LICEU


(http://italianul.3x.ro/proiect/index.htm)
(http://ro.wikipedia.org/wiki/C_(limbaj_de_programare))

(http://www.profu.info/limbajul-c/#)
1. Sortarea crescatoarea a unui tablou unidimensional in C++
#include<iostream.h>
typedef int sir[25];
sir v;
int i, n, ok, aux;
void main()
{
cout<< n= ;
cin>>n;
for(i=1;i<=n;i++)
{
cout<< v["<<i<<"]= ;
cin>>v[i];
}
for(i=1;i<=n;i++)
cout<<v[i]<< ;
//sortarea crescatoare
do{
ok=1;
for(i=1;i<=n-1;i++)
if(v[i]>v[i+1])
{
// interschimbare
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
ok=0;
}
}while(ok!=1);
cout<< <<endl;
for(i=1;i<=n;i++)
cout<<v[i]<< ;
}
2. Cautarea binara intr-un tablou unidimensional - C++
#include<iostream.h>
#include<math.h>
typedef int sir[25];
sir v;
int i,n,li,ls,lm, gasit;
void main()
{
cout<< n= ;
cin>>n;
cout<< Cauta elementul = ;
cin>>x;
for(i=1;i<=n;i++)
{
cout<< v["<<i<<"]= ;
cin>>v[i];
}
for(i=1;i<=n;i++)
cout<<v[i]<< ;
li=1;
ls=n;
gasit=0;
while((li<=ls)&&(!gasit))
{
lm=floor((li+ls)/2);
if(v[lm]<x)
{
li=lm+1;
}
else if(v[lm]==x)
{
cout<< l-am gasit pe pozitia <<lm;
gasit=1;
}
else ls=lm-1;
}
}
3. Interclasarea a doua tablouri unidimensionala in C++
#include<iostream.h>
typedef int sir[25];
sir a,b,c;
int n,m,i,j,k;
void main(void)
{
cout<< Introduceti lungimile celor 2 vectori a si b= ;
cin>>m>>n;
// cititi elementele celor 2 vectori ordonati crescatori
for(i=1;i<=m;i++)
{
cout<< a["<<i<<"]= ;
cin>>a[i];
}
for(i=1;i<=n;i++)
{
cout<< b["<<i<<"]= ;
cin>>b[i];
}
// interclasarea
i=1;
j=1;
k=0;
while((i<=m)&&(j<=n))
{
if(a[i]<b[j])
{
k++;
c[k]=a[i];
i++;
}
else {
k++;
c[k]=b[j];
j++;
}
}
// adaugam elementele ramase neparcurse
if(i<=m)
{
while(i<=m)
{
k++;
c[k]=a[i];
i++;
}
}
if(j<=n)
{
while(j<=n)
{
k++;
c[k]=b[j];
j++;
}
}
// afisez vectorul interclasat
for(i=1;i<=k;i++)
cout<<c[i]<< <<endl;
}

==========================================================================

(http://the1teacher.com/articole/liceu/programare/probleme-cu-vectori/)
vectori
Easy AdSense by UnrealTablouri unidimensionale
prima problema
Problema 1. Se considera un vector x cu n numere reale. Sa se calculeze produsul
elementelor.
Problema 2. Se citeste un tablou unidimensional cu n (1<=n<=100) componente nume
re naturale. Se cere sa se calculeze si sa se afiseze suma elementelor din vecto
r care sunt divizibile cu o valoare naturala data a.
Problema 3. Se da un tablou unidimensional cu n (1<=n<=100) componente numere na
turale. Sa se verifice daca componentele sunt in ordine crescatoare de la stanga
la dreapta, si in sa se afiseze un mesaj corespunzator.
Problema 4. Se citeste un tablou unidimensional cu n (1<=n<=100) componente nume
re naturale Se cere sa se construiasca si sa se afiseze un nou vector cu compone
ntele patrate perfecte ale vectorului initial.
Problema 5. Sa se scrie un program C++ care sa realizeze inversarea unui vector
:
a) in acelasi vector si fara a utiliza un vector suplimentar
b) intr-un alt vector.
Problema 1
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main(void)
{
// declaram variabilele pe care le vom utiliza in program
double x[100], p;
int n, i;
clrscr();
cout<< Dati numarul elementele ale tabloului n = ;cin>>n;
cout<< Dati elementele tabloului <
for(i = 1; i <= n; i++)
{
cout<< x["<<<"]= ; cin>>x[i];
}
getch();
cout<<< Vectorul initial este <
for(i = 1; i <= n; i++)
{
cout.width(6);
cout<
}
p = 1; // suma elementelor din vector
for(i = 1; i <= n; i++)
p = p * x[i];
cout<<< Produsul elementelor este = <<
cout<<<<< Apasati tasta ENTER pentru terminarea programului ;
getch();
}
Top
Problema 2
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main(void)
{
// declaram variabilele pe care le vom utiliza in program
unsigned int x[100], a, n, i, s;
clrscr();
cout<< Dati numarul elementele ale tabloului n = ;cin>>n;
cout<< Dati elementele tabloului <
for(i = 1; i <= n; i++)
{
cout<< x["<<<"]= ; cin>>x[i];
}
cout<< Dati valoarea a = ;;cin>>a;
getch();
s = 0; // suma elementelor care indeplinesc cerinta problemei
for(i = 1; i <= n; i++)
if(x[i] % a == 0)
s = s + x[i];
cout<< Suma elementelor din vector divizibile cu <<< este = <<
cout<<<<< Apasati tasta ENTER pentru terminarea programului ;
getch();
}
Top
Problema 3
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main(void)
{
// declaram variabilele pe care le vom utiliza in program
unsigned int x[100], n, i, ordine;
clrscr();
cout<< Dati numarul elementele ale tabloului n = ;cin>>n;
cout<< Dati elementele tabloului <
for(i = 1; i <= n; i++)
{
cout<< x["<<<"]= ; cin>>x[i];
}
getch();
ordine = 1; // presupunem ca elemente din vector sunt in ordine crescatoare
for(i = 1; i <= n-1; i++) if(x[i] > x[i+1])
ordine = 0;
if(ordine == 1)
{
cout<< Elementele sunt in ordine crescatoare de la stanga la dreapta : <
for(i = 1; i <= n; i++)
{
cout.width(6);
cout<
}
}
else
cout<< Elementele NU sunt in ordine crescatoare de la stanga la dreapta ! ;
cout<<<<< Apasati tasta ENTER pentru terminarea programului ;
getch();
}
Top
Problema 4
#include
#include
#include
void main(void)
{
// declaram variabilele pe care le vom utiliza in program
unsigned int x[100], y[100], n, i, j;
clrscr();
cout<< Dati numarul elementele ale tabloului n = ;cin>>n;
cout<< Dati elementele tabloului <
for(i = 1; i <= n; i++)
{
cout<< x["<<<"]= ; cin>>x[i];
}
getch();
j = 0; // numarul de elemente din noul vector
for(i = 1; i <= n; i++)
{
if(sqrt(x[i]) == int(sqrt(x[i])))
{
j++;
y[j] = x[i];
}
}
cout<< Elementele patrate perfecte sunt : <
for(i = 1; i <= j; i++)
{
cout.width(6);
cout<
}
cout<<<<< Apasati tasta ENTER pentru terminarea programului ;
getch();
}
Top
Problema 5
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main(void)
{
// declaram variabilele pe care le vom utiliza in program
unsigned int x[100], y[100], n, i, j, aux;
clrscr();
cout<< Dati numarul elementele ale tabloului n = ;cin>>n;
cout<< Dati elementele tabloului <
for(i = 1; i <= n; i++)
{
cout<< x["<<<"]= ; cin>>x[i];
y[i]=x[i];
}
getch();
cout<<< Punctul a ) <
cout<<< Elementele vectorului inainte de inversare sunt : <
for(i = 1; i <= n; i++)
{
cout.width(6);
cout<
}
for(i = 1; i <= n/2; i++)
{
aux = x[i];
x[i] = x[n-i+1];
x[n-i+1]=aux;
}
cout<<< Elementele vectorului dupa inversare sunt : <
for(i = 1; i <= n; i++)
{
cout.width(6);
cout<
}
for(i = 1; i <= n; i++) x[i]=y[i]; //revenim la vectorul neinversat
cout<<< Punctul b ) <
cout<<< Elementele vectorului inainte de inversare sunt : <
for(i = 1; i <= n; i++)
{
cout.width(6);
cout<
}
for(i = 1; i <= n; i++)
y[i] = x[n-i+1];
cout<<< Elementele vectorului dupa inversare sunt : <
for(i = 1; i <= n; i++)
{
cout.width(6);
cout<
}
cout<<<<< Apasati tasta ENTER pentru terminarea programului ;
getch();
}
==========================================================================
(http://infoliceu.webnode.com/exercitii-in-c-/set-2-vectori/)

1. Se citeºte un vector cu n componente întregi. Se cere:


a) Sã se ordoneze crescãtor elementele vectorului;
b) Sã se permute circular stânga elementele vectorului ordonat cu o poziþie.
#include<iostream.h>
int a[100],n;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
}
void afisare()
{
for(int i=1;i<=n;i++) cout<<a[i]<" ";
cout<<endl;
}
void sortare()
{ int aux;
for(int i=1;i<=n-1;i++)
for(int j=i+1;j<=n;j++)
if(a[i]>a[j])
{aux=a[i];a[i]=a[j];a[j]=aux;}
}
void permutare_stanga()
{
int aux=a[1];
for(int i=1;i<n;i++) a[i]=a[i+1];
a[n]=aux;
}
void main()
{citire();
afisare();
sortare();
cout<<"dupa sortare\n";
afisare();
cout<<"dupa permutare\n";
permutare_stanga();
afisare();
}

2. Se citeºte un vector cu n componente întregi. Se cere:


a) Sã se elimine din vector elementele nule dacã acestea existã;
b) Sã se înlocuiascã fiecare element al noului vector cu media aritmeticã a celorlalte e
lemente din vector.
#include<iostream.h>
int a[100],n;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
}

void afisare(int a[100],int n)


{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}

void elimina_nule()
{ int b[100];
int j=0;
for(int i=1;i<=n;i++)
if(a[i]!=0) {j++;b[j]=a[i];}
cout<<"fara elemente nule\n";
afisare(b,j);
}
void inlocuire()
{ float b[100];
for(int i=1;i<=n;i++)
{
b[i]=0;
for(int j=1;j<=n;j++)
if(j!=i) b[i]=b[i]+a[j];
b[i]=b[i]/(n-1);
}
cout<<"dupa inlocuire";
for(i=1;i<=n;i++) cout<<b[i]<<" ";
cout<<"\n";
}

void main()
{citire();
cout<<"elementele citite\n";
afisare(a,n);
elimina_nule();
inlocuire();
}

3. Se dã un ºir x de n elemente întregi. Sã se caute ultimul element impar mai mare decât
15.
#include<iostream.h>
int x[100],n;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"x["<<i<<"]=";cin >>x[i];
}
}

void afisare(int a[100],int n)


{
for(int i=1;i<=n;i++) cout<<x[i]<<" ";
cout<<endl;
}
void cauta()
{int i=n;int gasit=0;
while(gasit==0&&i>0)
{ if(x[i]>15 && x[i]%2==1) gasit=1;
else i--;
}
if(i>0)cout<<x[i];
else cout<<"nu s-a gasit niciun element impar mai mare ca 15\n";
}
void main()
{citire();
cauta();
}

4. Sã se scrie un program care :


a) citeºte un vector cu n componente numere reale.
b) ºterge un element din vector care se aflã pe o poziþie datã k.
#include<iostream.h>
#include<stdlib.h>
int a[100],n,k;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
cout<<"k=";cin>>k;
if(k<1||k>n) {cout<<"stergerea nu se poate efectua";exit(0);}
}

void afisare()
{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}

void sterge(int k)
{
for(int i=k;i<n;i++)
a[i]=a[i+1];
n--;
}
void main()
{
citire();
sterge(k);
afisare();
}

5. Sã se scrie un program care determinã media aritmeticã a elementelor pare dintr-un


vector folosind un subprogram (procedurã sau funcþie).
#include<iostream.h>
#include<stdlib.h>
int a[100],n,k;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
}

void afisare()
{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}

float medie_pare()
{
float s=0;
int c=0;
for(int i=1;i<=n;i++)
if(a[i]%2==0){c++;s=s+a[i];}
if(c!=0)cout<<"media elementelor pare="<<s/c<<endl;
else cout<<"nu exista elemente pare\n";
}
void main()
{
citire();
medie_pare();
}

6. Se citeºte de la tastaturã un numãr natural nenul n ºi alte n numere întregi . Se cere


:
a) Suma elementelor pare de pe poziþii impare
b) Media aritmeticã a elementelor pozitive.

#include<iostream.h>
#include<stdlib.h>
int a[100],n,k;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
}

void afisare()
{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}

float medie_pozitive()
{
float s=0;
int c=0;
for(int i=1;i<=n;i++)
if(a[i]>0){c++;s=s+a[i];}
if(c!=0)cout<<"media elementelor pare="<<s/c<<endl;
else cout<<"nu exista elemente pare\n";
}
void suma()
{
int s=0;
for(int i=1;i<=n;i++)
if(a[i]%2==0&&i%2==1)s=s+a[i];
cout<<"suma elementelor pare de pe pozitii impare="<<s<<endl;
}
void main()
{
citire();
medie_pozitive();
suma();
}

7. Se citeºte de la tastaturã un numãr natural nenul n ºi alte n numere întregi. Se cere


sã se afiºeze câte elemente prime conþine ºirul citit ( se va folosi un subprogram pentru
a stabili cã un numãr este prim sau nu).
#include<iostream.h>
#include<stdlib.h>
int a[100],n,k;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
}

void afisare()
{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}

int prim(int n)
{
if(n<2)return 0;
int i=2;
while(i<=n/2)
if(n%i==0) return 0; else i++;
return 1;
oid cate_prime()
{
int c=0;
for(int i=1;i<=n;i++)
if(prim(a[i]))c++;
cout<<"nr elemente prime="<<c<<endl;
}
void main()
{
citire();
cate_prime();
}
8. Se citeºte de la tastaturã un numãr natural nenul n ºi alte n numere întregi. Se cere
sã se afiºeze numãrul de apariþii în ºir ale unui numãr citit de la tastaturã.
#include<iostream.h>
#include<stdlib.h>
int a[100],n,k;

void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
cout<<"k=";cin>>k;
}

void afisare()
{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}
void nr_aparitii()
{
int c=0;
for(int i=1;i<=n;i++)
if(a[i]==k)c++;
cout<<k<<" apare de "<<c<<" ori\n";
}

void main()
{
citire();
nr_aparitii();
afisare();
}

9. Se citeºte de la tastaturã un numãr natural nenul n ºi alte n numere întregi. Se cere


sã se afiºeze valoarea minimã din ºir , precum ºi numãrul sãu de apariþii în cadrul ºirului
#include<iostream.h>
#include<stdlib.h>
int a[100],n,k;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
}

void afisare()
{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}
int min()
{
int m;
m=a[1];
for(int i=1;i<=n;i++)
if(m>a[i])m=a[i];
return m;
}
void cate_min()
{
int m=min();
int c=0;
for(int i=1;i<=n;i++)
if(m==a[i]) c++;
cout<<"nr de elemente minime="<<c<<endl;
}

void main()
{
citire();
cout<<"val min="<<min();
cate_min();
}

10. Se citeºte un vector cu n componente numere reale. Sã se înlocuiascã ultimele k elem


ente ale vectorului cu valoarea 1. Valoarea k este datã de la tastaturã (k<n).
#include<iostream.h>
#include<stdlib.h>
int a[100],n,k;
void citire()
{
cout<<"nr de elemente n=";cin >>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin >>a[i];
}
cout<<"k=";cin>>k;
if(k<1||k>=n) {cout<<"date incorecte";exit(0);}
}

void afisare()
{
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}

void inlocuieste()
{
for(int i=n-k+1;i<=n;i++) a[i]=-1;
}

void main()
{
citire();
afisare();
inlocuieste();
afisare();
}
11. Se citesc de la tastaturã numere întregi pânã la citirea numãrului 13. Se cere sã se ca
culeze ºi sã se afiºeze câte numere prime s-au citit precum ºi numãrul celor neprime.
#include<iostream.h>
#include<stdlib.h>
long unsigned int n;
void perfect()
{
long unsigned int s=0;
for(int i=1;i<=n/2;i++)
if(n%i==0)s=s+i;
if(s==n) cout<<"numar perfect\n";
else cout<<"numarul nu e perfect\n";
}
void main()
{
cout<<"n=";cin>>n;
perfect();
}
==========================================================================

S-ar putea să vă placă și