👤

Subprogramul paritate are doi parametri:
• n, prin care primește un număr natural (n[1,109]);
• nr prin care furnizează numărul de divizori naturali ai lui n cu aceeași paritate ca n.
• Scrieți definiția completă a subprogramului.
Exemplu: dacă n=20, după apel nr=4 (divizorii lui 20 sunt 1, 2, 4, 5, 10, 20). (10p.)
2. Într-un tablou bidimensional, cu elemente având valori numai în mulțimea {0,1}, numim
linii „complementare” două linii cu proprietatea că oricare două elemente ale acestora,
aflate pe aceeași coloană, sunt diferite.
Scrieți un program C/C++ care citește de la tastatură trei numere naturale m, n și k
(m,n[2,20], k[1,m]) și elementele unui tablou bidimensional cu m linii și n coloane,
numere naturale din mulțimea {0,1}. Programul afișează pe ecran mesajul DA dacă există
cel puțin o linie „complementară" cu linia a k-a a acestuia, sau mesajul NU în caz contrar.
Exemplu: pentru m=7, n=3, k=2 și tabloul alăturat se afișează pe ecran mesajul DA. (10p.)

0 1 0
1 1 0
0 0 0
0 0 1
0 0 1
1 1 1
0 0 1
3. Fișierul bac.txt conține, în ordine crescătoare, cel mult 106 numere naturale din intervalul [0,109],
separate prin câte un spațiu. Se cere să se afișeze pe ecran, în ordine strict crescătoare, separate prin
câte un spațiu, numerele pare distincte care apar în fișier. Dacă nu există niciun astfel de număr, se
afișează pe ecran mesajul nu exista. Proiectați un algoritm eficient din punctul de vedere al memoriei
utilizate și al timpului de executare.
Exemplu: dacă fișierul conține numerele 5 5 6 7 8 8 8 8 10 15 16 16 25 25 49
pe ecran se afișează, în această ordine, numerele 6 8 10 16
a. Descrieți în limbaj natural algoritmul proiectat, justificând eficiența acestuia.
b. Scrieți programul C/C++ corespunzător algoritmului proiectat.

va rog ajutati-ma!!!


Răspuns :

Răspuns:

Explicație:

1.

void paritate(int n, int &nr)

{

   int d;

   for(int d=1; d*d<n; d++)

       if(n%d==0)

      {if(n%2==d%2)

       nr++;

       if((n/d)%2==n%2)

           nr++;

      }

         if(d*d==n && d%2==n%2)

           nr++;

}

2.

#include <iostream>

using namespace std;

int a[21][21],m,n,k,ok=0;

int verif(int k,int l)

{

   for(int j=1; j<=n; j++)

       if(a[k][j]==a[l][j])

           return 0;

   return 1;

}

void citire()

{

   cin>>m>>n>>k;

   for(int i=1; i<=m; i++)

       for(int j=1; j<=n; j++)

           cin>>a[i][j];

}

int main()

{

   citire();

   for(int i=1; i<=m; i++)

       if(k!=i)

           if(verif(k,i)==1)

               ok=1;

   if(ok==1) cout<<"DA";

   else cout<<"NU";

   return 0;

}

3.

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("bac.txt");

int x,y=-1;

int main()

{

  while(f>>x)

  {

      if(x%2==0)

      {

          if(x!=y)

          cout<<x<<" ";

          y=x;

      }

  }

  if(y==-1) cout<<"nu exista";

   return 0;

}