Zamiana na binarny a następnie zliczanie jedynek w jednym ciagu

0

Witam was,
mam za zadanie stworzyć program w którym wpisujemy liczbę potem deklarujemy czy to liczba binarna czy dziesiętna (albo pierw deklarujemy potem wpisujemy obojętnie) następnie jeżeli to liczba binarna to Od razu zlicza liczbę jedynek a jeżeli to liczba dziesiętna to pierw zamienia na binarną i zlicza liczbę jedynek w jednym ciągu,
(i tak wiem że teraz to 2 rożne programy i to się kupy nie trzyma ale nie mam pomysłu jak to połączyć ze sobą dlatego proszę o pomoc) jakby ktoś był na tyle życzliwy i pomógł mi to złączyć byłbym bardzo wdzięczny ;)

#include <iostream> 
#include <string>

using namespace std;

int main()
{
    cout << "Podaj liczbe: ";
    long long int n;
    cin>>n;
    int k=64;
    int a[k];
    int i=0;
    while(n!=0)
        {
            if(n%2==0) a[i]=0;
            else a[i]=1;
            n=n/2;
            if(n!=0)i=i+1;
        }
for (k=i; k>=0;k=k-1) cout<<a[k];
return 0;
}
// odzielenie tych 2 programow
int count(const std::string& number) {
    int max = 0, counter = 0;

    for(size_t i = 0; i < number.size() ; ++i) {
    if(number[i] == '0') {
        ++counter;
    }
    else {
        max = std::max(max, counter);
counter = 0;
    }
}
return std::max(max, counter);
}
int jedynki()
{
string liczba;
cout << "Podaj Liczbe: ";
cin >> liczba;
cout << "Liczba jedynek w jednym ciagu to " << count(liczba) << endl;
return 0;
}
3
std::bitset(value).count(); // jeśli value to std::string to wtedy wejście jest binarne, jeśli int, to dziesiętne

To postara się w miarę możliwości użyć wbudowanych instrukcji procesora do uzyskania większej wydajności.

0
/* The nicely concise function below finds the length of the longest
string of 1's in x. By Paul Hsieh, newsgroup comp.lang.c, April 29,
2005.
   It executes in 4n + 3 instructions on the basic RISC, where n is the
length of the longest string of 1's. */

int maxstr1(unsigned x) {
   int k;
   for (k = 0; x != 0; k++) 
      x = x & 2*x;
   return k; } 

1 użytkowników online, w tym zalogowanych: 0, gości: 1