Zadanie matura 2013 - Liczby binarne
Kod był wyświetlany 2338 razy.
    /*
	Name: Zadanie matura 2013 - Liczby binarne 
	Copyright: GPL GNU
	Author: Jakub Pamula
	Date: 09-12-13 08:07
	Description: rozwiązanie zadania pierwszego matura 2013.
	c) Dla podanej poniżej specyfikacji zapisz (w postaci listy kroków, schematu blokowego lub
	   w wybranym języku programowania) algorytm, który oblicza wartość liczby zapisanej
       w kodzie U1.
       Specyfikacja algorytmu
		Dane:
		d – długość zapisu U1, d .1
		bin.1..d . – tablica, której elementami są pojedyncze bity zapisu U1, z czego bin.1.
		to bit znaku
		Wynik:
		x – wartość liczby zapisanej w tablicy bin.1..d .
		Przykład: Dla d . 5 i bin.1..5. . .10110. wynikiem jest x . .9.
		*/

#include <iostream>
#include <stdio.h>
#include <string.h> //potrzebne do stringa
#include <math.h> //potrzebne do fukcji pow()
using namespace std;

int main()
{
	int d, i=d-1, x=0, j=0, y=0;
	
	cout<<"Podaj dlugosc zapisu: "; //wprowadzenie wszystkich danych i warunki poczatkowe
	cin>>d;
	string bin;
	cout<<"Podaj liczbe: ";
	cin>>bin;
	
	if(bin[0]=='0')					//Sprawdzenie pierwszej wartosc by ustalić znak
		for(i=d-1;i>0;i--) 
		{							//zwykla zamiana z binarnego na dziesietny z pominieciem pierwszej wartosci
		y=(bin[i]-(int)'0');		
		x+=y*pow(2,j);
		j++;
		}
	else
		{							
			for(i=d;i>0;i--)		//negacja poprzedzajaca zamiane na dziesietny
			if(bin[i]=='1')
			bin[i]='0';
			else
			bin[i]='1';
			
			
			for(i=d-1;i>0;i--)		//po negacji mozemy uzyc zwyczajnego sposobu na zamiane binarnego na dziesietny.
			{
			y=(bin[i]-(int)'0');		
			x+=y*pow(2,j);
			j++;
			}
			x=-x; //zamiana znaku wyniku koncowego
		}
	
	cout<<"wynosi: "<<x;
	cin.ignore();
	getchar();
	return 0;
	
}    
Pobierz plik tekstowy
Załączniki
Administrator WJL
PHP&SQL coded by NOVA-IT