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 w PASCAL napisać program rozpoznający liczby parzyste i nieparzyste?

Kowal1X2 03 Mar 2007 15:18 12232 6
REKLAMA
  • #1 3638664
    Kowal1X2
    Poziom 13  
    Posty: 126
    Ocena: 29
    Proszę o małą podpowiedź odnośnie programu który rozpoznaje jakie liczby wpisuje parzyste czy nie parzyste. Mniej więcej jak sie do tego zabrać. ??? jakie instrukcje użyć??.
  • REKLAMA
  • Pomocny post
    #2 3638728
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    Wystarczy sprawdzić najniższy bit liczby
    Jeżeli jest 1 , to liczba nieparzysta, inaczej liczba parzysta.

    W Pascalu dawno nie pisałem, ale to będzie coś w stylu

    IF ((liczba and 1) = 1) then nieparzysta
    else parzysta
  • REKLAMA
  • #3 3639630
    Kowal1X2
    Poziom 13  
    Posty: 126
    Ocena: 29
    Nie wiem czy ja coś robie nie tak napisałem tak

    program liczby;
    uses crt;
    var c:real;

    begin
    clrscr;
    gotoxy(10,10);
    writeln('Podaj liczbe');
    read(c);
    if ((c and 1)=1) then writeln('licza nieparzysta');
    else writeln('liczba parzysta');
    readkey;
    end.

    Coś jest nie tak ale jeszcze sam do tego nie mogę dojść.
  • REKLAMA
  • Pomocny post
    #4 3640014
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    c: real
    real to typ liczb rzeczywistych, masz tam liczby typu 1.23 itd. Nawet nie wiem jak się określa, czy taka liczba jest parzysta czy nie (i czy w ogóle coś takiego można określić)

    Poza tym typ real różni się sposobem zapisu liczb przez komputer i już ten trick z "and 1" nie będzie działał.

    Zmień c:real na c:integer; (liczby całkowite) i powinno śmigać.
  • REKLAMA
  • Pomocny post
    #5 3640067
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Witam

    Przecież można sprawdzić tak
    
    if (a mod 2)=0 then
    writeln('parzysta')
    else
    writeln('nieparzysta');


    i raczej typ nie będzie miał znaczenia.
  • Pomocny post
    #6 3640592
    Lucart
    Poziom 12  
    Posty: 9
    Pomógł: 1
    Ocena: 4
    Witam

    Kod podany przez Łuk_F będzie działał tylko w przypadku liczb całkowitych: byte, word, integer, itd.
    Operatory mod muszą być typu całkowitego.

    Jeśli chcesz sprawdzić liczbę rzeczywistą to tak:

      if (frac(c)) <> 0 then
         Write ('Liczba NIECALKOWITA')
      else
        if (trunc(c) mod 2)=0 then
          writeln('parzysta')
        else
          writeln('nieparzysta');



    wyjaśniam, że funkcja:
    frac(X) - część rzeczywista liczby X (np. frac (5.67) przyjmuje wartość 0.67)

    trunc(X) - część całkowita liczby X - typu longint (np. trunc (5.67) przyjmuje wartość 5)

    operator mod to "reszta z dzielenia" (dzielone liczby i wynik typu całkowitego longint) (np. 5 mod 2 da wynik 2, 5 mod 1 da wynik 0)

    Pozrawiam
    Artur
  • #7 3640845
    Kowal1X2
    Poziom 13  
    Posty: 126
    Ocena: 29
    Faktycznie MirekCz teraz sam też myśle że to nie miało ładu i składu z tym real. ale wiesz zaczynam sie dopiero w to bawić przez studia które mnie do tego zmusiły. Dzięki bardzo że na elektrodę można liczyć. Pozdrawiam.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy napisania programu w Pascalu rozpoznającego liczby parzyste i nieparzyste. Kluczową kwestią jest użycie odpowiedniego typu danych – liczby całkowite (integer) zamiast rzeczywistych (real), ponieważ operacje bitowe i modulo działają tylko na typach całkowitych. Proponowane rozwiązania obejmują sprawdzenie najniższego bitu liczby za pomocą operatora bitowego AND (liczba and 1) lub zastosowanie operatora modulo (mod 2) do określenia parzystości. W przypadku liczb rzeczywistych sugerowano najpierw sprawdzenie, czy liczba jest całkowita za pomocą funkcji frac(), a następnie zastosowanie trunc() i operatora mod do oceny parzystości. Podsumowując, poprawny program powinien używać typu integer i operatora mod do rozpoznawania liczb parzystych i nieparzystych w Pascalu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA