Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
kisun
0 / 0 / 1
Регистрация: 08.12.2014
Сообщений: 23
#1

Ошибка в коде, идет бесконечный ввод данных - Turbo Pascal

29.01.2015, 20:02. Просмотров 375. Ответов 6
Метки нет (Все метки)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
program Project1;
uses crt;
 
const zodiak:array[0..11] of string = ('Vodoley (21.01-19.02)','Ribi (20.02-20.03)','Oven (21.03-20.04)','Telec (21.04-21.05)',
'Blizneci (22.05-21.06)','Rak (22.06-22.07)','Lev (23.07-23.08)','Deva (24.08-23.09)',
'Vesi (24.09-23.10)','Skorpion (24.10-22.11)','Strelec (23.11-21.12)','Kozerog (22.12-20.01)');
n=2;
type znak=record
     zodiak:string[30];{data:array[1..3] of integer;}
     FIO:string[45];
     birthday: record
               day:1..31;
               month:1..12;
               year:integer;
     end;
end;
var
    F:file of znak;   {File dlia xraneniia bazi Znak}
    a:array[1..n]of znak;
    elem1,elem2:znak;
 
Procedure create_file;
var z:array of znak;   i,j:integer;
begin
 
  writeln('Vvedite svedenia o 4eloveke');
  while true do  begin    SetLength(z,Length(z)+1);
    writeln ('F.I.O');
     If Elem1.FIO='*' Then Break;
    readln(z[High(z)].FIO);
    writeln('Data roshdenia');
    readln(z[High(z)].birthday.day);
    readln(z[High(z)].birthday.month);
    readln(z[High(z)].birthday.year);
    writeln('Znak zodiaka');
    readln(z[High(z)].zodiak);
  end;
  for i:=Low(z) to High(z) do begin
    for j:=Low(z) to High(z) do begin
     if (z[i].birthday.day<z[j].birthday.day) or
        (z[i].birthday.month<z[j].birthday.day) or
        (z[i].birthday.year<z[j].birthday.year) then
       elem1:=z[i]; z[i]:=z[j];z[j]:=elem1;
    end;
  end;
 
  assign(f,'f'); 
  rewrite(f);
  for i:=Low(z) to High(z) do write(f,z[i]);
  close(f);
end;
Procedure read_file;  {чтение данных из этого файла}
begin
  assign(f,'f'); reset(f);
  while not eof(f) do  begin
    read(f,elem1);
    with elem1 do
     writeln (FIO,birthday.day:10,'.',birthday.month,'.',birthday.year,zodiak:20);
  end;
  close(f);
end;
 
Procedure read_man;  {вывод на экран информации о человеке, чья фамилия введена с клавиа-
туры}
var s:string; b:boolean;
begin
  assign(f,'f'); reset(f);
  write('фио: ');readln(s); b:=false;
  while not eof(f) do  begin
    read(f,elem1);
    with elem1 do
     if FIO=s then begin
      writeln (FIO,birthday.day:10,'.',birthday.month,'.',birthday.year,zodiak:20);
      b:=true;
     end;
  end;
  close(f);
  if not b then writeln('Такого нет');
end;
begin
  create_file;  read_file;    read_man; readln;
end.


Подскажите какая ошибка в коде, идет бесконечный ввод данных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2015, 20:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка в коде, идет бесконечный ввод данных (Turbo Pascal):

Как осуществить бесконечный ввод
Написал программу которая узнает внутренний код элемента и наоборот. Смысл...

ввод данных, ошибка при вводе чисел, более чем 3 миллиарда
не выводит значение более 3-ех миллиардов, пишет - Ошибка ввода. Программа...

Никак не могу понять почему идет ошибка при подсчете среднего значения
Вычислить среднее арифметическое кодов элементов отсортированного массива,...

Реализовать ввод данных, вывод данных, поиск по номеру квартиры и возрасту
ввод данных, вывод данных, поиск по номеру квартиры и возрасту. Запись состоит...

