Informatică, întrebare adresată de annbleeditout, 9 ani în urmă

Scrieţi un program care citeşte de la tastatură un număr natural n cu exact 5 cifre şi construieşte în memorie o matrice cu 6 linii şi 6 coloane ale cărei elemente vor primi valori după cum urmează:

elementele aflate pe diagonala principală sunt toate nule;
elementele de pe linia 1, aflate deasupra diagonalei principale precum şi elementele de pe coloana 1, aflate sub diagonala principală au toate valoarea egală cu cifra unităţilor lui n;
elementele de pe linia 2, aflate deasupra diagonalei principale precum şi elementele de pe coloana 2, aflate sub diagonala principală au toate valoarea egală cu cifra zecilor lui n;

elementele de pe linia 6, aflate deasupra diagonalei principale precum şi elementele de pe coloana 6, aflate sub diagonala principală au toate valoarea egală cu cifra zecilor de mii a lui n;
Programul afișează pe ecran matricea construită, câte o linie a matricei pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.

Răspunsuri la întrebare

Răspuns de santoni2001
1
#include<iostrea>
using namespace std;

int i,j,n,a[6][6]

void construire()
{
         do{cin>>n;
             }while(n<9999 || n>99999)
for(i=1;i<=6;i++)
    for(j=1;j<=6;j++)

              for(j=2;j<=6;j++)
                      a[1][j]=n%10;
               for(i=2;i<=6;i++)
                        a[i][1]=n%10;
n=n/10;

for(j=3;j<=6;j++)
     a[2][j]=n%10;
for(i=3;i<=6;i++)
      a[i][2]=n%10;
n=n/10;

for(j=4;j<=6;j++)
     a[3][j]=n%10;
for(i=4;i<=6;i++)
      a[i][3]=n%10;
n=n/10;                          

for(j=5;j<=6;j++)
     a[4][j]=n%10;
for(i=5;i<=6;i++)
      a[i][4]=n%10;
n=n/10;

for(j=6;j<=6;j++)
     a[5][j]=n%10;
for(i=6;i<=6;i++)
      a[i][5]=n%10;
n=n/10;

for(i=1;i<=6;i++)
   for(j=1;j<=6;j++)
        if(i==j)
          a[i][j]==0;
}

int main ()
{
construire();

for(i=1;i<=6;i++)
{
      for(j=1;j<=6;j++)
           cout<<a[i][j]<<" "<<"\n";
}

santoni2001: Sper ca te-am ajutat si ca asa trebuie facut
Răspuns de AntiEaglesDavids
6
Incearca asta, are doar 3 for-uri deci e mult mai rapid (si scurt).

#include<iostream>
using namespace std;

int main()
{
    char n[5];
    int m[6][6];

    cin >> n;
    for(int i=0; i<6; i++)
        for(int j=i; j<6; j++)
            m[i][j] = m[j][i] = n[4-i] - '0';
    for(int i=0; i<6; i++) m[i][i] = 0;

    for(int i=0; i<6; i++) {
        for(int j=0; j<6; j++)
            cout << m[i][j] << ' ';
        cout << '\n';
    }
   
    return 0;
}

Alte întrebări interesante