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

Turbo Pascal - wybieranie liczb podzielnych przez 2 z tablicy

Sady 21 Lis 2007 14:02 13615 7
REKLAMA
  • #1 4504742
    Sady
    VIP Zasłużony dla elektroda
    Posty: 2502
    Pomógł: 115
    Ocena: 373
    W tej dziedzinie jestem bardzo słaby i dopiero zaczynam...

    Me zadanie:

    Napisać program, który wybierze i wypisze z tablicy 10-cio elementowej liczby podzielne przez 2.
    Jeśli nie znalazł - komunikat

    
    program tablica;
    uses crt;
    
    var
    T:array[1..10] of real;
    liczba:real;
    i:byte;
    
    begin
    clrscr;
    writeln ('Wpisz 10 liczb');
    
    for i:=1 to 10 do
    readln (T[i]);
    
        for i:=1 to 10 do 
        if (T[i])/2 then
        liczba:=T[i];
    
        writeln ('Podzielna przez 2 to ', liczba:0:2);
    
    readln;
    end.
    


    Oczywiście program nie działa. Proszę o naprowadzenie - co robię źle...
  • REKLAMA
  • Pomocny post
    #2 4504910
    wojcik89
    Poziom 12  
    Posty: 58
    Pomógł: 3
    Ocena: 7
    program tablica;
    uses crt;
    var
    t:array[1..10] of integer;
    i:integer;
    begin
    clrscr;
    writeln ('Wpisz 10 liczb');
    for i:=1 to 10 do
    readln (t[i]);
    writeln('liczby podzielne przez 2 to ');
     for i:=1 to 10 do
        begin
    	if t[i] mod 2 =0 then
    	 writeln(t[i]);
    	end;
    readln;
    end;

    tak wygląda poprawiony program troche go przerobiłem

    Dodano po 3 [minuty]:

    aby sprawdzić czy liczba jest podzielna przez inną stosuje sie funkcje mod która zwraca reszte z dzielenia np a mod 2 wyświetla reszte z dzienia przez 2.
    P.S Napisałem drugi post bo w pierwszym nie mogłem więcej znaków napisać.
    Moge wiedzieć dlaczego?
    pozdrawiam.
  • REKLAMA
  • #3 4505556
    Sady
    VIP Zasłużony dla elektroda
    Posty: 2502
    Pomógł: 115
    Ocena: 373
    Do tego jeszcze nie dotarłem, wielkie dzięki za pomoc.
    Jeszcze jedna kwestia mnie męczy w owym programiku.

    Ma za zadanie wyświetlić: BRAK - ale tylko raz.

    I zaczynam kombinować. Czyli:

    program tablica;
    uses crt;
    var
    t:array[1..10] of integer;
    i:integer;
    
    begin
    clrscr;
    
    writeln ('Wpisz 10 liczb');
    for i:=1 to 10 do
    readln (t[i]);
    writeln('liczby podzielne przez 2 to ');
       for i:=1 to 10 do
         begin
         if t[i] mod 2 =0 then
         writeln(t[i])
       
         else
         writeln ('BRAK');
         end;
    
    readln;
    end.


    Ale program za każdym razem po sprawdzeniu wyświetli albo liczbę albo BRAK - co jest oczywiste.
    Proste pytanie - jak rozwiązać tą kwestie.
  • #4 4505658
    wojcik89
    Poziom 12  
    Posty: 58
    Pomógł: 3
    Ocena: 7
    Sady napisał:


    Ma za zadanie wyświetlić: BRAK - ale tylko raz.


    Tego nie rozumie, o co ci dokładnie chodzi.
  • #5 4505724
    Sady
    VIP Zasłużony dla elektroda
    Posty: 2502
    Pomógł: 115
    Ocena: 373
    Jeśli nie będzie jakiej kolwiek liczby podzielnej przez 2 (w całej tablicy). Ma wyświetlić przykładowo "BRAK"

    A w napisanym programie będzie wypisywał za każdym razem, gdy nie będzie spełniony warunek dzielenia.

    Mam nadzieje, że już jaśniej.
  • REKLAMA
  • #6 4506110
    wojcik89
    Poziom 12  
    Posty: 58
    Pomógł: 3
    Ocena: 7
    program tablica;
    uses crt;
    var
    t:array[1..10] of integer;
    i,n:integer;
    
    begin
    clrscr;
    n:=10;
    writeln ('Wpisz 10 liczb');
    for i:=1 to 10 do
    readln (t[i]);
    writeln('liczby podzielne przez 2 to ');
       for i:=1 to 10 do
            begin
                 if t[i] mod 2 =0 then
                      writeln(t[i])
    		else
    		n:=n-1;
    		if n=0 then 
    		writeln('BRAK');
    		end;
    		readln;
    		end.


    można to zrobić na przykład tak nie wiem czy jest jakiś prostszy sposób ale ten wydaje mi się prosty.

    [/code]
  • Pomocny post
    #7 4507765
    Łuk_F
    Poziom 17  
    Posty: 257
    Pomógł: 34
    Ocena: 12
    Witam.
    Można wykorzystać zmienną logiczną.

    program tablica;
    uses crt;
    var
    t:array[1..10] of integer;
    i:integer;
    tak:boolean;
    
    begin
    clrscr;
    tak:=false;
    writeln ('Wpisz 10 liczb');
    for i:=1 to 10 do
         readln (t[i]);
    writeln('liczby podzielne przez 2 to ');
    for i:=1 to 10 do
         if t[i] mod 2 =0 then
         begin
            tak:=true;
            writeln(t[i]);
         end;
    if not tak then
         writeln('BRAK');
    readln;
    end.
  • REKLAMA
  • #8 4536448
    Sady
    VIP Zasłużony dla elektroda
    Posty: 2502
    Pomógł: 115
    Ocena: 373
    Rozwiązałem to tak:

    program tablica;
    uses crt;
    
    var
    T:array[1..10] of integer;
    n,i:integer;
    
    begin
    clrscr;
    writeln ('Wpisz 10 liczb');
    n:=0;
    
    for i:=1 to 10 do
    readln (T[i]);
    writeln ('Liczby podzielne przez 2 to ');
    
        for i:=1 to 10 do
        begin
        if T[i] mod 2 =0 then
        writeln (T[i])
    
    	else
            n:=n+1;
            if n=10 then
            writeln ('Brak liczb podzielnych');
        end;
    
    readln;
    end.


    Niby wszystko chodzi. Zawsze to człowiek już bogatszy w wiedzę.
    Podziękowania dla wszystkich którzy włączyli się do tematu.

Podsumowanie tematu

✨ Dyskusja dotyczy napisania programu w Turbo Pascalu, który z tablicy 10-elementowej wybierze i wypisze liczby podzielne przez 2, a w przypadku braku takich liczb wyświetli komunikat "BRAK". Pierwotny kod zawierał błędy, m.in. niepoprawne sprawdzanie podzielności przez 2. Poprawne rozwiązanie wykorzystuje operator mod do sprawdzenia reszty z dzielenia liczby przez 2. Wskazano, że aby wyświetlić komunikat "BRAK" tylko raz, należy zastosować zmienną logiczną (boolean) lub licznik, który śledzi, czy znaleziono liczby podzielne przez 2. Przykładowy poprawny kod deklaruje tablicę typu integer, wczytuje liczby, iteruje po tablicy, wypisuje liczby podzielne przez 2, a jeśli żadna nie spełnia warunku, wyświetla "BRAK". Autor samodzielnie zaproponował rozwiązanie z licznikiem, które działa poprawnie. Dyskusja zawiera także wyjaśnienie działania operatora mod oraz przykłady kodu w Turbo Pascalu.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA