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

Un program citeşte o valoare naturală nenulă pentru n şi apoi generează şi afişează, în ordine crescătoare lexicografic, toate combinaţiile formate din n cifre care aparţin mulţimii {0,1}. Astfel, pentru n=2, combinaţiile sunt afişate în următoarea ordine: 00, 01, 10, 11. Rulati acest program pentru valoarea n = 9.

in c++
stiu ca se face cu produs cartezian, dar nu stiu exact cum se scrie codul.

Răspunsuri la întrebare

Răspuns de andrei750238
1

#include <iostream>

#include <cmath>

using namespace std;

int dec2bin(long num)

{

long bin = 0, k = 1;

while (num)

{

 bin += (num % 2) * k;

 k *= 10;

 num /= 2;

}

return bin;

}

int main()

{

long nr, x;

cin >> nr;

int copie, counter;

for (int i = 0; i <= 100000; i++) {

 x = dec2bin(i);

 copie = x;

 counter = 0;

 

 cout << endl;

 

 if (x == 0) counter++;

 while (x) {

  counter++;

  x = x / 10;

 }

 

 while (counter < nr) {

  cout << 0;

  counter++;

 }

 if (counter > nr)

  break;

 else cout<<copie;

}

return 0;

}


silvia001: multumesc mult!
andrei750238: Cred ca o sa ma impusti.

Am luat o abordare diferita ( ce implica numere in format binar si contorizatul cifrelor acestora ). Nu e cea mai buna solutie ( din mai multe puncte de vedere ) dar functioneaza ( cat timp nr <11). Am testat in Visual Studio.

Daca nimeni nu vine cu o idee mai buna, o poti folosi pe aceasta.
Alte întrebări interesante