|
19. Sa se scrie un program care
verifica daca un numar introdus de la tastatura se gaseshte printre
elementele unui vector de dimensiune n<=100, shi in caz afirmativ sa
tipareasca pozitzia numarului in shir (cautare element cu
element).
#include <stdio.h> #include <conio.h> #include
<process.h>
void main () { int
n,m,i,gasit,v[100]; clrscr(); printf("
n = ");scanf("%d",&n); for
(i=0;i<n;i++){ printf("
v[%d]=
",i); scanf("%d",&v[i]); } printf("
Introducetzi numarul cautat m = ");scanf("%d",&m);
gasit=0; for
(i=0;i<n;i++) if
(v[i]==m){
printf(" Numarul %d a fost gasit in pozitzia %d
\n",m,i); gasit=1; break; } if
(!gasit) printf("\n Numarul %d nu a
fost gasit in vector",m); getch(); }
20. Sa se scrie un program care
verifica daca un numar introdus de la tastatura se gaseshte printre
elementele unui vector de dimensiune n<=100, shi in caz afirmativ sa
tipareasca pozitzia numarului in shir (cautare rapida prin injumatatzirea
itervalului intr-un vector ordonat).
#include <stdio.h> #include <conio.h> #include
<process.h>
void main () { int
n,nr,i,s,d,m,v[100]; clrscr(); printf("n
= ");scanf("%d",&n); for
(i=0;i<n;i++){ printf("v[%d]=
",i); scanf("%d",&v[i]); } printf("Introducetzi
numarul cautat nr =
");scanf("%d",&nr); s=0; d=n; do{
m=(s+d)/2; if
(nr<v[m])
d=m-1;
else if
(nr>v[m]) s=m+1; else{ printf("Numarul
a fost gasit in pozitzia %d
",m); getch(); exit(1); } } while
(s<=d); printf("Numarul nu a fost gasit in
sir"); getch(); }
21. Sa se scrie un program care
realizeaza concatenarea a doi vectori ordonatzi crescator, de dimensiune
n<50, rezultand un al treilea vector ordonat crescator care contzine
toate elementele celor doi vectori.
#include <stdio.h> #include <conio.h>
void main () { int
n,i,j,k,a[50],b[50],c[100]; clrscr(); printf("
n = ");scanf("%d",&n); for (i=0;i<n;i++){
/*elem vect
a*/ printf("
A[%d]=
",i); scanf("%d",&a[i]); } printf("\n"); /*elem
vect b*/ for
(j=0;j<n;j++){ printf("
B[%d]=
",j); scanf("%d",&b[j]); } i=j=k=0; do{ if
(a[i]<b[j]){ c[k]=a[i]; k++; i++; } else{ c[k]=b[j]; k++; j++; } } while
(i<n && j<n); if
(i<n) do{ c[k]=a[i]; k++; i++; } while
(i<n); else do{ c[k]=b[j]; k++; j++; } while
(j<n); for
(k=0;k<(n+n);k++) printf("\n
C[%d]= %d ",k,c[k]); getch(); }
22. Sa se sorteze un vector cu n
componente in ordinea crescatoare a elementelor prin metoda interclasarii
(bulelor).
#include <stdio.h> #include <conio.h>
void main(){ int
n,i,m,inter,v[100]; clrscr(); printf("n=
");scanf("%d",&n); for
(i=0;i<n;i++){ printf("v[%d]=",i); scanf("%d",&v[i]); } do{ inter=0; for
(i=0;i<n-1;i++) if
(v[i]>v[i+1])
{ m=v[i]; v[i]=v[i+1]; v[i+1]=m; inter=1; } } while
(inter==1); printf("\n Vectorul sortat crescator : "
); for
(i=0;i<n;i++) printf("\nv[%d]=
%d",i,v[i]); getch(); }
23. Sa se sorteze un vector cu n
componente in ordinea crescatoare a elementelor prin metoda
insertziei.
#include <stdio.h> #include <conio.h>
int cautapoz(int i,int v[100]){ int
s,d,m; s=0; d=i-1; do{ m=(s+d)/2; if
(v[i]<v[m]) d=m-1; else if
(v[i]>v[m]) s=m+1; else return
m; } while
(s<=d); return s; }
void main ()
{ int
n,i,j,p,t,v[100]; clrscr(); printf("n
= ");scanf("%d",&n); for
(i=0;i<n;i++){ printf("v[%d]=
",i); scanf("%d",&v[i]); } i=1; do{ p=cautapoz(i,v); t=v[i]; j=i-1; do{ v[j+1]=v[j]; j--; } while
(j>=p); v[p]=t; i++; } while
(i<n); for
(i=0;i<n;i++) printf("\nv[%d]=
%d",i,v[i]); getch(); }
24. Sa se sorteze un vector cu n
componente in ordinea crescatoare a elementelor prin metoda selectziei
(dupa o singura parcurgere).
#include <stdio.h> #include <conio.h>
void main(){ int
n,i,m,j,t,v[100],k; clrscr(); printf("n=
");scanf("%d",&n); for
(i=0;i<n;i++){ printf("v[%d]=",i); scanf("%d",&v[i]); } i=0; do{ j=i+1; m=i; do{ if
(v[j]<v[m]) m=j; j++; } while
(j<n); t=v[i]; v[i]=v[m]; v[m]=t; i++; } while
(i<n-1); printf("\n Vectorul sortat crescator : "
); for
(i=0;i<n;i++) printf("\nv[%d]=
%d",i,v[i]); getch(); }
25. Sa se faca un program care
efectueaza suma a doua matrici care au acelashi numar de linii shi
coloane.
#include <stdio.h> #include <conio.h>
void main(){ int
a[10][10],b[10][10],s[10][10],i,j,l,c; clrscr(); printf("\n
Introducetzi numarul de linii:
"); scanf("%d",&l); printf("
Introducetzi numarul de coloane:
"); scanf("%d",&c); clrscr(); printf("\n
Introducetzi elementele matricei A:\n"); for
(i=0;i<l;i++) for
(j=0;j<c;j++){ printf("
A[%d][%d]=
",i,j); scanf("%d",&a[i][j]); } clrscr(); printf("\n
Introduceti elementele matricei B:\n"); for
(i=0;i<l;i++) for
(j=0;j<c;j++){ printf("
B[%d][%d]=
",i,j); scanf("%d",&b[i][j]); } for
(i=0;i<l;i++) for
(j=0;j<c;j++) s[i][j]=a[i][j]+b[i][j]; clrscr(); printf("\n
Matricea A:\n"); for
(i=0;i<l;i++){ for
(j=0;j<c;j++) printf("%5d
",a[i][j]); printf("\n"); } printf("\n
Matricea B:\n"); for
(i=0;i<l;i++){ for
(j=0;j<c;j++) printf("%5d
",b[i][j]); printf("\n"); } printf("\n
Suma matricelor este:\n"); for
(i=0;i<l;i++){ for
(j=0;j<c;j++) printf("%5d
",s[i][j]); printf("\n"); } getch(); }
26. Sa se realizeze un program
care preia elementele negative dintr-o matrice shi le depune intr-un
vector. Sa se afisheze acel vector.
#include <stdio.h> #include <conio.h>
void main(){ int
m[10][10],i,j,l,c,k,v[100]; clrscr(); printf("
Introducetzi numarul de linii:
"); scanf("%d",&l); printf("
Introducetzi numarul de coloane:
"); scanf("%d",&c); clrscr(); printf("\n
Introducetzi elementele matricei: \n"); for
(i=0;i<l;i++) for
(j=0;j<c;j++){ printf("
M[%d][%d]=",i,j); scanf("%d",&m[i][j]); } k=0; for
(i=0;i<l;i++) for
(j=0;j<c;j++) if
(m[i][j]<0) v[k++]=m[i][j]; clrscr(); printf("Matricea
introdusa a fost: \n"); for
(i=0;i<l;i++){ for
(j=0;j<c;j++) printf("
%5d
",m[i][j]); printf("\n"); } printf("\nElementele
negative introduse in vector sunt:\n"); for
(i=0;i<k;i++) printf("
v[%d]= %d\n",i,v[i]); getch(); }
27. Se da o matrice cu l linii
shi c coloane (l,c<=10). Sa se realizeze un program care face suma
elementelor impare din matrice, pe fiecare coloana.
#include <stdio.h> #include <conio.h>
void main (){ int
l,c,i,j,m[10][10],s[10]; clrscr(); printf("
Introducetzi numarul de linii l=
"); scanf("%d",&l); printf("
Introducetzi numarul de coloane c=
"); scanf("%d",&c); clrscr(); printf("
Introducetzi elementele matricei:\n\n"); for
(i=0;i<l;i++) for
(j=0;j<c;j++){ printf("
M[%d][%d]=
",i,j); scanf("%d",&m[i][j]); } for
(j=0;j<c;j++) s[j]=0; for
(j=0;j<c;j++) for
(i=0;i<l;i++) if
(m[i][j]%2!=0) s[j]+=m[i][j]; clrscr(); printf("
Matricea introdusa :\n"); for
(i=0;i<l;i++){ for
(j=0;j<c;j++) printf("
%5d
",m[i][j]); printf("\n"); } printf("\n
Suma elemetelor impare de pe fiecare
coloana:\n"); for
(j=0;j<c;j++) printf("\n
s[j]= %d",s[j]); getch(); }
28. Se considera matricea
A=||a[i][j]|| de numere intregi, cu n linii shi m coloane. (n,m <=10).
Sa se construiasca variabila indexata v[i], ale carei n elemente sunt
valorile minime de elemente de matrice a[i][j] unde i=1..n.
#include <stdio.h> #include <conio.h>
void main(){ int
a[10][10],i,j,n,m,v[10],min,inter,nr; clrscr(); printf("
Introducetzi numarul de linii:
"); scanf("%d",&n); printf("
Introducetzi numarul de coloane:
"); scanf("%d",&m); clrscr(); printf("\n
Introducetzi elementele matricei: \n"); for
(i=0;i<n;i++) for
(j=0;j<m;j++){
printf("
A[%d][%d]=",i,j); scanf("%d",&a[i][j]); } for
(i=0;i<n;i++){ min=a[i][0]; for
(j=1;j<m;j++) if
(min>a[i][j]) min=a[i][j]; v[i]=min; } /*indexarea
crescatoare a vectorului v prin metoda interschimbarii
(bulelor)*/ do{ inter=0; for
(i=0;i<n-1;i++) if
(v[i]>v[i+1]){ nr=v[i]; v[i]=v[i+1]; v[i+1]=nr; inter=1; } }
while(inter); clrscr(); printf("Matricea
introdusa a fost: \n"); for
(i=0;i<n;i++){ for
(j=0;j<m;j++) printf("
%5d
",a[i][j]); printf("\n"); } printf("\n
Elementele minime indexate de pe fiecare linie a matricii
sunt:\n"); for
(i=0;i<n;i++) printf("
v[%d]= %d\n",i,v[i]); getch(); }
29. Se da o matrice patratica
(linii=coloane). Sa se afisheze elementele de pe diagonala
principala.
#include <stdio.h> #include <conio.h>
void main(){ int
m[10][10],i,j,l,c; clrscr(); printf("\n
Introducetzi numarul de linii si coloane l=c=
"); scanf("%d",&l); c=l; clrscr(); printf("\n
Introducetzi elementele matricei:\n"); for
(i=0;i<l;i++) for
(j=0;j<c;j++){ printf("
M[%d][%d]:",i,j); scanf("%d",&m[i][j]); } clrscr(); printf("\n
Matricea introdusa:\n"); for
(i=0;i<l;i++){ for
(j=0;j<c;j++) printf("%5d
",m[i][j]); printf("\n"); } printf("\n
Elementele de pe diagonala principala sunt:\n"); for
(i=0;i<l;i++) for
(j=0;j<c;j++) if
(i==j) printf("
%5d",m[i][j]); getch(); }
30. Se da o matrice patratica
(linii=coloane). Sa se afisheze elementele situate sub diagonala
principala, inclusiv diagonala principala.
#include <stdio.h> #include <conio.h>
void main(){ int
m[10][10],i,j,l,c; clrscr(); printf("\n
Introducetzi numarul de linii si coloane l=c=
"); scanf("%d",&l); c=l; clrscr(); printf("\n
Introducetzi elementele matricei:\n"); for
(i=0;i<l;i++) for
(j=0;j<c;j++){ printf("
M[%d][%d]=
",i,j); scanf("%d",&m[i][j]); } clrscr(); printf("\n
Matricea introdusa:\n"); for
(i=0;i<l;i++){ for
(j=0;j<c;j++) printf("%5d
",m[i][j]); printf("\n"); } printf("\n
Elementele de sub diagonala principala sunt:\n"); for
(i=0;i<l;i++){ for
(j=0;j<=i;j++) printf("
%5d",m[i][j]); printf("\n"); } getch(); }
31. Se da o matrice patratica
(linii=coloane). Sa se afisheze elementele situate deasupra diagonalei
principale, inclusiv diagonala principala.
#include <stdio.h> #include <conio.h>
void main(){ int
m[10][10],i,j,l,c; clrscr(); printf("\n
Introducetzi numarul de linii si coloane l=c=
"); scanf("%d",&l); c=l; clrscr(); printf("\n
Introducetzi elementele matricei:\n"); for
(i=0;i<l;i++) for
(j=0;j<c;j++){ printf("
M[%d][%d]=
",i,j); scanf("%d",&m[i][j]); } clrscr(); printf("\n
Matricea introdusa:\n"); for
(i=0;i<l;i++){ for
(j=0;j<c;j++) printf("%5d
",m[i][j]); printf("\n"); } printf("\n
Elementele situate deasupra diagonalei principale
sunt:\n"); for
(i=0;i<l;i++) for
(j=i;j<c;j++) printf("
%5d",m[i][j]); getch(); }
32. Se da structura elev care
contzine numele, prenumele, varsta shi media unui elev. Sa se faca un
program care sa afisheze o grupa de maxim 30 elevi in ordine alfabetica
shi in ordinea mediilor. Media se va lua de tip intreg pentru ca daca o
iau de tip float, la mine pe calculator da eroare.
#include <stdio.h> #include <conio.h> #include
<string.h>
struct elev{ char
nume[20]; char prenume[30]; int
varsta; int media; }tab[30];
void main(){ int
n,i,inter; struct elev
e; clrscr(); printf("Introducetzi
numarul elevilor (n<30):
"); scanf("%d",&n); for
(i=0;i<n;i++){ printf("\nIntroducetzi
numele elevului %d:
",i); scanf("%s",&tab[i].nume); printf("Introducetzi
prenumele elevului %d:
",i); scanf("%s",&tab[i].prenume); printf("Introducetzi
varsta elevului %d:
",i); scanf("%d",&tab[i].varsta); printf("Introducetzi
media elevului %d:
",i); scanf("%d",&tab[i].media); } /*Ordonarea
alfabetica prin metoda interschimbarii
(bulelor)*/ do{ inter=0; for
(i=0;i<n-1;i++) if
(stricmp(tab[i].nume,tab[i+1].nume)>0){ e=tab[i]; tab[i]=tab[i+1]; tab[i+1]=e; inter=1; } } while(inter); clrscr(); printf("Afisharea
elevilor in ordine alfabetica \nDupa afisharea unui elev se apasa o tasta.
\n"); for
(i=0;i<n;i++){ printf("\n%s
\n",tab[i].nume); printf("%s
\n",tab[i].prenume); printf("Varsta
%d
ani\n",tab[i].varsta); printf("Media
%d
\n",tab[i].media); getch(); } /*Ordonare
descrescator dupa medii prin metoda interschimbarii
(bulelor)*/ do{ inter=0; for
(i=0;i<n-1;i++) if
(tab[i].media<tab[i+1].media){ e=tab[i]; tab[i]=tab[i+1]; tab[i+1]=e; inter=1; } }
while(inter); clrscr(); printf("Afisharea
elevilor in ordinea descrescatoare a mediilor \nDupa afisharea unui elev
se apasa o tasta. \n"); for
(i=0;i<n;i++){ printf("\n%s
\n",tab[i].nume); printf("%s
\n",tab[i].prenume); printf("Varsta
%d
ani\n",tab[i].varsta); printf("Media
%d
\n",tab[i].media); getch(); } }
33. Se citeshte de la tastatura o
data alcatuita din zi, luna, an. Sa se afisheze numarul de zile trecute
din acel an.
#include <stdio.h> #include
<conio.h>
struct data{ int
z,l,a; }d;
int zilele(struct data d){ int
zi; zi=d.z; switch(d.l-1)
{ case
11:zi+=30; case
10:zi+=31; case
9:zi+=30; case
8:zi+=31; case
7:zi+=31; case
6:zi+=30; case
5:zi+=31; case
4:zi+=30; case
3:zi+=31; case
2:zi+=28; case
1:zi+=31; } if (d.l>2 &&
d.a%4==0) zi+=1; return
zi; }
void main()
{ clrscr(); printf("Va rog sa
introducetzi o data valida.\n"); printf("Introducetzi
ziua:"); scanf("%d",&d.z); printf("Introducetzi
luna:"); scanf("%d",&d.l); printf("Introducetzi
anul:"); scanf("%d",&d.a); printf("\nDe
la inceputul anului au trecut %d
zile.",zilele(d)); getch(); }
34. Exemple de folosire a
pointerilor.
#include <conio.h> #include <stdio.h>
void main(){ int
*p1,*p2,a,b; clrscr(); a=5; p1=&a; p2=p1; b=*p1; printf("
Valoarea de la adresa %p este p2=
%d",p2,*p2); printf("\n b=
%d",b); getch(); }
35. Afisharea pe ecran a 10
pointeri cu valori neinitzializate.
#include <stdio.h> #include <conio.h>
void main(){ int
i,*tab[10]; clrscr(); for
(i=0;i<10;i++) printf("
\nAdresa %d = %p",i,tab[i]); getch(); } |