Fiind data o matrice avand n linii si n coloane ,sa se afiseze coloanele care reprezinta siruri ordonate crescator si liniile care reprezinta siruri ordonate descrescator.
Răspunsuri la întrebare
Răspuns de
1
Programul nu l-am verificat prin rualre, doar l-am scris, dar logica sper sa fie clara :).
Anexe:
Răspuns de
0
#include <bits/stdc++.h>using namespace std;
ifstream fin("matrice.in");
int n, i, j, a[101][101], cresc[101], desc[101], nr, k;
int main()
{
//citesc dintr-un fisier n si o matrice de n*n elemente
fin >> n;
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
fin >> a[i][j];
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
cout << a[i][j] << " ";
cout << "\n";
}
cout << "Liniile care au siruri descrescatoare sunt: \n";
bool ok;
for (i = 1; i <= n; i++)
{
ok = 0; //presupun ca nu avem elemente descrescatoare
for (j = 2; j <= n; j++)
{
if (a[i][j - 1] >= a[i][j]) ok = 1; //am gasit element descrescator
else
{
//daca suntem aici inseamna ca am gasit un element care nu convine si nu are rost sa mai continui si trec la urmatoarea linie
ok = 0;
break;
}
}
//daca am ajuns aici inseamna ca am gasit linii cu elemente descrescatoare si afisam indicele liniei
if (ok == 1) //cout<<i<<" ";
desc[++nr] = i; //bag in vectorul desc indicii liniilor cu elemente descrescatoare } //cout<<"Linia "<<i<<": "<<a[j][j]<<" ";
for (k = 1; k <= nr; k++)
{
//parcurg vectorul de indici si apoi matricea verificand daca indicele liniei din matrice corespunde cu indicele din vector si afisez
cout << " Linia " << desc[k] << ": ";
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (desc[k] == i)
cout << a[i][j] << " ";
}
}
nr = 0;
cout << "\nColoanele care au siruri crescatoare sunt: \n";
for (j = 1; j <= n; j++)
{
ok = 0; //presupun ca nu avem elemente crescatoare
for (i = 2; i <= n; i++)
{
if (a[i - 1][j] <= a[i][j]) ok = 1; //am gasit element crescator
else
{
//daca suntem aici inseamna ca am gasit un element care nu convine si nu are rost sa mai continui si trec la urmatoarea coloana
ok = 0;
break;
} }
//daca am ajuns aici inseamna ca am gasit coloane cu elemente crescatoare si afisam indicele coloanei
if (ok == 1) //cout<<j<<" ";
cresc[++nr] = j; //bag in vectorul cresc indicii coloanelor cu elemente crescatoare
}
for (k = 1; k <= nr; k++)
{
//parcurg vectorul de indici si apoi matricea verificand daca indicele coloanei din matrice corespunde cu indicele din vector si afisez
cout << " Coloana " << cresc[k] << ": ";
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (cresc[k] == j)
cout << a[i][j] << " ";
}
cout << "\n";
}
}
ifstream fin("matrice.in");
int n, i, j, a[101][101], cresc[101], desc[101], nr, k;
int main()
{
//citesc dintr-un fisier n si o matrice de n*n elemente
fin >> n;
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
fin >> a[i][j];
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
cout << a[i][j] << " ";
cout << "\n";
}
cout << "Liniile care au siruri descrescatoare sunt: \n";
bool ok;
for (i = 1; i <= n; i++)
{
ok = 0; //presupun ca nu avem elemente descrescatoare
for (j = 2; j <= n; j++)
{
if (a[i][j - 1] >= a[i][j]) ok = 1; //am gasit element descrescator
else
{
//daca suntem aici inseamna ca am gasit un element care nu convine si nu are rost sa mai continui si trec la urmatoarea linie
ok = 0;
break;
}
}
//daca am ajuns aici inseamna ca am gasit linii cu elemente descrescatoare si afisam indicele liniei
if (ok == 1) //cout<<i<<" ";
desc[++nr] = i; //bag in vectorul desc indicii liniilor cu elemente descrescatoare } //cout<<"Linia "<<i<<": "<<a[j][j]<<" ";
for (k = 1; k <= nr; k++)
{
//parcurg vectorul de indici si apoi matricea verificand daca indicele liniei din matrice corespunde cu indicele din vector si afisez
cout << " Linia " << desc[k] << ": ";
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (desc[k] == i)
cout << a[i][j] << " ";
}
}
nr = 0;
cout << "\nColoanele care au siruri crescatoare sunt: \n";
for (j = 1; j <= n; j++)
{
ok = 0; //presupun ca nu avem elemente crescatoare
for (i = 2; i <= n; i++)
{
if (a[i - 1][j] <= a[i][j]) ok = 1; //am gasit element crescator
else
{
//daca suntem aici inseamna ca am gasit un element care nu convine si nu are rost sa mai continui si trec la urmatoarea coloana
ok = 0;
break;
} }
//daca am ajuns aici inseamna ca am gasit coloane cu elemente crescatoare si afisam indicele coloanei
if (ok == 1) //cout<<j<<" ";
cresc[++nr] = j; //bag in vectorul cresc indicii coloanelor cu elemente crescatoare
}
for (k = 1; k <= nr; k++)
{
//parcurg vectorul de indici si apoi matricea verificand daca indicele coloanei din matrice corespunde cu indicele din vector si afisez
cout << " Coloana " << cresc[k] << ": ";
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (cresc[k] == j)
cout << a[i][j] << " ";
}
cout << "\n";
}
}
Relampago:
Eu zic ca vei intelege programul :) .Sterge comentariile dupa ce le citesti si testeaza :D
Alte întrebări interesante
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă