Strona 1 z 1

[Pascal] Instrukcja warunkowa IF

: 17 lis 2012, o 19:51
autor: ozzy95
Witam. Napisałem dość rozbudowana instrukcję warunkową IF i chyba popełniłem jakiś błąd w składni. Oto ta instrukcja:

Kod: Zaznacz cały

IF podstawa>=wysokosc THEN
                if 2*(podstawa mod wysokosc)/wysokosc>=1 then d:=ceil(podstawa/wysokosc)
                else d:=floor(podstawa/wysokosc);
                        for i:=0 to wysokosc-1 do
                        begin
                                for j:=1 to d*i do
                                begin
                                        write('*');
                                        end;
                                writeln('*');
                                end;

ELSE

                IF 2*(wysokosc mod podstawa)/podstawa=1 THEN d:=ceil(wysokosc/podstawa)
                ELSE d:=floor(wysokosc/podstawa);
                        FOR i:=0 TO wysokosc-1 DO
                        BEGIN
                                FOR j:=1 TO d*i DO
                                BEGIN
                                        write('*');
                                        END;
                                writeln('*');
                                END;
Po próbie odpalenia programu wyskoczył mi błąd "Fatal: Syntax error, "," expected but "ELSE" found
Po naciśniećiu prawego przycisku myszy na błędzie i Track source podświetla mi zaznaczone wyżej ELSE (to pogrubione i podkreślone). Moglibyście mi podpowiedzieć gdzie popełniłem błąd?

[Pascal] Instrukcja warunkowa IF

: 17 lis 2012, o 20:54
autor: abc666
Przed else masz średnik.

[Pascal] Instrukcja warunkowa IF

: 17 lis 2012, o 21:23
autor: ozzy95
abc666 pisze:Przed else masz średnik.
Czyli mam skasować jakiś średnik przed else, czy mam jeszcze jakiś dodać?

[Pascal] Instrukcja warunkowa IF

: 17 lis 2012, o 22:13
autor: pawel_wr
Stosujesz nieczytelny i chaotyczny sposób wcięć , który uniemozliwia analizę
zagadnienia. Jeśli kilka instrukcji zamykamy w jedną ( begin..end ) to begin i end
zaczynają sie w tej samej kolumnie. Błędnie ( całkowicie niepotrzebnie
stosujesz ( begin..end) w liniach 7,9,20,22 , bo tu w pętli iteracyjnej występuje tylko jedna
instrukcja.

Bląd kompilacji wynika prawdopodobnie dlatego , że po else w trzeciej linii ciąg instrukcji
nie jest zamknięty w begin..end. To samo dotyczy else w linii 16.

[Pascal] Instrukcja warunkowa IF

: 25 lis 2012, o 17:31
autor: gildon
Może po prostu zamiast else użyjesz kolejnego if
Ja tak robię, nie używam else. Za dużo roboty z nim jest
zamiast else możesz zrobić np. tak:
if(zmienna1=zmienna2)then
begin
....................
....................
end;
if(zmienna1<>zmienna2)then
begin
....................
....................
end;

[Pascal] Instrukcja warunkowa IF

: 29 lis 2012, o 00:00
autor: ksisquare
Papcio Wirth przy okazji MODULI wpadł na pomysł, a może po prostu pisząc w Pascalu,
że słowo "BEGIN" jest często zbędne.
Przeredagowałem trochę Twój tekst.

Kod: Zaznacz cały

IF podstawa>=wysokosc THEN
    if 2*(podstawa mod wysokosc)/wysokosc>=1 then 
        d:=ceil(podstawa/wysokosc)
    else d:=floor(podstawa/wysokosc);
for i:=0 to wysokosc-1 do begin
    for j:=1 to d*i do begin
        write('*');
    end;
    writeln('*');
end;

ELSE        { < ----------------------------------- ????????????   }

IF 2*(wysokosc mod podstawa)/podstawa=1 THEN 
    d:=ceil(wysokosc/podstawa)
ELSE 
    d:=floor(wysokosc/podstawa);
FOR i:=0 TO wysokosc-1 DO BEGIN
    FOR j:=1 TO d*i DO BEGIN
        write('*');
    END;
    writeln('*');
END;