Реализовать ввод данных из файла, просмотр входных и выходных данных
помогите пожалуйста с вот этой программой создать программный комплекс,...

Составьте программу, которая обеспечивает ввод данных, вывод данных, поиск по номеру
Составьте программу, которая обеспечивает ввод данных, вывод данных, поиск по...

6
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
29.01.2015, 20:13 #2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Procedure create_file;
var
  z:array of znak;
  i,j:integer;
begin
  SetLength(z, 0);
  writeln('Vvedite svedenia o 4eloveke');
  while true do
  begin
    SetLength(z,Length(z)+1);
    writeln ('F.I.O');
    readln(z[High(z)].FIO);
     If z[High(z)].FIO='*' Then Break;
    writeln('Data roshdenia');
    readln(z[High(z)].birthday.day);
    readln(z[High(z)].birthday.month);
    readln(z[High(z)].birthday.year);
    writeln('Znak zodiaka');
    readln(z[High(z)].zodiak);
  end;
{ ... }
, но этот код не будет компилироваться Турбо-Паскалем. Дельфи или FPC...
0
kisun
0 / 0 / 1
Регистрация: 08.12.2014
Сообщений: 23
29.01.2015, 20:19  [ТС] #3
volvo, а как сделать чтоб компилировалось, подскажите
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
29.01.2015, 20:23 #4
Не использовать динамические массивы, их нет в TP. Можно, например, сначала запросить, сколько данных будет вводиться, выделить достаточное количество памяти, и заполнять его данными. Можно заменить массив на список.
0
kisun
0 / 0 / 1
Регистрация: 08.12.2014
Сообщений: 23
29.01.2015, 20:26  [ТС] #5
volvo, Не очень ясна суть
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25624 / 17177 / 6830
Регистрация: 22.10.2011
Сообщений: 30,369
Записей в блоге: 6
29.01.2015, 20:34 #6
Что тебе не ясно? Как запросить, сколько будет данных? Вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Procedure create_file;
type tarr = array [1 .. maxint div sizeof(znak)] of znak;
var
  z:^tarr;
  i,j, size:integer;
begin
  writeln('Для скольки человек будут введены данные? '); readln(size);
  getmem(z, size*sizeof(znak));
  writeln('Vvedite svedenia o 4eloveke');
  for i := 1 to size do
  begin
    writeln ('F.I.O');
    readln(z^[i].FIO);
    writeln('Data roshdenia');
    readln(z^[i].birthday.day);
    readln(z^[i].birthday.month);
    readln(z^[i].birthday.year);
    writeln('Znak zodiaka');
    readln(z^[i].zodiak);
  end;
  for i:=1 to size do begin
    for j:=1 to size do begin
     if (z^[i].birthday.day<z^[j].birthday.day) or
        (z^[i].birthday.month<z^[j].birthday.day) or
        (z^[i].birthday.year<z^[j].birthday.year) then
       elem1:=z^[i]; z^[i]:=z^[j];z^[j]:=elem1;
    end;
  end;
 
  assign(f,'f');
  rewrite(f);
  for i:=1 to size do write(f,z^[i]);
  close(f);
  freemem(z, size*sizeof(znak));
end;
(работоспособность не проверял, Турбо под рукой нет сейчас, но в режиме совместимости с TP компилируется)
0
kisun
0 / 0 / 1
Регистрация: 08.12.2014
Сообщений: 23
29.01.2015, 20:46  [ТС] #7
volvo, Работаю через паскальабц выдает ошибку "(41) : Встречено 'sizeof', а ожидалось выражение"
0
29.01.2015, 20:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2015, 20:46
Привет! Вот еще темы с решениями:

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

Составьте программу, которая обеспечивает ввод данных, вывод данных, поиск по номеру
Составьте программу, которая обеспечивает ввод данных, вывод данных, поиск по...

Составьте программу, которая обеспечивает ввод данных, вывод данных, поиск по ФИО
Составьте программу, которая обеспечивает ввод данных, вывод данных, поиск по...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru