You are on page 1of 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<<"]= ;

i<=n. } // interclasarea i=1. while((i<=m)&&(j<=n)) { if(a[i]<b[j]) { k++.cin>>a[i]. j++. c[k]=b[j]. } } // adaugam elementele ramase neparcurse if(i<=m) { while(i<=m) { k++. c[k]=a[i]. cin>>b[i].i++) cout<<c[i]<< <<endl. } for(i=1. k=0. } } // afisez vectorul interclasat for(i=1. . i++. j=1.i<=k. j++.i++) { cout<< b["<<i<<"]= . c[k]=a[i]. } else { k++. } } if(j<=n) { while(j<=n) { k++. c[k]=b[j]. i++.

p. cout<<< Vectorul initial este < for(i = 1. 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. i <= n.h> void main(void) { // declaram variabilele pe care le vom utiliza in program double x[100]. Sa se verifice daca componentele sunt in ordine crescatoare de la stanga la dreapta. i++) { cout<< x["<<<"]= . i++) { cout. Problema 3.com/articole/liceu/programare/probleme-cu-vectori/) vectori Easy AdSense by UnrealTablouri unidimensionale prima problema Problema 1. si in sa se afiseze un mesaj corespunzator. int n. Se considera un vector x cu n numere reale. clrscr(). i++) p = p * x[i]. cin>>x[i]. cout<<< Produsul elementelor este = << . } getch(). 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. Se citeste un tablou unidimensional cu n (1<=n<=100) componente nume re naturale.width(6).cin>>n.h> #include<math. i <= n. Problema 1 #include<iostream. Problema 4. Problema 2. cout< } p = 1.h> #include<conio. // suma elementelor din vector for(i = 1.} ========================================================================== (http://the1teacher. i. Se cere sa se calculeze si sa se afiseze suma elementelor din vecto r care sunt divizibile cu o valoare naturala data a. i <= n. cout<< Dati numarul elementele ale tabloului n = . Se da un tablou unidimensional cu n (1<=n<=100) componente numere na turale. cout<< Dati elementele tabloului < for(i = 1. Sa se calculeze produsul elementelor.

h> #include<math.h> #include<conio. i <= n. if(ordine == 1) { cout<< Elementele sunt in ordine crescatoare de la stanga la dreapta : < .cin>>a. n. getch(). } Top Problema 2 #include<iostream. } cout<< Dati valoarea a = . i <= n. n. a. cout<< Suma elementelor din vector divizibile cu <<< este = << cout<<<<< Apasati tasta ENTER pentru terminarea programului . i. } getch().h> #include<conio. i++) { cout<< x["<<<"]= . i++) if(x[i] % a == 0) s = s + x[i]. i <= n-1. s. ..cin>>n. i <= n. ordine. i++) if(x[i] > x[i+1]) ordine = 0. clrscr(). cout<< Dati elementele tabloului < for(i = 1. cin>>x[i].cout<<<<< Apasati tasta ENTER pentru terminarea programului .h> void main(void) { // declaram variabilele pe care le vom utiliza in program unsigned int x[100].h> #include<math. getch(). s = 0. cout<< Dati numarul elementele ale tabloului n = . i++) { cout<< x["<<<"]= . // presupunem ca elemente din vector sunt in ordine crescatoare for(i = 1. cout<< Dati numarul elementele ale tabloului n = cout<< Dati elementele tabloului < for(i = 1.cin>>n. i.h> void main(void) { // declaram variabilele pe care le vom utiliza in program unsigned int x[100]. clrscr(). cin>>x[i]. } Top Problema 3 #include<iostream. ordine = 1. // suma elementelor care indeplinesc cerinta problemei for(i = 1. getch().

i. j.h> #include<math. // numarul de elemente din noul vector for(i = 1. j = 0. } Top Problema 4 #include #include #include void main(void) { // declaram variabilele pe care le vom utiliza in program unsigned int x[100].h> #include<conio. i <= n. cout<< Dati numarul elementele ale tabloului n = . i++) { cout<< x["<<<"]= . i++) { if(sqrt(x[i]) == int(sqrt(x[i]))) { j++. i <= j.cin>>n. i++) { cout. y[100]. getch(). y[j] = x[i]. } Top Problema 5 #include<iostream. i <= n. . i <= n. cout< } cout<<<<< Apasati tasta ENTER pentru terminarea programului .for(i = 1. cout<< Dati elementele tabloului < for(i = 1. } getch().width(6).width(6). i++) { cout. clrscr(). cin>>x[i]. n. cout< } } else cout<< Elementele NU sunt in ordine crescatoare de la stanga la dreapta ! cout<<<<< Apasati tasta ENTER pentru terminarea programului . getch(). } } cout<< Elementele patrate perfecte sunt : < for(i = 1.h> void main(void) { .

i <= n. i++) { cout. i++) { cout<< x["<<<"]= . Se citeºte un vector cu n componente întregi. cout<< Dati numarul elementele ale tabloului n = .// declaram variabilele pe care le vom utiliza in program unsigned int x[100]. i <= n. //revenim la vectorul neinversat cout<<< Punctul b ) < cout<<< Elementele vectorului inainte de inversare sunt : < for(i = 1. i <= n. i <= n. } getch(). i <= n.width(6). i++) { cout. cout< } cout<<<<< Apasati tasta ENTER pentru terminarea programului . i++) { cout. i <= n/2. y[i]=x[i]. cin>>x[i]. } ========================================================================== (http://infoliceu.com/exercitii-in-c-/set-2-vectori/) 1. i <= n. x[i] = x[n-i+1]. j. cout<<< Punctul a ) < cout<<< Elementele vectorului inainte de inversare sunt : < for(i = 1. b) Sã se permute circular stânga elementele vectorului ordonat cu o poziþie. cout<<< Elementele vectorului dupa inversare sunt : < for(i = 1.width(6).cin>>n. i++) { cout. y[100]. i. x[n-i+1]=aux.webnode. cout<< Dati elementele tabloului < for(i = 1. i++) y[i] = x[n-i+1]. i++) { aux = x[i]. clrscr().width(6). } cout<<< Elementele vectorului dupa inversare sunt : < for(i = 1. i <= n. Se cere: a) Sã se ordoneze crescãtor elementele vectorului. cout< } for(i = 1. aux. . i++) x[i]=y[i]. getch(). cout< } for(i = 1. n. cout< } for(i = 1.width(6).

for(int i=1.i<=n.#include<iostream.j++) if(a[i]>a[j]) {aux=a[i]. for(int i=1.i++) a[i]=a[i+1].h> int a[100].j<=n.i++) for(int j=i+1.i<=n-1. afisare().} } void permutare_stanga() { int aux=a[1]. } } void afisare() { for(int i=1.i<=n. . cout<<endl.a[i]=a[j].i<n.n. void citire() { cout<<"nr de elemente n=".i++) cout<<a[i]<" ".cin >>n.i++) {cout<<"a["<<i<<"]=".a[j]=aux. a[n]=aux. } void main() {citire(). } void sortare() { int aux. for(int i=1.cin >>a[i].

n. cout<<"dupa sortare\n".i++) cout<<a[i]<<" ".i<=n. } 2. cout<<"dupa permutare\n". } void elimina_nule() { int b[100]. Se cere: a) Sã se elimine din vector elementele nule dacã acestea existã. cout<<endl.cin >>n.cin >>a[i]. void citire() { cout<<"nr de elemente n=". b) Sã se înlocuiascã fiecare element al noului vector cu media aritmeticã a celorlalte e lemente din vector.sortare(). .h> int a[100]. #include<iostream.int n) { for(int i=1.i++) {cout<<"a["<<i<<"]=". for(int i=1. afisare(). afisare(). permutare_stanga().i<=n. } } void afisare(int a[100]. Se citeºte un vector cu n componente întregi.

} 3.i<=n.i++) if(a[i]!=0) {j++.h> .j++) if(j!=i) b[i]=b[i]+a[j]. afisare(b. Se dã un ºir x de n elemente întregi. for(int i=1.i++) { b[i]=0. for(int j=1.n).i<=n. #include<iostream.i++) cout<<b[i]<<" ".b[j]=a[i].j<=n. cout<<"elementele citite\n".i<=n. for(int i=1. for(i=1. inlocuire(). } cout<<"dupa inlocuire". elimina_nule(). afisare(a. b[i]=b[i]/(n-1).j). cout<<"\n". Sã se caute ultimul element impar mai mare decât 15.int j=0.} cout<<"fara elemente nule\n". } void main() {citire(). } void inlocuire() { float b[100].

else cout<<"nu s-a gasit niciun element impar mai mare ca 15\n". for(int i=1. } void cauta() {int i=n. while(gasit==0&&i>0) { if(x[i]>15 && x[i]%2==1) gasit=1.int gasit=0.n. void citire() { cout<<"nr de elemente n=".int x[100]. } void main() {citire(). cout<<endl. } } void afisare(int a[100]. cauta().i<=n.i++) {cout<<"x["<<i<<"]=".i++) cout<<x[i]<<" ".cin >>x[i].int n) { for(int i=1. } 4. } if(i>0)cout<<x[i]. . else i--.i<=n. Sã se scrie un program care : a) citeºte un vector cu n componente numere reale.cin >>n.

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

i++) cout<<a[i]<<" ".s=s+a[i]. cout<<endl.h> #include<stdlib. } 5. .n. } float medie_pare() { float s=0. int c=0.i<=n.i++) {cout<<"a["<<i<<"]=". for(int i=1.afisare().cin >>n.cin >>a[i]. #include<iostream. } } void afisare() { for(int i=1. void citire() { cout<<"nr de elemente n=".} if(c!=0)cout<<"media elementelor pare="<<s/c<<endl. else cout<<"nu exista elemente pare\n". Sã se scrie un program care determinã media aritmeticã a elementelor pare dintr-un vector folosind un subprogram (procedurã sau funcþie).i<=n. for(int i=1.i++) if(a[i]%2==0){c++.i<=n.h> int a[100].k.

i++) {cout<<"a["<<i<<"]=".h> #include<stdlib. #include<iostream.k.n. } float medie_pozitive() { .i<=n. cout<<endl.cin >>n.} void main() { citire(). } } void afisare() { for(int i=1. for(int i=1.i++) cout<<a[i]<<" ". void citire() { cout<<"nr de elemente n=". } 6.h> int a[100]. Se cere : a) Suma elementelor pare de pe poziþii impare b) Media aritmeticã a elementelor pozitive. Se citeºte de la tastaturã un numãr natural nenul n ºi alte n numere întregi . medie_pare().cin >>a[i].i<=n.

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). medie_pozitive().i++) if(a[i]%2==0&&i%2==1)s=s+a[i].i<=n.} if(c!=0)cout<<"media elementelor pare="<<s/c<<endl.n. } void main() { citire(). #include<iostream. else cout<<"nu exista elemente pare\n". for(int i=1.i<=n.i++) if(a[i]>0){c++. cout<<"suma elementelor pare de pe pozitii impare="<<s<<endl. for(int i=1.i<=n.h> int a[100]. int c=0. } 7. void citire() { cout<<"nr de elemente n=".cin >>n.h> #include<stdlib.s=s+a[i]. for(int i=1.i++) .k. suma().float s=0. Se citeºte de la tastaturã un numãr natural nenul n ºi alte n numere întregi. } void suma() { int s=0.

int i=2.i++) cout<<a[i]<<" ". } } void afisare() { for(int i=1. cout<<endl.i<=n. } int prim(int n) { if(n<2)return 0. else i++. for(int i=1. return 1.cin >>a[i]. } void main() { citire(). while(i<=n/2) if(n%i==0) return 0. oid cate_prime() { int c=0.{cout<<"a["<<i<<"]=".i++) if(prim(a[i]))c++.i<=n. cate_prime(). cout<<"nr elemente prime="<<c<<endl. } .

} void nr_aparitii() { int c=0.cin >>a[i]. cout<<endl.cin >>n.cin>>k.8. Se citeºte de la tastaturã un numãr natural nenul n ºi alte n numere întregi.i<=n.i<=n. } void main() { . #include<iostream. for(int i=1.k.i<=n. cout<<k<<" apare de "<<c<<" ori\n".n. } cout<<"k=". } void afisare() { for(int i=1.h> #include<stdlib.i++) if(a[i]==k)c++. Se cere sã se afiºeze numãrul de apariþii în ºir ale unui numãr citit de la tastaturã.i++) {cout<<"a["<<i<<"]=".i++) cout<<a[i]<<" ". for(int i=1. void citire() { cout<<"nr de elemente n=".h> int a[100].

citire(). cout<<endl.i++) {cout<<"a["<<i<<"]=". precum ºi numãrul sãu de apariþii în cadrul ºirului #include<iostream.i<=n. m=a[1]. Se citeºte de la tastaturã un numãr natural nenul n ºi alte n numere întregi.k. Se cere sã se afiºeze valoarea minimã din ºir . return m.i<=n. nr_aparitii().i<=n. } int min() { int m.i++) cout<<a[i]<<" ". } } void afisare() { for(int i=1. for(int i=1.h> #include<stdlib.i++) if(m>a[i])m=a[i]. afisare().n. } .cin >>n. void citire() { cout<<"nr de elemente n=".cin >>a[i]. } 9. for(int i=1.h> int a[100].

} . cate_min().void cate_min() { int m=min(). } 10.i++) {cout<<"a["<<i<<"]=". for(int i=1. Se citeºte un vector cu n componente numere reale. Sã se înlocuiascã ultimele k elem ente ale vectorului cu valoarea 1.h> #include<stdlib.h> int a[100].cin>>k. cout<<"nr de elemente minime="<<c<<endl.k. void citire() { cout<<"nr de elemente n=".i<=n. #include<iostream.exit(0).i<=n.n.i++) if(m==a[i]) c++. if(k<1 k>=n) {cout<<"date incorecte".cin >>a[i]. Valoarea k este datã de la tastaturã (k<n).cin >>n. } void main() { citire(). } cout<<"k=". int c=0. for(int i=1. cout<<"val min="<<min().

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

} void main() { cout<<"n=".cin>>n.else cout<<"numarul nu e perfect\n". perfect(). } ========================================================================== .