👤

C++(varianta de rezolvare pentru incepatori)
In matricea cu m linii si n coloane sa se afle cate linii simetrice are, o linie fiind simetrica daca elementele egal departate de caepetele liniei respective sunt egale.
1 3 0 3 1 
5 9 1 9 5
4 9 7 3 2
Se va afisa : primele doua linii sunt simetrice


Răspuns :

#include<iostream>
using namespace std;
int main()
{
    int a[100][100],n,m,i,j,ok,k=0;
    cout<<"m="; cin>>m;
    cout<<"n="; cin>>n;
    for (i=1;i<=m;i++)
        for (j=1;j<=n;j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j];
        }            //pana aici avem declarare si citire
    for (i=1;i<=m;i++)
    {
        ok=1;
        for (j=1;j<=n;j++)
            if (a[i][j]!=a[i][n-j+1])
                ok=0;
        if (ok==1)
            k++;
    }
    cout<<"Sunt "<<k<<" linii simetrice.";
}

Rezolvarea merge pe urmatorul principiu: Luam fiecare linie la rand si presupunem ca este simentrica, initializand variabila ok cu 1. Daca gasim un caz in care un element nu este egal cu simentricul sau, vom initializa variabilaok cu 0. La final vom testa valoarea variabilei ok, daca aceasta este tot 1 atunci contorul k creste.
Pentru a compara doua elemente simentrice se va folosi relatia:
a[i][j]!=a[i][n-j+1]
-i-ul ramane deschimbat deoarece este vorba de aceeasi linie
elementul de pe pozitia j are simentricul pe pozitia n-j+1. Ex:
a[1][2]=3 (a[i][j])
a[1][5-2+1]=a[1][4]=3 ( a[i][n-j+1] -j-ul este tot 2)
Vă mulțumim că ați vizitat site-ul nostru web care acoperă despre Informatică. Sperăm că informațiile furnizate v-au fost utile. Nu ezitați să ne contactați dacă aveți întrebări sau aveți nevoie de asistență suplimentară. Ne vedem data viitoare și nu ratați să marcați.


Zone Alte intrebari