Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2010, 20:40   #11
Dalokoshka
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Враньё-лэйблы надо ограничивать.
Например, такой код:
Код:
program gh;
label one, two;
begin
      one:
      begin
            writeln('one');
            writeln('one');
            readln;
            goto two;
      end;
      two:
      begin
            writeln('three');
            write('tw');
            readln;
            halt;
      end;
      goto one;
      readln;
end.
Сначала выведется
one
one
Затем ожидание ентера
three
tw
Выход.
А теперь так:
Код:
program gh;
label one, two;
begin
      one:writeln('one');
      readln;
      writeln('one');
      readln;
      goto two;
      two:
      begin
            writeln('three');
            write('tw');
            readln;
            halt;
      end;
      goto one;
      readln;
end.
Сначала
one
Затем ожидание ентера
Затем вывод
one
Затем
three
tw
Выход.
eoln, вы поняли, почему были неправы?Если лэйбл не ограничивать, то ...получится, что в него входит только одна строчка кода.А чтобы добавить туда много инструкций, нужно юзать составной оператор.Так то.


Можно, тогда суть такая:
Код:
Val(Concat(S[1],S[2]),X,Err);
Val(Concat(S[3],S[4]),Y,Err);

а почему у вас только 2ая метка ограничена?
и что означает Concat?
Спасибо огромное и низкий поклон всем тем, добрым людям, которые помогают мне - бедному студенту и моим коллегам.
Dalokoshka вне форума Ответить с цитированием
Старый 16.10.2010, 20:58   #12
Dalokoshka
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
_-Re@l-_, путаешь, наверное, с инструкцией case of... - там похожий синтаксис, а вот метки используют для скачка в программе (например, из многих вложенных циклов удобно выскакивать куда-нить подальше).
Dalokoshka, К вопросу о ДД.ММ - заменяем участок кода
Код:
var d,m,z,error:integer;
    s,s2:string[5];
label paz;
begin
  ClrScr;
     paz:writeln ('ievadiet dzimshanas datumu');
     readln (s);
     s2 := copy(s, 1, pos('.', s) - 1);
     delete(s, 1, pos('.', s));
         val (s2,d,error);
         if (d>32) or (error<>0) then begin
                            writeln ('nepareizi ievadita diena');
                            goto paz
                            end;
     {readln (s)};
         val (s,m,error);
         if (m>12) or  (error<>0) then begin
                            writeln ('nepareizi ievadits menesis');
                            goto paz
                            end;
     write ('jus esat- ');
Теперь вводим данные в формате ДД.ММ
http://programmersforum.ru/showthread.php?t=93027 - это по арабским и римским числам. В поиске по форуму ещё есть
СПАСИБО большущее! Вы даже не представляете как вы меня выручили!!!!
Спасибо огромное и низкий поклон всем тем, добрым людям, которые помогают мне - бедному студенту и моим коллегам.
Dalokoshka вне форума Ответить с цитированием
Старый 16.10.2010, 21:07   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

хотел пройти мимо молча, но, простите, не смог...

Цитата:
Сообщение от _-Re@l-_
Враньё-лэйблы надо ограничивать.
Глупости!
Вы в своих примерах написали РАЗНЫЙ код! А Вы напишите ОДИНАКОВЫЙ код (с begin/end ) и без операторных скобок.
и сравните выполнение.
например:
Код:
  I := 0;
  One: WriteLn('One');
          WriteLn('One one');
          WriteLn('One one one');
  inc(I);
  if I < 2 then GOTO One;
проверьте и убедитесь, что после GOTO выполнятся ВСЕ строчки, а не одна, на которой стоит метка ONE !!!!

GOTO это БЕЗУСЛОВНЫЙ переход. Выполнятся ТЕ ЖЕ операторы, и в той же последовательности, как и без BEGIN/END.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2010, 17:13   #14
Dalokoshka
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Dalokoshka, К вопросу о ДД.ММ - заменяем участок кода
Код:
var d,m,z,error:integer;
    s,s2:string[5];
label paz;
begin
  ClrScr;
     paz:writeln ('ievadiet dzimshanas datumu');
     readln (s);
     s2 := copy(s, 1, pos('.', s) - 1);
     delete(s, 1, pos('.', s));
         val (s2,d,error);
         if (d>32) or (error<>0) then begin
                            writeln ('nepareizi ievadita diena');
                            goto paz
                            end;
     {readln (s)};
         val (s,m,error);
         if (m>12) or  (error<>0) then begin
                            writeln ('nepareizi ievadits menesis');
                            goto paz
                            end;
     write ('jus esat- ');
Теперь вводим данные в формате ДД.ММ
[
Обьясните мне, пожалуйста что именно означают эти строки
s2 := copy(s, 1, pos('.', s) - 1);
delete(s, 1, pos('.', s));
как они читаются?
Мне это для дальнейших программ надо.
Заранее спасибо.
Спасибо огромное и низкий поклон всем тем, добрым людям, которые помогают мне - бедному студенту и моим коллегам.
Dalokoshka вне форума Ответить с цитированием
Старый 17.10.2010, 23:11   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
s2 := copy(s, 1, pos('.', s) - 1);
взять в строку s2 подстроку из строчки s, начиная с 1-го символа и до первой точки в строке (минус один - это значит, саму точку не брать в s2

Цитата:
Код:
delete(s, 1, pos('.', s));
удалить из строки s все символы от первого символа до первой точки включительно.

p.s. перед подобным кодом предварительно ОБЯЗАТЕЛЬНО проверять наличие точки в строке. Иначе вылезет ошибка в процессе работы программы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.10.2010, 15:02   #16
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Глупости!
Вы в своих примерах написали РАЗНЫЙ код! А Вы напишите ОДИНАКОВЫЙ код (с begin/end ) и без операторных скобок.
А, вы знаете, я понял, в чём моя ошибка...
Спасибо, Serge_Bliznykov.

Последний раз редактировалось _-Re@l-_; 18.10.2010 в 15:05.
_-Re@l-_ вне форума Ответить с цитированием
Старый 18.10.2010, 20:29   #17
Dalokoshka
Пользователь
 
Регистрация: 09.10.2010
Сообщений: 27
По умолчанию

Спасибо, теперь все понятно.
Спасибо огромное и низкий поклон всем тем, добрым людям, которые помогают мне - бедному студенту и моим коллегам.

Последний раз редактировалось Dalokoshka; 18.10.2010 в 21:05.
Dalokoshka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа работает дольше, чем нужно(( Ильнар70 Паскаль, Turbo Pascal, PascalABC.NET 10 26.09.2010 16:57
Проект компилируется, но не работает kta87 Общие вопросы Delphi 4 01.03.2010 21:53
Программа компилируется, но не работает maziLa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 17.07.2009 11:24
Ф-ции и процедуры. В чём ошибка??? Программа не работает!:( katya36 Помощь студентам 3 05.03.2009 12:55