logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak stworzyć kalkulator w Pascalu do dodawania dużych liczb?

mlody3 03 Maj 2005 11:18 2991 6
REKLAMA
  • #1 1457156
    mlody3
    Poziom 11  
    Posty: 5
    Potrzebuje wsparcia, musze stworzyc kalkulator w Pascalu dodajacy duze liczby (np. 3421910383 + 21329381291) nie bardzo potrafie sobie z tym poradzic a od tego zalezy moja ocena koncowa z programowania wiec jesli ktos by byl na tyle uprzejmy to bardzo bym prosil zeby mi go napisal albo podsunal jakis pomysl. DziEKI
  • REKLAMA
  • #2 1457223
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Pokarz co już zrobiłeś, tak będzie szybciej.
  • REKLAMA
  • #3 1458316
    simson2
    Poziom 12  
    Posty: 18
    Pomógł: 1
    Ocena: 1
    Program dodający duże liczby naturalne:
    program dodaj_natur;
    { Testujacy dzialanie funkcji, operujacej na duzych }
    { liczbach (pamietanych w zmiennych typu String).   }
    
    
    uses
      Crt;
    
    type
      TLiczba = String;
    
    function Dodaj (A, B: TLiczba) : TLiczba;
    { Funkcja dodaje dwie duze liczby. }
    var
      C : String;
      Przeniesienie, I, Liczba : Byte;
    begin
      C := '';
      while Length(B) < Length(A) do B := '0' + B;
      while Length(A) < Length(B) do A := '0' + A;
    
      Przeniesienie := 0;
      for I := Length (A) downto 1 do
      begin
        Liczba := Ord(A[I])+Ord(B[I])-2*Ord('0') + Przeniesienie;
        Przeniesienie := Liczba div 10;
        Liczba := Liczba mod 10;
        C := Chr(Liczba+Ord('0')) + C;
      end;
    
      if (Przeniesienie > 0) then
        if Length(C)=255 then
          RunError(201)
        else
          C := Chr(Przeniesienie+Ord('0')) + C;
      Dodaj := C;
    end; {--------------------------- Dodaj }
    
    var
      Liczba1, Liczba2 : String;
    
    begin
      writeln;
      repeat
        write ('Podaj pierwsza liczbe (Enter aby zakonczyc): '); readln (Liczba1);
        if (Liczba1<>'') then
        begin
          write ('Podaj druga liczbe: '); readln (Liczba2);
          writeln (Liczba1+'+'+Liczba2+'='+Dodaj (Liczba1, Liczba2));
        end;
      until (Liczba1<>'');
    end.
  • REKLAMA
  • #5 1464931
    mlody3
    Poziom 11  
    Posty: 5
    Simson2 - dzieki za ten program, powiedz mi jeszcze tylko czy to jest kompletny program bo mi nie dziala jak wpisze druga liczbe i nadusze enter to sie wylancza nie pokazuje wyniku, a co do mojej pracy w tym temacie to nic nie zrobilem bo nie potrafie:)

    Dodano po 20 [minuty]:

    Jeszcze jedna sprawa potrzebuje to jak najszybciej, nawet na jutro (najpozniej na sobote 7 maja) Wiec prosze o szybka pomoc.
  • REKLAMA
  • #6 1465352
    Sam Sung
    Poziom 33  
    Posty: 2039
    Pomógł: 227
    Ocena: 611
    ZeeWolf napisał:

    
    type 
      TLiczba = String; 
    

    super, ale... po co? Nie lepiej po prostu
    
     a, b: extended
    

    ?
    Pozdrawiam.


    Heh, "duże" liczby to chyba takie, których nie można w banalny sposób dodać operatorem +. Typ extended przechowuje liczby w postaci zmiennoprzecinkowej (cecha i mantysa) i nawet jeśli można do niego przypisać bardzo duże liczby, to pamiętanych jest niewielka liczba cyfr znaczących (chyba 10).
    Pozdrawiam
  • #7 1466283
    mun
    Poziom 16  
    Posty: 73
    Pomógł: 24
    Ocena: 4
    Witam,

    Jeżeli chcesz zobaczyć wynik na ekranie, wpisz np. Readln; przed końcowym end. lub - ustaw we właściwościach, żeby się okno nie zamykało po zakończeniu programu.

    Pozdrawiam

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy stworzenia kalkulatora w języku Pascal do dodawania dużych liczb naturalnych, przekraczających zakres standardowych typów liczbowych. Zaproponowano implementację funkcji operującej na liczbach przechowywanych jako łańcuchy znaków (String), która wyrównuje długości obu liczb przez dopełnienie zerami i sumuje je od końca, uwzględniając przeniesienia. Zwrócono uwagę, że typ extended nie jest odpowiedni do precyzyjnego dodawania bardzo dużych liczb ze względu na ograniczoną liczbę cyfr znaczących. Podano wskazówki dotyczące poprawnego wyświetlania wyniku w konsoli, np. przez dodanie polecenia Readln przed końcem programu, aby okno nie zamykało się automatycznie. Autor prosił o szybkie wsparcie, gdyż od tego zależała jego ocena końcowa.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA