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
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!
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
Chimie,
8 ani în urmă
Limba română,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă