• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Создание файла, нужно только исправить код

Рега

Ученик
Регистрация
27 Ноя 2014
Сообщения
6
Реакции
0
Баллы
0
Создание файла, нужно только исправить код

Создать файл "Багаж", включающий в себя информацию:фамилия пассажира, количество и общий вес вещей, место следования. Составить списки пассажиров, следующих в город N, с указанием общего веса багажа. По фамилии пассажира определить место его следования. Помогите люди добрые, выводит ошибку 113, нужно исправить код(
Код:
Код:
uses crt;
const
 n = 100;
 
type
 t = record
  kol, ves: integer;
  fam, gorod: string[20];
 end;
 
var
 f,g: File of Real;
 a: array[1..n] of t;
 str: string;
count, i, vibor: integer;
 BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);

procedure vvod(count: integer);
  begin
   writeln;
   write('familia: ');
   readln(a[count].fam);
   write('mesto sledovania: ');
   readln(a[count].gorod);
   write('kol-vo veshey: ');
   readln(a[count].kol);
   write('vec bagazha: ');
   readln(a[count].ves);
   writeln;
end;
 
procedure vivod_gorod(count: integer);
  begin
   writeln;
   write('familia: ');
   readln(a[count].fam);
   write('mesto sledovania: ');
   readln(a[count].gorod);
   write('kol-vo veshey: ');
   readln(a[count].kol);
   write('vec bagazha: ');
   readln(a[count].ves);
   writeln;
end;
 
 procedure vivod_familia(count: integer);
  begin
   writeln;
   write('familia: ');
   writeln(a[count].fam);
   write('mesto sledovania: ');
   writeln(a[count].gorod);
end;
 
begin
 clrscr;
 count := 0;
 while true do
 begin
  write('vvedite 0 dlya vichod, 1 dlya vvoda, dlya otbora: 2-po gorody, 3-po familii: ');
  readln(vibor); 
  if vibor = 1 then
  begin
   inc(count);
   vvod(count);
  end
  else
   if vibor = 2 then
   begin
    writeln;
    write('vvedite gorod dlya viborki: ');
    readln(str);
    if count = 0 then writeln('baza pysta!')
    else
     for i := 1 to count do
      if a[i].gorod = str then vivod_gorod(i);
    writeln;
   end    
  else
  if vibor = 3 then
  begin
  writeln;
  write ('vvedite familiu dlya viborki: ');
  readln(str);
  if count = 0 then writeln ('baza pysta')
  else 
     for i := 1 to count do
  if a[i].fam = str then vivod_familia(i);
  writeln;
  end;
   if vibor = 0 then break;
    clrscr;
close(f); close(g);
 end;
end.
 
нужно исправить код(
Для начала советую избавиться от этого огрызка, незнамо как затесавшегося перед описанием процедур:
Код:
 BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
 
Избавиться то можно, но я не знаю как иначе создать и связать файл с кодом)
 
Для начала советую избавиться от этого огрызка, незнамо как затесавшегося перед описанием процедур:
Код:
 BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);

