Kalkulator bitowy java

0

Cześć :)

Mam problem z napisaniem dość prostego programu, a mianowicie kalkulatora bitowego.
Jego treść to: W poniższym nagłówku metody dostarczono, dwie tablice zmiennych typu char, znakoperacji, oraz zmienną int:
public static void calc(char[ ]number1,char[ ]number2,char operator,←↩int system) ;
Tablice te zawierają ciągi cyfr (o dowolnej długości) opisujące liczby całkowite dodatnie w systemie dziesiątkowym.
Natomiast operator określa operację jaką należy wykonać.
Zaimplementuj program realizujący kalkulator dodawania i odejmowania,
w którym wszystkie operacje programistyczne zostaną zrealizowane przy pomocy operatorów bitowych
a wynik zostanie wyświetlony na ekranie w postaci ciągu cyfr w systemie określonym przez zmienną system.
Dla ułatwienia przyjmij, że wartość ta to liczba całkowita w przedziale 2 do 16.
Czy naprowadziłby mnie ktoś jak się do tego zabrać?

Z góry dziękuję :)

1
jaszczur512 napisał(a):

Czy naprowadziłby mnie ktoś jak się do tego zabrać?

Są tu trzy osobne problemy:

  • implementacja dodawania i odejmowania dla liczb nieograniczonej wielkości
  • implementacja dodawania i odejmowania za pomocą operatorów bitowych
  • konwersja liczby z char[] dziesiętnie do postaci na której można operować i z powrotem do postaci char[] ale o podstawie od 2 do 16

Z którą częścią masz problem? Co już napisałeś?

0

Jeszcze nic sensownego, bo nie do końca wiem jak się za to zabrać.
Próbowałem wykorzystać operatory bitowe, ale nic nie wyszło.

0

Dodawanie i odejmowanie robisz jak w szkole. Dodajesz dwie cyfry, jeśli wyjdzie liczba większa niż 9 to przenosisz jedynkę do kolejnego rządku.

Nie wiem, co by tu miały robić operacje bitowe (chyba że masz to przekonwertować do ciągu intów). Natomiast jeśli chcesz to potem skonwertować do wybranego systemu to potrzebujesz jeszcze zaimplementować dzielenie z resztą. Z tego co pamiętam to dość niewdzięczne zadanie.

0

To chyba nie ma sensu kompletnie?

public static void main(String[ ]args) {

    public static void calc(char[ ]number1,char[ ]number2,char operator,←↩int system);

    int number1= x;
    int number2 = y;

    System.out.println("Podaj x");
    System.out.println("Podaj y");

    if (x+y >2 & x+y<16);
    System.out.println("Wynik:");
    else (x-y >2 & x-y<16);
    System.out.println("Wynik:");
0

Trzymaj szablon który działa ale używa operacji których nie wolno ci pewnie użyć:

import java.math.BigInteger;

public class WriteOnly {

  public static void main(String[] args){
    System.out.println("WriteOnly.pl");
    calc("456".toCharArray(), "123".toCharArray(), '+', 10);
    calc("456".toCharArray(), "123".toCharArray(), '-', 10);
    calc("456".toCharArray(), "123".toCharArray(), '+', 2);
    calc("456".toCharArray(), "123".toCharArray(), '-', 2);
  }

  static void  calc(char[] number1, char[] number2, char operator, int system)  {
    final BigInteger left  = new BigInteger(new String(number1));
    final BigInteger right = new BigInteger(new String(number2));
    final BigInteger result = apply(left, right, operator);
    final String string  = result.toString(system);
    System.out.println(string);

  }

  static BigInteger apply(BigInteger number1, BigInteger number2, char operator)  {
      switch (operator) {101001101
        case '+' : return number1.add(number2);
        case '-' : return number1.subtract(number2);
        default: throw new IllegalArgumentException("Operator " + operator);
      }
  }
}

Pewnie nie wolno Ci użyć BigInteger. BTW takie zadanie dla kogoś kto nie nie zna składni deklaracji metody, oraz nie umie wczytać znaków jest dziwne. Trochę jakbyś pominą pół roku nauki. Ale nie ważne. Powodzenia

0

Dodałem obie tablic, czy zrobiłem to w dobry sposób?

public static void main(String[ ]args)  {

    public static void calc(char[ ]number1,char[ ]number2);

    char[] number1 = new char[];

    for (char i = 0; i < 16; i++)
        number1[i] = i + 2;

    char zmienna = number1[2];

    for (char i = 0; i < 16; i++);

    System.out.println("number1");

    char[] number2 = new char[];

    for (char i = 0; i < 16; i++)
        number2[i] = i + 2;

    char zmienna = number2[2];

    for (char i = 0; i < 16; i++);

    System.out.println("number2");

    char[] array1and2 = new char[array1.length + array2.length];
    System.arraycopy(array1, 0, array1and2, 0, array1.length);
    System.arraycopy(array2, 0, array1and2, array1.length, array2.length);

Jeśli chodzi o poziom wiedzy, to wielki mętlik. Faktycznie, rozpocząłem naukę od początku, bo zatrzymałem się na tablicach, z których ogarnięciem mam problem.
Dziękuję bardzo za kod :))))))

1

Małe review:

     public static void main(String[ ]args)  {

         public static void calc(char[ ]number1,char[ ]number2); //To się nie skompiluje

         char[] number1 = new char[]; // nadpisujesz parametr, to się chyba nawet nie skompiluje?

         for (char i = 0; i < 16; i++) // a co jak tablica ma inną ilość elementów niż 16?
             number1[i] = i + 2; //co to według ciebie ma robić?

         char zmienna = number1[2]; // dlaczego akurat 2?

         for (char i = 0; i < 16; i++); // to nic nie robi

         System.out.println("number1");

         char[] number2 = new char[]; // nadpisujesz parametr, to się chyba nawet nie skompiluje?

         for (char i = 0; i < 16; i++) // a co jak tablica ma inną ilość elementów niż 16?
             number2[i] = i + 2; //co to według ciebie ma robić?

         char zmienna = number2[2]; //dlaczego akurat 2?

         for (char i = 0; i < 16; i++); // to nic nie robi

         System.out.println("number2");

         char[] array1and2 = new char[array1.length + array2.length]; //dodałeś tablice, dosłownie z "10" + "10" dostaniesz "1010" (chyba że gdzieś jest jeszcze błąd) .testowałeś to w ogóle?
         System.arraycopy(array1, 0, array1and2, 0, array1.length);
         System.arraycopy(array2, 0, array1and2, array1.length, array2.length);

Jeśli chodzi o poziom wiedzy, to wielki mętlik

Tak

0

Nie chce się skompilować, wyskakuje "illegal start of expression"

0

Czytasz co ludzie piszą? @KamilAdam dodał Ci komentarze,tłumaczące dlaczego sie nie kompiluje; masz jakieś normalne IDE?

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot