Sunteți pe pagina 1din 4

1

13.05.2020

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

Avem situații când trebuie să rezolvăm probleme care necesită parcurgerea unei matrice coloană cu
coloană și deci prelucrarea separată a elementelor de pe fiecare coloană în parte.
Fie o matrice oarecare a cu n= 4 linii și m=5 coloane, cu elemente numere întregi. Matricea se notează
cu A4x5 iar elementele sale sunt:

Coloana 1 Coloana 2 Coloana 3 Coloana 4 Coloana 5


a11 a12 a13 a14 a15
a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
a41 a42 a44 a44 a45

După cum se poate observa, elementele de pe coloana 1 sunt: a11 a21 a31 a41 .
Deci indicele de coloană j=1=constant iar indicele de linie i variază între 1 și 4, adică 𝐢 ∈ [𝟏, 𝐧].
În mod asemănător, pentru elementele de pe coloana 2 indicele de coloană j=2=constant iar indicele de linie i
variază între 1 și 4, adică 𝐢 ∈ [𝟏, 𝐧].
………..……………………………………………………………………………………………..
Pentru coloana=5 indicele de coloană j=m=constant iar indicele de linie i variază între 1 și 4, deci 𝐢 ∈ [𝟏, 𝐧].

Ca urmare:

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


for(j=1;j<=m;j++)
{
for(i=1;i<=n;i++)
//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<=30 și m<=40), 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 coloanele impare din matrice, de jos în sus
b. Calculul ultimei cifre a produsului elementelor de pe coloanele pare din matrice
Afișarea se va face în fișierul matrice.out.
2

Exemplu:
matrice.in matrice.out
45 Coloanele impare de jos in sus:
2 3 10 11 100 8642
4 5 20 22 200 40 30 20 10
6 7 30 33 300 400 300 200 100
8 9 40 44 400 Ultima cifra a produsului: 5 4

2. 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șarea elementelor pătrate perfecte ale matricei, cu spațiu între ele
b. Afișarea valorii minime de pe fiecare coloană, în ordine de la prima la ultima coloană.
Afișarea se va face în fișierul date.out.
Exemplu:
date.in date.out
34 Matrice contine:
2794 2794
1823 1823
6 9 25 2 6 9 25 2
Elementele patrate perfecte: 9 4 1 9 25
Val minime pe coloane: 1 7 2 2

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. Calculul numărului de elementelor care au suma cifrelor pară (număr nenul), de pe fiecare coloană a
matricei
b. Afișarea numărului de ordine al coloanei/coloanelor care nu conțin valori nule
Afișarea se va face în fișierul matrice.out.
Exemplu:
matrice.in matrice.out
43 Matricea contine:
14 75 31 14 75 31
25 0 7 25 0 7
44 55 66 44 55 66
11 22 33 11 22 33
Nr de elemente: 2 3 3
Indicele coloanelor: 1 3

Problema1
Indicații:
Se parcurg coloanele de indice 1, 3, 5, 7……… de la ultimul la primul element și se afișează valoarea lor, cu
spațiu între ele, pentru fiecare coloană. Indicele de coloană=1 inițial și j variază din 2 în 2. Ultimul element
de pe coloană are indicele de linie i=n, iar acesta va scădea cu o unitate., la final având elementul cu indicele
i=1
3

Apoi se parcurg coloanele de indice: 2, 4, 6, 8……… de la primul la ultimul element, și se calculează produsul
de pe fiecare coloană pentru a se afișa ultima cifră a sa la finalul coloanei. Indicele de coloană=2 inițial și j
variază din 2 în 2.

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,p;

//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<<"Coloanele impare de jos in sus:\n";
for(j=1;j<=m;j=j+2)
{
for(i=n;i>=1;i--)
fout<<a[i][j]<<" ";
fout<<"\n";
}

//AFISARE ULIMEI CIFRE A PRODUSULUI DE PE COLOANELE PARE


fout<<" Ultima cifra a produsului: ";
for(j=2;j<=m;j=j+2)
{
p=1;
for(i=1;i<=n;i++)
p=p*a[i][j];
fout<<p%10<<" ";
}

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

Problema2
Indicații:
Se va utiliza mai întâi algoritmul pentru verificarea unui număr nr dacă este pătrat perfect:

int d;
d=1;
while(d*d<nr)
d++;
if(d*d==nr)
fout<<nr;

Se va utiliza algoritmul pentru determinarea valorii minime vmin, dar aplicat unei coloane

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