24.2.3.24010550. Napisati program koji traži da se sa tastature unese neki binarni broj, a koji nakon toga ispisuje isti broj pretvoren u dekadni brojni sistem. Na primjer, ukoliko se unese broj 1101011, rezultat treba da bude 107, jer je (1101011)2 = (107)10. Program treba da prijavi grešku ukoliko ulazni podatak sadrži cifru koja nije 0 ili 1. Uputa: čitajte znakove unesenog podatka znak po znak, sve dok se ne dostigne kraj reda, ili znak koji nije cifra 0 ili 1. Svaki put kada očitate novu cifru, tekuću vrijednost broja pomnožite sa 2 i na nju dodajte vrijednost očitane cifre. Ova ideja se zasniva na Hornerovoj shemi, odnosno činjenici da je

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
#include <iomanip.h>
#include <cmath.h>

using namespace std;
int main()
{
int brojac(-2),cifra,broj,suma(0);
cout<<"Unesite broj u binarnom zapisu:"<<endl;
 cin>>broj;
while (broj!=0.) {
   cifra=broj%10;
   if(cifra!=0 && cifra !=1){
       cout<<"Unesite ponovo!\n";
       cin.clear();
       cin.ignore(1000,'\n');
       cin>>broj;
       suma=0; brojac=-2;
       continue;
   }    
   brojac++;
   suma=suma+cifra*pow(2.,brojac);
   broj/=10; };
   
  cout<<suma<<endl;
  getch();
    return 0;
} 

Ispis na ekranu:

Riješeni zadaci 2    Index