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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2018, 14:17   #1
dastreba
Пользователь
 
Регистрация: 29.11.2017
Сообщений: 63
По умолчанию [Pascal] Описать структуру с именем MARSH (маршрут). Возникает ошибка. Почему?

Программа не моя.
В общем: программа выдает ошибку,не подскажет почему?

Код:
Program lab10;
Uses crt;
Type Marsh=record
    NachM,KonM:string[30];
    Num:integer;
    end;
Var f:file of Marsh;
el1,el2:Marsh;
Number:integer;
Procedure Create;
    Begin
    Seek(f,FileSize(f));
    Writeln('Vvedite svedeniya o marshruta');
    Writeln('Dlya vihoda vvedite *');
    While true do
        Begin
        Writeln('Vvedite nachalo marshruta');
        Readln(el1.NachM);
        if el1.NachM='*' then break;
        Writeln('Vvedite konec marshruta');
        Readln(el1.KonM);
        if el1.KonM='*' then break;
        Writeln('Vvedite nomer marshruta');
        Readln(el1.Num);
        Write(f,el1)
        end;
    end;
Procedure Sort;
Var i,j:integer;
    Begin
    Seek(f,0);
    For i:=filesize(f)-1 downto 1 do
    For j:=0 to i-1 do
        Begin
        Seek(f,j);
        Read(f,el1,el2);
        if el1.Num>el2.Num then
            Begin
            Seek(f,j);
            Write(f,el2,el1);
            end;
        end;
    end;
Procedure Find_marsh;
Var i:integer;
    n:string[30];
    v:boolean;
    Begin
    Writeln('Vvedite tochku marshruta');
    Readln(n);
    For i:=1 to filesize(f) do
        Begin
        Seek(f,i);
    Read(f,el1);
        if ((el1.NachM)=n) or ((el1.KonM)=n) then 
            Begin
            Writeln('Nachalniy marshrut - ',el1.NachM);
            Writeln('Konechniy marshrut - ',el1.KonM);
            Writeln('Nomer marshruta - ',el1.Num);
            end
        else v:=false;
        end;
    if not(v) then Writeln('Marshruta s takim punktom net');
    end;
    Writeln('1 - Find marshrut');
    Writeln('2 - Exit');
    Sort;
    Readln(Number);
    Case Number of
   
    1:Find_marsh;
    2:Exit;
    end;
end;
end.
dastreba вне форума Ответить с цитированием
Старый 05.06.2018, 14:55   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от dastreba Посмотреть сообщение
программа выдает ошибку,не подскажет почему?
Какую ошибку и на какой строке? Используйте пошаговую трассировку (если не знаете, что это, почитайте об этом информацию в интернете), тогда, быть может, вы сами поймёте, где у вас ошибка и как её исправить.

Я вот сейчас бегло посмотрел вашу программу без запуска в каких-либо средах. Вы оперируете с файлами (в частности процедурой seek), но нигде их не открываете на чтение.

Последний раз редактировалось Вадим Мошев; 05.06.2018 в 15:00.
Вадим Мошев вне форума Ответить с цитированием
Старый 05.06.2018, 15:59   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от dastreba Посмотреть сообщение
В общем: программа выдает ошибку,не подскажет почему?
Потому что криво написана. )) Логично же.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 06.06.2018, 12:34   #4
dastreba
Пользователь
 
Регистрация: 29.11.2017
Сообщений: 63
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Какую ошибку и на какой строке? Используйте пошаговую трассировку (если не знаете, что это, почитайте об этом информацию в интернете), тогда, быть может, вы сами поймёте, где у вас ошибка и как её исправить.

Я вот сейчас бегло посмотрел вашу программу без запуска в каких-либо средах. Вы оперируете с файлами (в частности процедурой seek), но нигде их не открываете на чтение.
Код:
Writeln('1 - Find marshrut');   // ошибка вылазит
    Writeln('2 - Exit');
    Sort;
    Readln(Number);
    Case Number of
   
    1:Find_marsh;
    2:Exit;
    end;
end;
end.
dastreba вне форума Ответить с цитированием
Старый 06.06.2018, 12:50   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если форматировать код правильно, то таких ошибок не будет. Посчитай открытие и закрытие операторных скобок
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.06.2018, 20:25   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Кстати, дело может оказаться не только в форматировании кода, а ещё в том, что при написании кода, предполагающего использование операторных скобок, эти самые скобки балансируются (закрываются) не сразу, а только когда нужная последовательность инструкций была написана. Рекомендуется сразу закрывать операторные скобки, а уже только потом между ними писать код.
Вадим Мошев вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описать Структуру с именем STUDENT DzirT34669 Помощь студентам 6 08.01.2015 14:21
Описать структуру с именем TRAIN, C++ alucard115 Помощь студентам 2 18.02.2014 16:59
Описать структуру с именем AEROFLOT lolwto Общие вопросы Delphi 4 06.05.2013 14:16
Описать структуру с именем TRAIN Destox Паскаль, Turbo Pascal, PascalABC.NET 1 29.03.2013 07:54