Warunek, nie moge prowadzić Then. Może są jeszcze jakieś problemy.

0

Jako, że to mój pierwszy post na forum to sie przywitam. Jestem w technikum informatycznym, programowanie nie jest moją WIELKĄ PASJĄ.
Moja przygoda zaczęła sie w gimnazjum(nie licząc HTML-a w podstawówce) na pisaniu algorytmów i logomocji. To nie sprawiało mi rzadnym problemów. Potem poczytałem troche poradników. W Technikum bawiłem sie w LUA(ale na prostych skryptach do serwera Gothic multiplayer, małe trudności były ale serwa dla znajomych napisałem). Teraz (DOPIERO W 3 KLASIE NA INFORMATYCE) mamy programowanie w szkole. Zaczęliśmy od tego od czego sie powinno zacząć, czyli Turbo Pascal... czemu ja na to nie wpadłem wcześniej.

Napisanie programu, który dodaje czy odejmuje poszło mi bez problemu. Napisanie progamu dzielącego nie wiem, bo nauczyciel sprawdził, powiedział, że niby ok ale nie zdążyłem skąpilować bo dzwonek był kilka min wcześniej a sie spieszyłem. W domu siadłem i chciałem zrobić coś takiego:

Program dzielenie;
VAR
a:real;
b:real;
suma:real;
x:char;
Begin   {Zaczynamy od wybrania co bedziemy liczyc}
     Writeln('Jesli chcesz dodawac wybierz +');
     writeln('Jesli chcesz odejmowac wybierz -');
     writeln('Jesli chcesz dzielic wybierz /');
     writeln('Jesli chcesz mnozyc wybierz *');
     readln(x);
     Writeln('Kliknij ENTER');
     If x = +
        then  {sprawdzenie czy bedziemy dodawac}
             Writeln('wybrales dodawanie');
             Writeln('podaj pierwszy skladnik);
             Readln(a);
             Writeln('podaj drogi skladnik');
             Readln(b);
             suma:=a+b;
        else
            if x=-   {sprawdzenie czy wybrano odejmowanie}
               then
                   Writeln('Wybrales odejmowanie');
                   Writeln('Podaj odjemna');
                   Readln(a);
                   Writeln('Podaj odjemnik liczbe');
                   Readln(b);
                   suma:=a-b;
               else
                   if x:=* {sprawdzenie czy bedziemy mnozyc}
                      then
                          Writeln('Wybrales mnozenie');
                          Writeln('Podaj pierwszy czynnik');
                          Readln(a);
                          Writeln('Podaj drogi czynnik');
                          Readln(b);
                          suma:=a*b;
                      else
                          if x:=/ {sprawdzanie czy bedziemy dzielic}
                             then
                             Writeln('Wybrales dzielenie')
                             Writeln('Podaj dzielna')
                             Readln(a);
                             Writeln('Podaj dzielnik')
                             Readln(b);
                             suma:=a/b;
     Writeln('Wynik to'suma);
     Writeln('Klikij Enter aby wyjsc')
     Readln
end. </quote>

Jak klikam F9 to błąd wyskakuje w linijce 15, daje zbliżenie na kilka pobliskich linijek a tamtą podkreślam:
<quote>     readln(x);
     Writeln('Kliknij ENTER');
     If x = +
        __then  {sprawdzenie czy bedziemy dodawac}__
             begin
			 Writeln('wybrales dodawanie');
             Writeln('podaj pierwszy skladnik);
             Readln(a);
             Writeln('podaj drogi skladnik');
             Readln(b);
             suma:=a+b;

Dopiero sie ucze, prosze o szczere wytknięcie błędów, ale nie piszcie mi na razie o pętlach czy funkcjach, będe miał to na lekcjach potem. Zdaje sobie sprawe, jak to przyspiesza program i skraca kod(w lua na serwerze działałem na funkcjach). Chciałbym wiedzieć, czemu wywala mi tam błąd. Jest to błąd 42.

1

ciągi znaków muszą być w uszach, czyli if x = '*' then i reszta tak samo

0

Dziękować. Tamto już działa.

Teraz wyskoczył błąd tutaj.

Writeln('podaj pierwszy skladnik);

Jest to błąd nr 8.
Posiłkuje sie tableką w której wyczytałem "8. String constant exceeds line - Stała łańcuchowa przekracza wiersz "
Więc pomyślałem, że wystarczy troszke przyciąć linijki ale nic nie dało.

Teraz sie zastanawiam, ale zawsze pomoc kogoś bardziej doświadczonego będzie dobra.

0

brakuje ' na końcu... Przeczytaj ty może kurs jakiś?

program CALC;
var
  znak : char;
  a, b : Integer;

begin
  while not (EOF) do
  begin
    Readln(znak, a, b);
    case znak of
      '+' : Writeln(a + b);
      '-' : Writeln(a - b);
      '*' : Writeln(a * b);
      '/' : Writeln(a div b);
      '%' : Writeln(a mod b);
    end;
  end;
end. 

Cała logika...
Dorób sobie te writeln, zmień warunek pętli i zabezpiecz przed wprowadzaniem błędnych danych.

A i przeczytaj te dwa tematy zanim założysz swój kolejny:
Jak tytułować wątki na forum?
Formatowanie treści postów na forum

0

Dziękować. Przeczytałem oba tematy, które dodałeś w komentarzu. Zaraz poprawie poprzednio źle wklejone kody.

Tak, abym na przyszłość rozumiał poszczególne fragmenty, których nie czaje.

(EOF) <- co to oznacza w tym kodzie?

0

@kuszak321 - jak nie chcesz mieć w przyszłości problemów podczas programowania, to zacznij czytać i starać się zrozumieć błędy kompilacji; W kilku miejscach brakowało Ci znaku ', czyli nie zakańczałeś podawanych ciągów znaków (literałów) - stąd problemy;

(EOF) <- co to oznacza w tym kodzie?

"End of File" z reguły, tyle że funkcja Eof przyjmuje parametr; Ale nie wiem co @babubabu miał na myśli :]


Rada na przyszłość - zaglądnij do jakiegoś kursu i naucz się dobrze podstaw języka; No i wątki dotyczące podstaw zakładaj w dziale Newbie, oczywiście wstawiając kod w znaczniki kolorujące składnię.

1 użytkowników online, w tym zalogowanych: 0, gości: 1