Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Komputery - oprogramowanie i sprzęt (https://forum.cdrinfo.pl/f113/)
-   -   Pascal...pytanie (https://forum.cdrinfo.pl/f113/pascal-pytanie-43359/)

Patrix 24.11.2004 21:38

Pascal...pytanie
 
Chodzi mi o warunek w Pascalu:
Kod:

IF a+b<0 THEN WriteLn('blabla (blabla): ', -1*(a+b), ' blabla !!!')
problem w tym, że mam potrzebę wstawienia dwóch nierówności po IF
np: 'a+b>=0' i np '-1*(a+b)>=0'

Jeśli ktoś nie kuma o co mi chodzi to podam przykałd na C++:
Kod:

if((a>=5)&&(a<=21))
{
}

W C++ w tym wypadku stosuje sie znaczek '&&' -(i) bub '||' -(lub)

Jak to jest w Pascalu ??

MacGyver 24.11.2004 21:42

W Pascalu wstawiasz je między BEGIN a END (zaraz po THEN)
...bynajmniej tak jest w Delphi - a to też Pascal

...::Update::...
QRde, zle zrozumiałem :ysz:
...dajesz w nawiasach pierwszy warunek potem wpisujesz AND i drugi warunek

cyki 24.11.2004 21:45

Jak dla mnie to będzie:
IF a+b >= 0 AND -1*(a+b) >= 0 THEN Begin [...] End;

Patrix 24.11.2004 21:46

Cytat:

Napisany przez MacGyver
W Pascalu wstawiasz je między BEGIN a END (zaraz po THEN)
...bynajmniej tak jest w Delphi - a to też Pascal

...::Update::...
QRde, zle zrozumiałem :ysz:
...dajesz w nawiasach pierwszy warunek potem wpisujesz AND i drugi warunek

Wiem gdzie sie to wstawia :)
chodzi mi o to jaki ma być znaczek między dwoma nierównościami po IF (chce to zrobić w jednym warunku)...

MacGyver 24.11.2004 21:47

Cytat:

Napisany przez cyki
Jak dla mnie to będzie:
IF a+b >= 0 AND -1*(a+b) >= 0 THEN Begin [...] End;

A dokładniej (bo wywali błąd):
IF ((a+b>=0) AND (-1*(a+b)>=0)) THEN Begin [...] End

Cytat:

chodzi mi o to jaki ma być znaczek między dwoma nierównościami po IF (chce to zrobić w jednym warunku)
AND

Patrix 24.11.2004 21:52

MacGyver i cyki

- dzięki, działa :)

PS
reputy poszły.... ;)

MacGyver 01.12.2004 12:16

Ja mam pytanie dotyczące Delphi:
Mam formatkę na której umieszczam 4 obiekty typu "Panel" (panele są tych samych rozmiarów i w tych samych miejscach, w ten sposób że się pokrywają).
Pytanie: czy istnieje jakaś instrukcja, żeby dany panel odrazu "wywalić" na samą górę??? (bez komend ukrywających pozostałe panele)
Dotychczas robiłem to w ten sposób, że w kodzie jakiegoś przycisku wpisywałem np.
Kod:

Form1.Panel2.Visible:=False; //ukrywa drugi panel
Form1.Panel1.Visible:=True;  //...i odkrywa pierwszy

???

Posłany 01.12.2004 13:15

Cytat:

Napisany przez MacGyver
Ja mam pytanie dotyczące Delphi:
Mam formatkę na której umieszczam 4 obiekty typu "Panel" (panele są tych samych rozmiarów i w tych samych miejscach, w ten sposób że się pokrywają).
Pytanie: czy istnieje jakaś instrukcja, żeby dany panel odrazu "wywalić" na samą górę??? (bez komend ukrywających pozostałe panele)
Dotychczas robiłem to w ten sposób, że w kodzie jakiegoś przycisku wpisywałem np.
Kod:

Form1.Panel2.Visible:=False; //ukrywa drugi panel
Form1.Panel1.Visible:=True;  //...i odkrywa pierwszy

???

Raczej trzeba w ten sposób. Bo Ty ustawiając je na formie przyporządkowujesz im "warstwe". No chyba że istnieje dla TPanel'u funkcja Focus...

Ziele 01.12.2004 18:29

Pewnie masz dużo obiektów i zmieściłeś je na 4 panelach żeby okno nie było duże... a nie lepiej było do tego użyć PageControl? :D

MacGyver 01.12.2004 19:38

Cytat:

Napisany przez Ziele
Pewnie masz dużo obiektów i zmieściłeś je na 4 panelach żeby okno nie było duże... a nie lepiej było do tego użyć PageControl? :D

Masz namyśli, że w PageControl daje powiedzmy 4 nowe zakładki i w każdej biorę TabVisible na False (dopiero teraz to zobaczyłem;p )???
Teraz powiedz mi jak odwołać się do jakiejś konkretnej zakładki???
thx
...::Update::...
OK, już mam ... poprostu "Show" ;)
Dzięki Ziele :piwo: Działa tak jak chciałem...

BTW: Czym się rózni PageControl od TabControl???

Patrix 09.12.2006 16:40

Odkopuj***281; temat, poziom po kilku latach troszk***281; si***281; zmieni***322; wi***281;c...

mam napisa***263; program, kt***243;ry b***281;dzie dodawa***263; (wpisane przez u***380;ytkownika) do listy dwukierunkowej liczby a potem je wy***347;wieta***263; kolejno...

zrobi***322;em co***347; takiego:

Kod:

program test1;

uses crt;

