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] - Jak wyświetlić parzyste i nieparzyste liczby w tablicy?

lady_dark21 07 Cze 2010 18:19 2319 7
REKLAMA
  • #1 8165626
    lady_dark21
    Poziom 10  
    Posty: 5
    
    program tablice;
     uses CRT;
     var
        T         :array[1..3,1..3] of integer;
        i,j       :integer;
    
    
      begin
        for i:=1 to 3 do
          for j:=1 to 3 do T[i,j]:=random(10)+1;
    
    
    
     begin
          for i:=1 to 3 do begin
            for j:=1 to 3 do write(' ',T[i,j]:2);
            writeln;
           end;
          readln;
    
        end;
    end.
    
    


    zrobiłem taki prosty programik mam teraz pytanko znacie jakiś fragmenty kodu/operacji by z tych liczb np. wyświetlał same parzyste i nieparzyste
    czy po przekątnych np. same 4
    a reszta 0

    i inne operacje jakieś przedstawiające działanie tablic
  • REKLAMA
  • #2 8166104
    wrych
    Poziom 20  
    Posty: 279
    Pomógł: 37
    Ocena: 22
    Chyba niezbyt jasno sformułowałeś pytania...
    Jedna z odpowiedzi byłaby taka:
        
    for i := 1 to 3 do 
          for j := 1 to 3 do if i = j then T[i, j] := 4 else T[i, j] := 0;
    
  • REKLAMA
  • #3 8166752
    lady_dark21
    Poziom 10  
    Posty: 5
    orginał programik daje takie liczby

    1, 1, 9
    3, 3, 7
    4, 2, 4


    teraz muszę dopisać fragment kodu by wyświetlił same liczby parzyste, nieparzyste

    i np. przekątna (1, czy 2) o liczbie 3 po ukosie
    reszta ma być zapisana np. zerami

    z parzystymi i nie wiem ze sie robiło takie cosik
    if (i mod 2 )=1 nieparzyste
    if (i mod 2 )=0 parzyste
    then writeln;

    tylko gdzie i jak to wstawić bo kombinuje i ciągle podstawa się wyświetla

    1, 1, 9
    3, 3, 7
    4, 2, 4


    to co podałeś to ma być przekątna zapewne tylko ze nie wiem gdzie to zapodać
    plis jak umiesz to napisz cały kod bo oszaleć można z tymi tablicami dwuwymiarowymi

    co do pojedynczej kolumny czy wiersza umiem zmienić liczbę jak coś
  • #4 8167012
    wrych
    Poziom 20  
    Posty: 279
    Pomógł: 37
    Ocena: 22
    W Twoim programie brakuje procedury Randomize, której zadaniem jest "zamieszanie kul w bębnie maszyny losującej" i dlatego zawsze otrzymujesz te same liczby.

    Tablice dwuwymiarowe nie są takie trudne, tylko przemyśl ich budowę...
    Pierwszy wiersz, i = 1:
    T[1, 1] T[1, 2] T[1, 3] (kolumny: j = 1, 2, 3)
    Drugi wiersz, i = 2:
    T[2, 1] T[2, 2] T[2, 3] (kolumny: j = 1, 2, 3)
    Trzeci wiersz, i = 3:
    T[3, 1] T[3, 2] T[3, 3] (kolumny: j = 1, 2, 3)
    Oczywiście wymiary nie muszą być identyczne (ale tak było w Twoim przykładzie).
    Dla i=j dostajemy przekątną, np:
    T[1, 1] = 4, T[2, 2] = 4, T[3, 3] = 4 a reszta przyjmuje wartość 0 (mój fragment kodu).
    Druga przekątna w tym przypadku spełnia warunek i + j = 4, zatem można ją wypełnić np. 1 w taki sposób:
    for i := 1 to 3 do 
          for j := 1 to 3 do if (i + j) = 4 then T[i, j] := 1 else T[i, j] := 0; 

    Z wydrukiem wartości parzystych lub nieparzystych dobrze kombinujesz - reszta z dzielenia przez rozstrzyga o parzystości (0) i nieparzystości (1)...
  • REKLAMA
  • #5 8171132
    lady_dark21
    Poziom 10  
    Posty: 5
    bez randomize jest ,żebym miał te same liczby

    dzięki za pomoc z przekątnymi w końcu skumałem

    zrobiłem z nieparzystymi - luknij

    Cytat:

    program tablice;
    uses CRT;
    var
    T :array[1..3,1..3] of integer;
    i,j :integer;


    begin


    for i:=1 to 3 do
    for j:=1 to 3 do T[i,j]:=random(10)+1;


    for j:=1 to 3 do if (i mod 2)=0 then T[i,j]:=0;

    begin
    for i:=1 to 3 do begin
    for j:=1 to 3 do write(' ',T[i,j]:2);

    writeln;
    end;
    readln;

    end;
    end.


    niby ok tylko czemu sprawdza mi tylko 3 wiersz a te 2 pierwsze nie ??
    jak dam np.

    for j:=1 to 3 do if (i mod 2)=0 then T[2,j]:=0;

    to mi sprawdza 2 wiersz i ewent. zamienia na 0 tak jak powinno być
    analogicznie z 1 wierszem T[1,j]:=0;

    - jak zrobić by całość tablicy sprawdzało od 1 do 3 wiersza
  • REKLAMA
  • #6 8171368
    lanky
    Poziom 17  
    Posty: 149
    Pomógł: 27
    Ocena: 7
    Przeanalizuj sobie kod i zobacz jakie głupoty powypisywałeś.
    
    for j:=1 to 3 do if (i mod 2)=0 then T[i,j]:=0; 
    

    w tym momencie to oznacza co
    
    for j:=1 to 3 do if (3 mod 2)=0 then T[3,j]:=0; 
    

    A dlaczego tak oznacza? bo powyżej zakończyła się twoja pętla
    "for i:=1 to 3 do" i zmienna "i" stanęła na liczbie 3

    i zobacz sobie gdzie wstawiłeś begin
  • #7 8171446
    lady_dark21
    Poziom 10  
    Posty: 5
    napiszesz mi to poprawnie tak żeby wyświetlał liczby parzyste d:)
    bo muszę spadać do pracy ;widzę że będę miał co analizować
    dzięki pozdrawiam
  • #8 8171461
    lanky
    Poziom 17  
    Posty: 149
    Pomógł: 27
    Ocena: 7
    
    for i:=1 to 3 do
    for j:=1 to 3 do
    begin
      T[i,j]:=random(10)+1; // przydzielasz liczby do tablicy
      if T[i,j] mod 2 = 0 then T[i,j]:= 0; // i odrazu sprawdzasz
    end;
    ---------------- lub --------------------
    for i:=1 to 3 do
    for j:=1 to 3 do
      T[i,j]:=random(10)+1; // przydzielasz
    
    for i:=1 to 3 do
    for j:=1 to 3 do
     if T[i,j] mod 2 = 0 then T[i,j]:= 0; // a potem sprawdzasz
    

Podsumowanie tematu

✨ Użytkownik stworzył program w Turbo Pascal, który generuje losowe liczby w tablicy 3x3 i poszukuje sposobu na wyświetlenie tylko liczb parzystych lub nieparzystych oraz na manipulację przekątnymi tablicy. W odpowiedziach zasugerowano użycie pętli do iteracji przez tablicę oraz zastosowanie operatora modulo do identyfikacji parzystości liczb. Wskazano również na konieczność użycia procedury Randomize, aby uzyskać różne losowe liczby. Użytkownik miał trudności z poprawnym umiejscowieniem kodu, co prowadziło do błędów w logice programu. Ostatecznie zaproponowano poprawne fragmenty kodu, które umożliwiają realizację zamierzonych operacji na tablicy.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA