Teste propuse pentru Bacalaureat, Informatica, 2020


Problema 2 din Subiectul al treilea din Testul 1 - Teste propuse pentru Bacalaureat, Informatica, Profil real, specializare matematică-informatică / matematică-informatică intensiv informatică

Scrieţi un program C/C++ care citeşte de la tastatură două numere naturale din intervalul [2,20], n și k, şi construieşte în memorie un tablou bidimensional cu n linii şi n∙k coloane, numerotate începând cu 1, astfel încât fiecare linie i (i∈[1,n]) memorează un şir crescător de termeni cu proprietatea că primul termen este i, fiecare valoare apare în şir de exact k ori și oricare doi termeni alăturați au valori egale sau consecutive.

Programul afişează pe ecran tabloul construit, fiecare linie a tabloului pe câte o linie a ecranului, cu valorile aflate pe aceeaşi  linie separate prin câte un spaţiu.
Exemplu: dacă n=4 și k=3, se afişează pe ecran tabloul alăturat.


1 1 1 2 2 2 3 3 3 4 4 4
2 2 2 3 3 3 4 4 4 5 5 5
3 3 3 4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6 7 7 7


Rezolvare:


#include <iostream>

using namespace std;

int main()
{
    int a[100][100],n,k,i,j;
    cin>>n;
    cin>>k;
    for(i=1;i<=k*n;i++)
        a[1][i]=(i-1)/k+1;
    for(i=2;i<=n;i++)
        for(j=1;j<=n*k;j++)
            a[i][j]=a[i-1][j]+1;

    for(i=1;i<=n;i++)
        {
            for(j=1;j<=n*k;j++)
                cout<<a[i][j]<<" ";
            cout<<endl;
        }


}

Comentarii

Postări populare de pe acest blog

Citire graf neorientat

Citirea si afisarea unui vector - Divide et Impera