240.5.5_1 Sa tastature učitati dva binarna broja. Izračunati i ispisati sumu u binarnom brojnom sistemu.
Opis rješenja:
Opis programa:
Listing programa:
package zadatak;
import java.util.Scanner;
public class P250240551 {
// provjera da li su sve cifre 0 ili 1- binaran broj
while (a1 != 0 && a2 != 0 ) { // ponavljaj sve dok ne provjeris sve cifre oba broja
// I broj
cif1 = a1 % 10; // izdvoji cifru sa desne strane
a1 = a1 / 10; // odbaci cifru sa desne strane - slijedeće izdvajanje
if (cif1 != 0 && cif1 != 1) { // ako cifra nije ni 0 ni 1 - novo učitvanje
System.out.print("ucitaj prvi binaran broj: ");
br1 = input.nextInt(); // novi broj
a1 = br1; // nova vrijednost pomoćne varijable
} // if
// II broj
cif2 = a2 % 10; // izdvoji cifru sa desne strane
a2 = a2 / 10; // odbaci cifru sa desne strane - slijedeće izdvajanje
if (cif2 != 0 && cif2 != 1) { // ako cifra nije ni 0 ni 1 - novo učitvanje
System.out.print("ucitaj drugi binaran broj: ");
br2 = input.nextInt(); // novi broj
a2 = br2; // nova vrijednost pomoćne varijable
} // if
} // while
// sabiranje vrijdnosti za svaku cifru
a1 = br1; // nova vrijednost pomoćne varijable
a2 = br2; // nova vrijednost pomoćne varijable
while (a1 != 0 || a2 != 0 ) { // ponavljaj sve dok ne provjeris sve cifre oba broja
cif1 = a1 % 10; // izdvoji cifru sa desne strane I broj
a1 = a1 / 10; // odbaci cifru sa desne strane - slijedeće izdvajanje II broj
cif2 = a2 % 10; // izdvoji cifru sa desne strane II broj
a2 = a2 / 10; // odbaci cifru sa desne strane - slijedeće izdvajanje II broj
sum = cif1 + cif2 + prenos; // suma dvije cifre i prethodnog prenosa
switch (sum) {
case 0: case 1: // sum < 2 = sum ostaje, prenos 0
prenos = 0; // prenos 1
break;
case 2:
sum = 0; // sum 2 = 10
prenos = 1; // prenos 1
break;
case 3:
sum = 1; // sum 3 = 11 ==> 1 1
prenos = 1; // prenos 1
break;
} // switch
s = s + sum * p; // saberi novu cifru uvećanu za koeficijen sa starom sumom
p = p * 10; // uvečaj koeficijen za 10 - p*10
} // while
s = s + prenos * p; // ako ima prenos sabrace slijedeći koeficijent
System.out.println(br1 + " + " + br2 + " = " + s);
}
}
Ispis na ekranu:
Sabiranje dva binarna broja
Ucitaj prvi binaran broj: 1111
Ucitaj drugi binaran broj: 1011
1111 + 1011 = 11010
Index
|