Sunteți pe pagina 1din 5

1

7.05.2020

Clasa 9A ‒Informatică
Matrici. Prelucrare linie cu linie

În practică apar probleme care necesită parcurgerea unei matrice linie cu linie și prelucrarea separată a
elementelor de pe fiecare linie în parte.
Fie o matrice oarecare a cu n= 4 linii și m=3 linii, cu elemente numere întregi. Matricea se notează cu
A4x3 iar elementele sale sunt:
Linia 1 a11 a12 a13
Linia 2 a21 a22 a23
Linia 3 a31 a32 a33
Linia 4 a41 a42 a43

După cum se poate observa, elementele de pe linia 1 sunt: a11 a12 a13 .
Deci indicele de linie i=1=constant iar indicele de coloană j variază între 1 și 3, adică 𝐣 ∈ [𝟏, 𝐦].
În mod asemănător, pentru elementele de pe linia 2 indicele de linie i=2=constant iar indicele de coloană j
variază între 1 și 3, adică 𝐣 ∈ [𝟏, 𝐦].
…………..……………………………………………………………………………………………..
Pentru linia=4 indicele de linie i=n=constant iar indicele de coloană j variază între 1 și 3, adică 𝐣 ∈ [𝟏, 𝐦].

Ca urmare:

Algoritmul de prelucrare a elementelor unei matrice, linie cu linie este următorul:


for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
//Prelucrarea elementului a[i][j]
}

Aplicații
1. Fișierul matrice.in conține pe prima linie numărul de linii n și numărul de coloane m ale unei matrice
oarecare, despărțite prin câte un spațiu (unde n<=40 și m<=30), iar pe următoarele n linii valorile elementelor
matricei, care sunt numere întregi cu cel mult 4 cifre. Să se realizeze:
a. Afișarea elementelor de pe liniile impare din matrice, de la stânga la dreapta
b. Afișarea elementelor de pe liniile pare din matrice, de la dreapta la stânga
Afișarea se va face în fișierul matrice.out.
2

Exemplu:
matrice.in matrice.out
54 Liniile impare stanga dreapta:
1234 1234
5678 9 10 11 12
9 10 11 12 17 18 19 20
13 14 15 16 Liniile pare dreapta stanga:
17 18 19 20 8765
16 15 14 13

2. Fie o matrice oarecare cu elemente numere întregi pentru care se cunosc numărul de linii n, numărul de
coloane m și valorile sale (citire din fișierul numere.in iar n<=30 și m<=40). Să se realizeze afișarea
numerelor de ordine ale liniilor care conțin valoarea x cel puțin odată, unde x este o valoarea întreagă citită
de la tastatură (presupunem că există cel puțin 2 linii care îndeplinesc proprietatea).
Afișarea se va face în fișierul numere.out.
Exemplu:
numere.in numere.out
34 Matrice contine:
-132 3 5 5 -132 3 5 5
-89 237 -4 6 -89 237 -4 6
5 0 -7 8 5 0 -7 8
De la tastatură se citește x=5 Nr de ordine linii: 1 3

3. Fișierul matrice.in conține pe prima linie numărul de linii n și numărul de coloane m ale unei matrice
oarecare, despărțite prin câte un spațiu (unde n<=40 și m<=30), iar pe următoarele n linii valorile elementelor
matricei, care sunt numere naturale cu cel mult 5 cifre. Să se realizeze:
a. Afișarea elementelor pare din matrice, cu spațiu între ele
b. Afișarea numărului de ordine al liniei/liniei pentru care suma componentelor este divizibilă cu 5
Afișarea se va face în fișierul matrice.out.
Exemplu:
matrice.in matrice.out
35 Matricea contine:
13579 13579
2 4 8 16 32 2 4 8 16 32
11 13 15 17 19 11 13 15 17 19
Valorile pare: 2 4 8 16 32
Indicele liniilor: 1 3

