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();
}