У меня остается час и потом уже ничего не сделать:(
help
 
Совсем избавляться не надо. Надо переставить в начало основного блока:

BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
count := 0;
while true do
begin...
 
Совсем избавляться не надо. Надо переставить в начало основного блока:

BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
count := 0;
while true do
begin...

Поставила но перед началом 1ой процедуры снова выдает ошибку 113
 
Не перед процедурой, а в основной блок (из других мест надо убрать):

begin
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
count := 0;
while true do
begin
write('vvedite 0 dlya vichod, 1 dlya vvoda, dlya otbora: 2-po gorody, 3-po familii: ');
readln(vibor);
if vibor = 1 then
begin
inc(count);
vvod(count);
end
else
if vibor = 2 then
begin
writeln;
write('vvedite gorod dlya viborki: ');
readln(str);
if count = 0 then writeln('baza pysta!')
else
for i := 1 to count do
if a.gorod = str then vivod_gorod(i);
writeln;
end
else
if vibor = 3 then
begin
writeln;
write ('vvedite familiu dlya viborki: ');
readln(str);
if count = 0 then writeln ('baza pysta')
else
for i := 1 to count do
if a.fam = str then vivod_familia(i);
writeln;
end;
if vibor = 0 then break;
clrscr;
close(f); close(g);
end;
end.
 
Не перед процедурой, а в основной блок (из других мест надо убрать):

begin
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
count := 0;
while true do
begin
write('vvedite 0 dlya vichod, 1 dlya vvoda, dlya otbora: 2-po gorody, 3-po familii: ');
readln(vibor);
if vibor = 1 then
begin
inc(count);
vvod(count);
end
else
if vibor = 2 then
begin
writeln;
write('vvedite gorod dlya viborki: ');
readln(str);
if count = 0 then writeln('baza pysta!')
else
for i := 1 to count do
if a.gorod = str then vivod_gorod(i);
writeln;
end
else
if vibor = 3 then
begin
writeln;
write ('vvedite familiu dlya viborki: ');
readln(str);
if count = 0 then writeln ('baza pysta')
else
for i := 1 to count do
if a.fam = str then vivod_familia(i);
writeln;
end;
if vibor = 0 then break;
clrscr;
close(f); close(g);
end;
end.


теперь он пишет что файл не открыт(
указывает на close(f)
Код:
uses crt;
const
 n = 100;
 
type
 t = record
  kol, ves: integer;
  fam, gorod: string[20];
 end;
 
var
 f,g: File of Real;
 a: array[1..n] of t;
 str: string;
count, i, vibor,vivod_gorod,vivod_familia, vvod: integer;
 begin
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
count := 0;
while true do
begin
write('vvedite 0 dlya vichod, 1 dlya vvoda, dlya otbora: 2-po gorody, 3-po familii: ');
readln(vibor); 
if vibor = 1 then
begin
inc(count);
vvod:=(count);
end
else
if vibor = 2 then
begin
writeln;
write('vvedite gorod dlya viborki: ');
readln(str);
if count = 0 then writeln('baza pysta!')
else
for i := 1 to count do
if a[i].gorod = str then vivod_gorod:=(i);
writeln;
end 
else
if vibor = 3 then
begin
writeln;
write ('vvedite familiu dlya viborki: ');
readln(str);
if count = 0 then writeln ('baza pysta')
else 
for i := 1 to count do
if a[i].fam = str then vivod_familia:=(i);
writeln;
end;
if vibor = 0 then break;
clrscr;
close(f); close(g);
end;
end.
 
Ну вообще то по вашей программе Вы файлы не используете. Я не нашёл где Вы читаете из файла и записываете в файл. У Вас всё через массив. Судя по заданию требуется совсем другое:
1. Создать файл
2. Считать его в список
3. Искать по списку
 
Ну вообще то по вашей программе Вы файлы не используете. Я не нашёл где Вы читаете из файла и записываете в файл. У Вас всё через массив. Судя по заданию требуется совсем другое:
1. Создать файл
2. Считать его в список
3. Искать по списку

Да это я понимаю, получилось пока только так, было бы прекрасно, если б вы помогли мне это все исправить, пожалуйста
 
У меня остается час и потом уже ничего не сделать:(
help
Дорогая леди, боюсь, проспали Вы своё счастье, ибо за несколько минут отладить такую программу, уверяю Вас, никто не возьмется. У Вас там море ошибок: и тип файлов определен неверно, и ввод организован абсолютно безграмотно, и много чего еще.
Мне очень жаль. Извините. Но надо было раньше думать, а не в последние минуты спохватываться.
 
Олимпиадные задания для того и даются, чтобы вы их решали самостоятельно.
 
Ну может ещё не совсем поздно:

uses crt;
type Trec= record
fam:string;
mesto:string;
koll:integer;
ves:integer;
end;
var F,R:Text;
A:array[1..100] of TRec;
m,t,i,n:integer;
s:string;
begin
Assign(F,'B_in.txt');
Reset(F);
n:=0;
While not Eof(F) do
begin
Inc(n);
Readln(F,A[n].fam);
Readln(F,A[n].mesto);
Readln(F,A[n].koll);
Readln(F,A[n].ves);
end;
Close(F);
Assign(R,'B_out.txt');
Rewrite(R);
repeat
Write('Mesto sledovaniya: ');
Readln(s);
if Length(s)=0 then break;
Writeln(R,' V ',s,' :');
t:=0; m:=0;
for i:=1 to n do
if A.mesto=s then
begin
Writeln(R,A.fam);
m:=m+A.ves;
Inc(t);
end;
if t<>0 then Writeln(R,'Ves = ',m,' kg')
else Writeln(R,'Net passagirov');
Writeln;
until Length(s)=0;
Close(R);
repeat
Write('Familiya : ');
Readln(s);
if Length(s)=0 then break;
for i:=1 to n do
if A.fam=s then
Writeln(A.fam,' -> ',A.mesto);
until Length(s)=0;
Readkey;
end.

Входной файл( B_in.txt) такого вида:
Ivanov
Tula
2
1
Petrov
Kursk
5
2
Sidorov
Ufa
6
4
Suhov
Tula
5
8
Losev
Ufa
2
4
 
Назад
Сверху