27.11.2014, 09:40 | #1 (permalink) |
Новичок
Регистрация: 27.11.2014
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Создание файла, нужно только исправить код
Код: Код:
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
Регистрация: 08.03.2016
Сообщений: 0
|
Не обделяйте вниманием данные ссылки Программа в С++ готовая, только поменять немного что-то нужно Помогите исправить код Задача на строки решена, но нужно исправить одну ошибку Две вертушки или как исправить Ми-8 Как исправить тормоза? Создание *.bat файла |
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, 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
|
Цитата:
указывает на 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
|
Да это я понимаю, получилось пока только так, было бы прекрасно, если б вы помогли мне это все исправить, пожалуйста
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|