Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (n∈[2,20]) şi
construieşte în memorie un tablou bidimensional cu n linii şi n coloane în care:
- ultima coloană conţine numerele naturale din intervalul [1,n], în ordine strict
descrescătoare;
- toate elementele primei linii au valoarea n;
- oricare alt element este obţinut prin însumarea celor două elemente vecine cu el, unul
aflat pe coloana din dreapta, pe aceeaşi linie cu el, iar celălalt pe aceeaşi coloană cu el,
dar pe linia anterioară, ca în exemplu.
Programul afişează pe ecran tabloul obţinut, fiecare linie a tabloului pe câte o linie a
ecranului, elementele fiecărei linii fiind separate prin câte un spaţiu.
Exemplu: pentru n=4 pe ecran se afişează:
4 4 4 4
15 11 7 3
35 20 9 2
65 30 10 1
Este corect algoritmul acesta:
{int a[100][100],n,k,i,j,aux;
cin>>n>>k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(a[k][i]
{aux=a[k][i];
a[k][i]=a[k][j];
a[k][j]=aux;
}
for(int i=1;i<=n;i++)
{
a[i][n]=n;
}
KindaBored:
Tu trebuie sa citeste doar n de la tastatura, de ce ai si k?
Răspunsuri la întrebare
Răspuns de
4
Nu, acel algoritm nu este corect.
#include <iostream>
using namespace std;
int n,a[21][21],i,j;
int main()
{
cin>>n;
for (i=1;i<=n;i++)
{
a[1][i]=n;
a[n+1-i][n]=i;
}
for (i=2;i<=n;i++)
for (j=n-1;j>=1;j--)
{
a[i][j]=a[i-1][j]+a[i][j+1];
}
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
#include <iostream>
using namespace std;
int n,a[21][21],i,j;
int main()
{
cin>>n;
for (i=1;i<=n;i++)
{
a[1][i]=n;
a[n+1-i][n]=i;
}
for (i=2;i<=n;i++)
for (j=n-1;j>=1;j--)
{
a[i][j]=a[i-1][j]+a[i][j+1];
}
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă