Cena binarna
Kod był wyświetlany 2445 razy.
    /*
  Name: Cena binarna
  Copyright: GPL GNU
  Author: Mateusz Nowicki
  Date: 02-06-10 19:55
  Description: Matura podstawowa 2009 - zad.2i
  
  W Dwójkolandii tradycyjnie ceny w sklepach są podawane w systemie dwójkowym.
Ze względu na rosnący ruch turystów z innych krajów, gdzie wciąż obowiązuje system
dziesiętny, rząd Dwójkolandii postanowił, że handlowcy mają obowiązek umieszczania cen
w obu systemach.
Zaproponuj handlowcom metodę przeliczania cen z systemu dwójkowego na dziesiętny
i zapisz ją w postaci algorytmu w wybranej przez siebie notacji (lista kroków, schemat
blokowy lub język programowania, który wybrałeś/aś na egzamin). Uwzględnij, że ceny
są podawane z dokładnością do dwóch miejsc po przecinku.
Specyfikacja:
Dane: s – napis złożony z ciągu zer i jedynek, przecinka oraz dwóch cyfr po przecinku
(każda cyfra to 0 lub 1). Napis przed przecinkiem nie jest pusty.
Wynik: w – liczba oznaczająca wartość w systemie dziesiętnym liczby podanej w systemie
dwójkowym w postaci napisu s.
Wejście
111,11
Wyście
7,75
*/
#include<iostream>
using namespace std;

int pow(int n, int y)   //potęga
{
    if(y==0)
    return 1;
    else
    return n*pow(n,y-1);
    }

int bintodec(string bin)        //konweter z systemu binarnego na dziesiętny
{
    int x=0;
    for(int i=0;i<bin.size();i++)
    {
            if(bin.at((bin.size()-1)-i)=='1')
            x=x+pow(2,i);
            }
    return x;
    }

int main()
{
    string s, zl, gr;
    float w;
    bool przecinek;
    int tmp;

    cout<<"Podaj cene w formie binarnej z dokladnoscia do 2 miejsc po przecinku"<<endl;
    cin>>s;

    for(tmp=0;tmp<s.size();tmp++)       //przygotowywanie zmiennych pod przyjęcie odpowiednich danych
    if(s.at(tmp)==',')
    {
    zl.resize(tmp);
    break;
    }
    gr.resize(2);

    for(int i=0;i<zl.size();i++)        //przepisywanie danych
    zl.at(i)=s.at(i);

    for(int i=0;i<gr.size();i++)        //jak wyżej
    gr.at(i)=s.at(i+tmp+1);

    w=bintodec(zl)+(static_cast<float>(bintodec(gr))/4);      //przeliczanie ceny na system dziesiętny...

    cout<<"\n\n\tCena w systemie dziesietnym wynosi "<<w;     //...i zwracanie w postaci dziesiętnej

    cin.ignore();
    getchar();
    return 0;
    }
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT