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: Prvo se provjerava da li su pisane cifre 0 ili 1 (binaran broj.

Listing programa:

package zadaci;
import java.util.Scanner;
public class Zadatak24010550 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int s = 0;
		System.out.print("Ucitaj binaran broj ");
		int br = input.nextInt();
		int cif; // izdvojena cifra
		int p = 1; // koeficijent uvaćanja p*2
		int a = br; // a - pomocna varijabla
		
		// provjera da li su sve cifre 0 ili 1- binaran broj
		while (a != 0) { // ponavljaj sve dok ne provjeris sve cifre
			cif = a % 10; // izdvoji cifru sa desne strane
			a = a / 10; // odbaci cifru sa desne strane - slijedeće izdvajanje
			if (cif != 0 && cif != 1) { // ako cifra nije ni 0 ni 1 - novo učitvanje
				System.out.print("ucitaj binaran broj =");
				br = input.nextInt(); // novi broj
				a = br; // nova vrijednost pomoćne varijable
			} // if
		} // while

		// sabiranje vrijdnosti za svaku cifru
		a = br;		 // nova vrijednost pomoćne varijable
		while (a != 0) {    // ponavljaj sve dok ne izdvojiš sve cifre
			cif = a % 10;   // izdvoji cifru sa desne strane
			a = a / 10;     // odbaci cifru sa desne strane - slijedeće izdvajanje
			s = s + cif * p;   	// saberi novu cifru uvećanu za koeficijen sa starom sumom
			p = p * 2;			// uvčaj koeficijen za 2 - p*2
		} // while
		System.out.print("binaran broj " + br + " = dekadni broj " + s);
	}
}

II Varijanta - Korišćenje metoda
package zadaci;
import java.util.Scanner;
public class Zadatak24010550 {

	public static int countDigits(int n) {
		int i = 0;
		for (n = n; n > 0; n /= 10) {
			i++;
		}
		return i;
	}

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		double s = 0, k;
		System.out.print("Učitaj binaran broj (max 32 cifre) ");
		int n = input.nextInt();
		int m = countDigits(n);
		for (int br = 0; br <= m; br++) {
			k = (n % 10) * Math.pow(2, br);
			n /= 10;
			s = s + k;
		}  // for
		System.out.println("u dekadnom sistemu je  " + s);
	}
}

Učitaj binaran broj (max 32 cifre) 1011101
u dekadnom sistemu je  93.0

Riješeni zadaci 2    Index