type
  t_lista_dwukierunkowa = ^lista_dwukierunkowa;
{-----------------------------------------------------}
lista_dwukierunkowa = record
  nastepna  : t_lista_dwukierunkowa;
  poprzednia : t_lista_dwukierunkowa;
  dana      : integer;
end;
{-----------------------------------------------------}
var
  lista    : t_lista_dwukierunkowa;
  temp      : t_lista_dwukierunkowa;
  liczba    : integer;
{-----------------------------------------------------}
procedure do_listy;
  begin
    write('> Podaj liczbe: ');  readln(liczba);

    if lista = nil then
      begin
        new(lista);
        lista^.nastepna    := nil;
        lista^.poprzednia  := nil;
        lista^.dana        := liczba;
      end
        else
          begin
            new(temp);
            temp^.nastepna    := nil;
            temp^.poprzednia  := nil;
            lista^.nastepna  := temp;
            temp^.dana        := liczba;
            lista            := temp;
          end;
  end;
{-----------------------------------------------------}
procedure wyswietl;
  begin
    temp := lista;

    while temp^.poprzednia <> nil do
      begin
        write(temp^.dana);
        temp := temp^.poprzednia;
      end;
  end;
{-----------------------------------------------------}

BEGIN
clrscr;

do_listy;
wyswietl;

readln;

END.


Wiem, ***380;e jestem blisko ale co***347; mi nie wychodzi...

pawelblu 09.12.2006 19:35

Cytat:

Napisany przez Patrix (Post 714357)
Odkopuj***281; temat, poziom po kilku latach troszk***281; si***281; zmieni***322; wi***281;c...

mam napisa***263; program, kt***243;ry b***281;dzie dodawa***263; (wpisane przez u***380;ytkownika) do listy dwukierunkowej liczby a potem je wy***347;wieta***263; kolejno...

zrobi***322;em co***347; takiego:

Kod:

program test1;

uses crt;

type
  t_lista_dwukierunkowa = ^lista_dwukierunkowa;
{-----------------------------------------------------}
lista_dwukierunkowa = record
  nastepna  : t_lista_dwukierunkowa;
  poprzednia : t_lista_dwukierunkowa;
  dana      : integer;
end;
{-----------------------------------------------------}
var
  lista    : t_lista_dwukierunkowa;
  temp      : t_lista_dwukierunkowa;
  liczba    : integer;
{-----------------------------------------------------}
procedure do_listy;
  begin
    write('> Podaj liczbe: ');  readln(liczba);

    if lista = nil then
      begin
        new(lista);
        lista^.nastepna    := nil;
        lista^.poprzednia  := nil;
        lista^.dana        := liczba;
      end
        else
          begin
            new(temp);
            temp^.nastepna    := nil;
            //skoro lista^.nastepna  := temp, to musi:
            temp^.poprzednia  := lista;

            lista^.nastepna  := temp;
            temp^.dana        := liczba;
            lista            := temp;

          end;
  end;
{-----------------------------------------------------}
procedure wyswietl;
  begin
    temp := lista;

    while temp^.poprzednia <> nil do
      begin
        write(temp^.dana);
        temp := temp^.poprzednia;
      end;
  end;
{-----------------------------------------------------}

BEGIN
clrscr;

do_listy;
wyswietl;

readln;

END.


Wiem, ***380;e jestem blisko ale co***347; mi nie wychodzi...

Chociaz ja bym ja zacyklil. Listy dwukierunkowe sa fajniejsze jak sie je zacykla. Przynajmniej takie mam osobiste zdanie :)

Patrix 09.12.2006 20:22

Cytat:

Napisany przez pawelblu (Post 714421)
Chociaz ja bym ja zacyklil. Listy dwukierunkowe sa fajniejsze jak sie je zacykla. Przynajmniej takie mam osobiste zdanie :)


no tak, mo***380;e teraz liczba wchodzi do listy ale jako***347; nie umiem jej wy***347;wietli***263;, pisa***322;em nawet procedure aby ja znale***378;***263; ale chyba jej tam nie ma :|

Kod:

{-----------------------------------------------------}
procedure szukaj;
var liczba: integer;
  begin
    temp := lista;

    writeln('Podaj szukana liczbe');  readln(liczba);

    while temp^.poprzednia <> nil do
      begin
        if liczba = temp^.dana then writeln('Znaleziono');
        temp := temp^.poprzednia;
      end;
  end;
{-----------------------------------------------------}

mo***380;e mam z***322;y pomys***322; na procedury ?

pawelblu 09.12.2006 21:22

Cytat:

Napisany przez Patrix (Post 714451)
no tak, może teraz liczba wchodzi do listy ale jakoś nie umiem jej wyświetlić, pisałem nawet procedure aby ja znaleźć ale chyba jej tam nie ma :|

Kod:

{-----------------------------------------------------}
procedure szukaj;
var liczba: integer;
  begin
    temp := lista;

    writeln('Podaj szukana liczbe');  readln(liczba);

    while temp <> nil do
      begin
        if liczba = temp^.dana then writeln('Znaleziono');
        temp := temp^.poprzednia;
      end;

  end;
{-----------------------------------------------------}

może mam zły pomysł na procedury ?


Nigdy nie sprawdzasz najstarszego elementu.
czyli tego co mam poprz=nil

Patrix 09.12.2006 23:02

Cytat:

Napisany przez pawelblu (Post 714473)
Nigdy nie sprawdzasz najstarszego elementu.
czyli tego co mam poprz=nil

dzięki teraz wszystko narazie ok, będę musiał to sobie chyba logicznie rozrysować jak to działa aby mi sie nie plątało.


Wszystkie czasy w strefie CET. Aktualna godzina: 13:21.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.