4. Se consideră o matrice oarecare cu elemente numere întregi pentru care se cunosc numărul de linii n, numărul
de coloane m și valorile sale (citire din fișierul date.in iar n<=30 și m<=40). Să se realizeze:
a. Afișeze elementelor negative ale matricei, cu spațiu între ele
b. Afișarea valorii maxime de pe fiecare linie a matricei, de la prima la ultima linie
Afișarea se va face în fișierul date.out.
Exemplu:
date.in date.out
34 Matrice contine:
3

-132 3 5 5 -132 3 5 5
-89 237 -4 6 -89 237 -4 6
5 0 -7 8 5 0 -7 8
Elementele negative: -132 -89 -4 -7
Val maxima pe linie: 5 237 8

Problema1
Indicații:
Se parcurg mai întâi liniile de indice 1, 3, 5, 7……… de la primul la ultimul element, și se afișează valoarea
lor cu spațiu între ele. Indicele de linie=1 inițial și i variază din 2 în 2.
Apoi se parcurg liniile de indice: 2, 4, 6, 8……… de la ultimul la primul element, și se afișează valoarea lor
cu spațiu între ele. Indicele de linie=2 inițial și i variază din 2 în 2. Ultimul element de pe linie are indicele
de coloană j=m, iar acesta va scădea cu o unitate., la final afișându-se elementul cu indicele j=1

Programul C++ este următorul:


#include<fstream>
using namespace std;
ifstream fin("matrice.in");
ofstream fout("matrice.out");
int main()
{
int a[41][31],n,m,i,j;
float ma;
//CITIREA MATRICEI
fin>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
fin>>a[i][j];

//AFISARE ELEMENTE DE PE LINII IMPARE


fout<<"Liniile impare stanga dreapta:\n";
for(i=1;i<=n;i=i+2)
{
for(j=1;j<=m;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
//AFISARE ELEMENTE DE PE LINII PARE
fout<<"Liniile pare dreapta stanga:\n";
for(i=2;i<=n;i=i+2)
{
for(j=m;j>=1;j- -)
fout<<a[i][j]<<" ";
fout<<"\n";
}
4

fin.close();
fout.close();
return 0;
}

Problema2
Indicații:
se va utiliza algoritmul pentru căutare care verifică existența unei valori întregi x într-un vector pentru a căuta
valoarea x pe o linie
dacă variabila gasit= =1 când s-a terminat căutarea pe linia respectivă, se va afișa indicele i al liniei respective
și se începe căutarea pe linia următoare
dacă variabila gasit rămane cu valoarea 0 când s-a terminat căutarea pe linia respectivă, atunci, se va începe
căutarea pe linia următoare

Programul C++ este următorul:


#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("numere.in");
ofstream fout("numere.out");
int main()
{
int a[31][41],n,m,i,j,x,gasit;

//CITIREA MATRICEI
fin>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
fin>>a[i][j];

cout<<"Val pt cautare=";cin>>x;

//AFISAREA ELEMENTE MATRICE


fout<<" Matrice contine:\n";
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
5

//DETERMINARE LINII PT CARE EXISTA MACAR O VAL x


fout<<" Nr de ordine linii: ";
for(i=1;i<=n;i++)
{
j=1;
gasit=0;
while(j<=m&&gasit==0)
{
if(a[i][j]==x)
gasit=1;
j++;
}
if(gasit==1)
fout<<i<<" ";
}

fin.close();
fout.close();
return 0;
}

Problema3
Indicații:
La cerința a. se parcurge matricea, element cu element și se verifică dacă elementul a[i][j] este par, iar dacă
DA el se va afișa
La punctul b, la începutul fiecărei linii variabila s se va inițializa cu 0 iar apoi fiecare element a[i][j] de pe
linie se va adăuga la suma s, După ce linia a fost parcursă se va afișa valorea lui s și apoi se începe parcurgerea
linie următoare, s luând-o iar de la 0.

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