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
|
|