Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 27.11.2014, 09:40   #1 (permalink)
Рега
Новичок
 
Регистрация: 27.11.2014
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Создание файла, нужно только исправить код

Создать файл "Багаж", включающий в себя информацию:фамилия пассажира, количество и общий вес вещей, место следования. Составить списки пассажиров, следующих в город 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.
Рега вне форума   Ответить с цитированием

Старый 27.11.2014, 09:40
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Не обделяйте вниманием данные ссылки

Программа в С++ готовая, только поменять немного что-то нужно
Помогите исправить код
Задача на строки решена, но нужно исправить одну ошибку
Две вертушки или как исправить Ми-8
Как исправить тормоза?
Создание *.bat файла

Старый 27.11.2014, 09:58   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Рега Посмотреть сообщение
нужно исправить код(
Для начала советую избавиться от этого огрызка, незнамо как затесавшегося перед описанием процедур:
Код:
 BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
Vladimir_S вне форума   Ответить с цитированием
Старый 27.11.2014, 10:01   #3 (permalink)
Рега
Новичок
 
Регистрация: 27.11.2014
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Избавиться то можно, но я не знаю как иначе создать и связать файл с кодом)
Рега вне форума   Ответить с цитированием
Старый 27.11.2014, 10:33   #4 (permalink)
Рега
Новичок
 
Регистрация: 27.11.2014
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Для начала советую избавиться от этого огрызка, незнамо как затесавшегося перед описанием процедур:
Код:
 BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
У меня остается час и потом уже ничего не сделать
help
Рега вне форума   Ответить с цитированием
Старый 27.11.2014, 10:51   #5 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

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

BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
count := 0;
while true do
begin...
Евгений вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 27.11.2014, 10:58   #6 (permalink)
Рега
Новичок
 
Регистрация: 27.11.2014
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Евгений Посмотреть сообщение
Совсем избавляться не надо. Надо переставить в начало основного блока:

BEGIN
clrscr;
Assign(f,'fail.dat');Reset(f);
Assign(g,'epic.dat');Rewrite(g);
count := 0;
while true do
begin...
Поставила но перед началом 1ой процедуры снова выдает ошибку 113
Рега вне форума   Ответить с цитированием
Старый 27.11.2014, 11:02   #7 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

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

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.
Евгений вне форума   Ответить с цитированием
Старый 27.11.2014, 11:10   #8 (permalink)
Рега
Новичок
 
Регистрация: 27.11.2014
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Евгений Посмотреть сообщение
Не перед процедурой, а в основной блок (из других мест надо убрать):

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.
теперь он пишет что файл не открыт(
указывает на 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.
Рега вне форума   Ответить с цитированием
Старый 27.11.2014, 11:22   #9 (permalink)
Евгений
Member
 
Аватар для Евгений
 
Регистрация: 31.03.2010
Адрес: Тульская область
Сообщений: 1,309
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 13090
По умолчанию

Ну вообще то по вашей программе Вы файлы не используете. Я не нашёл где Вы читаете из файла и записываете в файл. У Вас всё через массив. Судя по заданию требуется совсем другое:
1. Создать файл
2. Считать его в список
3. Искать по списку
Евгений вне форума   Ответить с цитированием
Старый 27.11.2014, 11:26   #10 (permalink)
Рега
Новичок
 
Регистрация: 27.11.2014
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Евгений Посмотреть сообщение
Ну вообще то по вашей программе Вы файлы не используете. Я не нашёл где Вы читаете из файла и записываете в файл. У Вас всё через массив. Судя по заданию требуется совсем другое:
1. Создать файл
2. Считать его в список
3. Искать по списку
Да это я понимаю, получилось пока только так, было бы прекрасно, если б вы помогли мне это все исправить, пожалуйста
Рега вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:12.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.