miercuri, 25 aprilie 2012

Prelucrări asupra matricelor


Ex.  Pentru o matrice dată să se calculeze suma elementelor care aparţin unui interval dat (xinf<=tab[i][j] && xsup>=tab[i][j]).
Prezentarea algoritmului :
-         se citesc capetele intervalului în care trebuie să se încadreze elementele cautate în matrice
xinf şi xsup
-         se citesc dimensiunile matricei
şi n
-         se citesc elementele matricei
pentru i=0,m-1 execută
            pentru j=0,n-1 execută
                                          citeşte tab[i][j];
                              sfârşit pentru
                        sfârşit pentru

-   suma = 0;
-         se parcurge matricea element cu element. Se testează dacă elementul curent se încadrează în intervalul dorit şi în caz afirmativ elementul curent se adună la suma calculată anterior
pentru i=0,m-1 execută
            pentru j=0,n-1 execută
                        dacă tab[i][j] > xi şi  tab[i][j] < xf atunci
                                    suma  = suma + tab[i][j];
                        sfârşit dacă
            sfârşit pentru
sfârşit pentru
      -  afişează suma 
 
Obs. Variabila suma reprezintă suma calculată.
 
  Ex.  7   Să se determine elementul maxim de pe fiecare linie dintr-o matrice

#include <stdio.h>
#include <conio.h>

void main()
{
int tab[10][10],max_lin[10];
int i,j,m,n,max;

clrscr();
printf("\n Introduceti dimensiunile matricei ");
scanf("%d %d",&m,&n);
printf("\n Introduceti elementele matricei\n");

for(i=0;i<m;i++)
{
                for(j=0;j<n;j++)
                {
                                printf("tab[%d][%d]=",i,j);
                                scanf("%d",&tab[i][j]);
                 }
}

printf("\n Matricea citita de la tastatura este: \n");
for(i=0;i<m;i++)
{
printf("\t");
                for(j=0;j<n;j++)
                                printf(" %4d",tab[i][j]);
printf("\n");
}

for(i=0;i<m;i++)
{
max=matr[i][0];
                for(j=0;j<n;j++)
                {
                   if(max < tab[i][j])
                                                  max=tab[i][j];
                }
max_lin[i]=max;
}
printf("\n elementele vectorului de maxime sunt");
for(i=0;i<m;i++)
                printf(" %5d",max_lin[i]);
getch();
}



Obs. Vectorul max_lin conţine elementele maxime de pe fiecare linii. Evident acesta are dimensiunea egală cu numărul liniilor matrucii tab.

Niciun comentariu:

Trimiteți un comentariu