Informatică, întrebare adresată de dzoiut, 8 ani în urmă

1.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



2.Se consideră șirul 1, 1, 2, 5, 13, 34, 89, 233, 610 ....
definit astfel: f1=f2=1, fn=3∙fn-1-fn-2 (unde n este un număr natural n≥3):
Se citesc de la tastatură două numere naturale x și y (x≤y109), valorile a doi termeni aflați pe poziții
consecutive în şirul dat, şi se cere să se scrie în fişierul text bac.txt, în ordine descrescătoare,
separați prin câte un spațiu, toţi termenii şirului care sunt mai mici sau egali cu y. Proiectați un algoritm
eficient din punctul de vedere al memoriei utilizate şi al timpului de executare.
Exemplu: dacă se citesc numerele 89 233
fişierul bac.txt conţine numerele 233 89 34 13 5 2 1 1
a. Scrieți programul C/C++ corespunzător algoritmului proiectat.
b. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia.

Răspunsuri la întrebare

Răspuns de Utilizator anonim
6

1.

#include <iostream>

using namespace std;

int a[20][40];

int main() {

   int n,k,i,j;

   cin>>n>>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;

   }

   return 0;

}

2.

#include <iostream>

using namespace std;

int main() {

   unsigned int a, b, c=0;

   cin>>a>>b;

   cout<<b<<" "<<a<< " ";

   while(c!=1) {

       c=3*a-b;

       cout<<c<<" ";

       b=a;

       a=c;

   }

   cout<<1;

   return 0;

}

Alte întrebări interesante