Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
1

Типизированные файлы, записи.

26.04.2012, 14:45. Просмотров 1168. Ответов 27
Метки нет (Все метки)

Задача по типизованих файлах.
1) Заданный файл, содержащий номера работников учреждения. Указывается фамилия работника, его инициалы и номер телефона. Ввести фамилию и имя с терминала. Отыскать телефон с введинимы данными.

Нужно сделать задачу по етому примеру, непойму как, помогите пожалусто!
Вот пример:
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
83
program lab2;
uses crt;
var
 f1,f2:text;
 k,n,i,j,kol:integer;
 s,prom:string;
 sim:char;
 word:array[1..20] of string;
 procedure create_f1;
 begin
  assign(f1,'lab11_2.txt'); rewrite(f1);
  repeat
  writeln('input string of words: ');
  readln(s);
  writeln(f1,s);
  writeln('continue ?[y/n]');
  sim:=readkey;
 until sim='n';
 close(f1);
 end;
 procedure print_f(var f:text);
 begin
 reset(r);
 while not eof(f) do
  begin
   readln(f,s); writeln(s);
  end;
 close(f);
end;
 
procedure sort;
begin
 for i:=1 to n-1 do
  for j:=i+1 to n do
   if word[i]>word[j] then
   begin
    prom:=word[j];
    word[j]:=word[i];
    word[i]:=prom;
   end;
  end;
 
  procedure create_f2;
   assign(f2. 'new11_2.txt');
   rewrite(f2);
   reset(f1);
   kol:=0;
   while not eof(f1) do
    begin
     readln(f1,s);
     s:=s+' ';
     while pos(' ',s)<>0 do
     delete(s,pos(' ',s),1);
    n:=0
    while pos(' ',s)<>0 do
     begin
      n:=n+1;
      word[n]:=copy(s,1,pos(' ',s)-1);
      delete(s,1,pos(' ',s));
     end;
     sort;
      for i:=1 to n do
       write(f2, word[i],' ');
      writeln(f2);
      kol:=kol+n;
     end;
     writeln(f2,'number of words is ',kol);
     close(f2);
    end;
    begin
    clrscr;
    create_f1;
    writeln('input file of text: ');
    writeln('==============================';
    print_f(f1);
    writeln('==============================');
    writeln('summary of lab.work 11.2');
    writeln('variant 30, student....');
    create_f2;
    writeln('new file of text after sorting:');
    writeln('==============================');
    print_f(f2);
    end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2012, 14:45
Ответы с готовыми решениями:

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

Записи и типизированные файлы. Описание структуры с именем Price
Описать структуру с именем PRICE, содержащую следующие поля: - название...

Занесите в отдельные файлы списки студентов различных форм обучения(Типизированные файлы)
Помогите пожалуйста написать программку. Трудно мне даются блин эти файлы... ...

Файлы. Типизированные файлы. Получить файл G, содержащий все компоненты файла F, являющиеся нечетными числами и корнями целых чисел
1.Заданный файл F компонентами которого являются целые числа. Получить файл G...

типизированные файлы
Пожалуйста, помогите. Создайте консольное приложение, реализующее создание...

27
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
26.04.2012, 15:35 2
Сделай одолжение, перейди на Turbo/Free Pascal. А то я тебе задачу решила, а ты ее, судя по всему, даже не опробовал...
0
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
26.04.2012, 17:41  [ТС] 3
Опробывал! Она у меня не работает на SchoolPak. А обычный паскаль у меня даже не запускается. На SchoolPak она у меня не работает, ошыбка.
0
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
27.04.2012, 14:13 4
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
uses crt;
 
type rabotnik = record
     fam: string[15];
     init: string[2];
     nomer: longint;
     end;
 
var f: text;
    name: string;
    r: rabotnik;
    fam,imea: string[15];
    naiden: boolean;
 
 
begin clrscr;
write('Imea faila: '); readln(name);
assign(f,name); reset(f);
write('Familia: '); readln(fam);
write('Imea: '); readln(imea);
 
naiden:=false;
while not eof(f) do
 begin
 readln(f,r.fam);
 readln(f,r.init);
 readln(f,r.nomer);
 if r.fam = fam then
  if r.init[1] = imea[1] then
   begin
   writeln(r.fam,' ',r.init,' - ',r.nomer);
   naiden:=true;
   end;
 end;
if not naiden then writeln('Oshibka v imeni/familii. Rabotnik ne naiden.');
close(f); readkey; end.
Я кое-что исправила, хотя я тебе говорила что исправить, но видимо ты не знал где исправлять. Скопируй и попробуй еще раз.
1
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
27.04.2012, 15:33  [ТС] 5
Теперь все работает, файл находит, но всегда пишет работник ненайден. Что нужно написать в файле что бы находило работника?
0
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
27.04.2012, 15:59  [ТС] 6
Вот кароче прописал в файле, но немогу понять как сделать что бы выводило номер тел.
Когда пишеш в файле просто: Фамилию
Имья
То выводит вот такое:
0
Миниатюры
Типизированные файлы, записи.  
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
27.04.2012, 16:38 7
Цитата Сообщение от HelloInside Посмотреть сообщение
фамилия работника, его инициалы и номер телефона
По строчкам:
Фамилия
Инициалы (2 буквы без точек)
Телефон

Добавлено через 1 минуту
Чтобы работник был найден, в файле должен быть работник с такой фамилией и инициалами, начинающимися на ту же букву, что и имя, которое вы ввели.

Добавлено через 2 минуты
Пример файла:
Петров
ДГ
450194
Соколова
АИ
392363

Пример входных данных:
Imea faila: 27.txt
Familia: Соколова
Imea: Анна

Соколова АИ - 392363
0
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
27.04.2012, 22:25  [ТС] 8
Вроде все так... но:
0
Миниатюры
Типизированные файлы, записи.  
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
27.04.2012, 22:28 9
Пробелы в началах строк удали!
0
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
27.04.2012, 22:32  [ТС] 10
Непомогло:
0
Миниатюры
Типизированные файлы, записи.  
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
28.04.2012, 12:29 11
Я поняла. Паскаль читает текстовые файлы немного по-другому. Создавайте файл прямо в паскале.
1
Миниатюры
Типизированные файлы, записи.  
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
28.04.2012, 12:33 12
Вот у меня так:
0
Миниатюры
Типизированные файлы, записи.  
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
28.04.2012, 18:47  [ТС] 13
А у тебя все работало отлично?
0
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
28.04.2012, 23:40 14
Да. Тут дело именно в том, что файл, из которого прога читает данные, надо создавать в паскале, как на первом скрине. Просто сохраняешь его с разрешением .txt, а не .pas. Это паскаль в общем. Символы в нем спокойно сравниваются, если их просто сравнить надо, но если ты создаешь файл через блокнот, вообще какую-то фигню читает.
0
КонецСвета
Почетный модератор
7929 / 3900 / 2464
Регистрация: 30.10.2011
Сообщений: 5,379
28.04.2012, 23:46 15
HelloInside, поиск...
0
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
29.04.2012, 00:05  [ТС] 16
Цитата Сообщение от КонецСвета Посмотреть сообщение
HelloInside, поиск...
Ето паскаль абс, а мне на SchoolPak...
0
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
29.04.2012, 00:07  [ТС] 17
Непойму что здесь не так)
Ето наверное из за разных версий паскаля!
0
Миниатюры
Типизированные файлы, записи.  
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
29.04.2012, 00:10  [ТС] 18
Керра, спасибо вроде все настроил, поменял расширение из тхт, на пас, и вроде все работает отлично! Только Вместо иницыалов выводит 2 первые буквы имени:
0
Миниатюры
Типизированные файлы, записи.  
КонецСвета
Почетный модератор
7929 / 3900 / 2464
Регистрация: 30.10.2011
Сообщений: 5,379
29.04.2012, 00:17 19
HelloInside, ну уж, чтобы...
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
uses crt;
 
type sotrudniki = record
     fio:  string[15];
     tel:  string[9];
     end;
 
var  f:file of sotrudniki; r: byte;
 
procedure Vvod (var ff: file of sotrudniki);
var  i,n: integer;
     s: sotrudniki;
begin
clrscr;
rewrite(ff);
write('Количество сотрудников:');
readln(n);
writeln('Внесите телефоны сотрудников: ');
for i:=1 to n do
    with s do
         begin
         write('Фамилия, инициалы: '); readln(fio);
         repeat
         write('Телефон (000-00-00): '); readln(tel);
         until (length(tel)=9) and ((tel[4]='-') and (tel[7]='-'));
         write(ff,s);
         end;
close(ff);
writeln('Данные занесены в файл');
writeln('Нажмите Enter для продолжения');
readln;
end;
 
procedure Poisk(ff: file of sotrudniki);
var  s: sotrudniki;
     z: string;
     k: integer;
begin
clrscr;
reset(ff);
writeln('Поиск номера телефона по фамилии');
write('Укажите фамилию, инициалы: '); readln(z);
while not (eof(ff)) do
      begin
      read(ff,s);
      with s do
           if fio=z then
              begin
              writeln(fio:15,' ',tel);
              inc(k);
              end;
      end;
close(ff);
if k=0 then writeln('Нет данных о сотруднике');
writeln('Нажмите Enter для продолжения');
readln;
end;
 
begin
assign(f,'C:\BDsotrudniki.dta');
r:=1;
repeat
clrscr;
writeln('0-завершение работы');
writeln('1-ввод данных');
writeln('2-поиск по фамилии');
readln(r);
case r of
1: Vvod (f);
2: Poisk(f);
else r:=0;
end;
until r=0;
readln;
end.
только крокозябры перебить
0
HelloInside
7 / 7 / 13
Регистрация: 31.10.2011
Сообщений: 294
29.04.2012, 00:24  [ТС] 20
Керра, еще одна прозьба, помоги розобрать каждую сторку:

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
 uses crt;  --- включаем модуль крт;
 
type rabotnik = record     
     fam: string[15];
     init: string[2];
     nomer: longint;
     end;
 
var f: text;     ---- описываем переменные;
    name: string;    ---- описываем переменные;
    r: rabotnik;    ---- описываем переменные;
    fam,imea: string[15];   ---- описываем переменные;
    naiden: boolean;   ---- описываем переменные;
 
 
begin - начинаем писать самую программу.
clrscr; - очистка екрана.
write('Imea faila: ');  - выводим строку на еркран для ввода имени файла;
readln(name);  - вводим имя;  
assign(f,name); - незнаю
reset(f); - незнаю
write('Familia: '); - выводим фамилию.
readln(fam); - вводим фамилию
write('Imea: '); - выводим имя
readln(imea);  - вводим имя 
 
naiden:=false;      - вот етот цыкл не пойму
while not eof(f) do
 begin
 readln(f,r.fam);
 readln(f,r.init);
 readln(f,r.nomer);
 if r.fam = fam then
  if r.init[1] = imea[1] then
   begin
   writeln(r.fam,' ',r.init,' - ',r.nomer);
   naiden:=true;
   end;
 end;
if not naiden then writeln('Oshibka v imeni/familii. Rabotnik ne naiden.');
close(f); readkey; end.
Добавлено через 1 минуту
Цитата Сообщение от КонецСвета Посмотреть сообщение
HelloInside, ну уж, чтобы...
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
uses crt;
 
type sotrudniki = record
     fio:  string[15];
     tel:  string[9];
     end;
 
var  f:file of sotrudniki; r: byte;
 
procedure Vvod (var ff: file of sotrudniki);
var  i,n: integer;
     s: sotrudniki;
begin
clrscr;
rewrite(ff);
write('Количество сотрудников:');
readln(n);
writeln('Внесите телефоны сотрудников: ');
for i:=1 to n do
    with s do
         begin
         write('Фамилия, инициалы: '); readln(fio);
         repeat
         write('Телефон (000-00-00): '); readln(tel);
         until (length(tel)=9) and ((tel[4]='-') and (tel[7]='-'));
         write(ff,s);
         end;
close(ff);
writeln('Данные занесены в файл');
writeln('Нажмите Enter для продолжения');
readln;
end;
 
procedure Poisk(ff: file of sotrudniki);
var  s: sotrudniki;
     z: string;
     k: integer;
begin
clrscr;
reset(ff);
writeln('Поиск номера телефона по фамилии');
write('Укажите фамилию, инициалы: '); readln(z);
while not (eof(ff)) do
      begin
      read(ff,s);
      with s do
           if fio=z then
              begin
              writeln(fio:15,' ',tel);
              inc(k);
              end;
      end;
close(ff);
if k=0 then writeln('Нет данных о сотруднике');
writeln('Нажмите Enter для продолжения');
readln;
end;
 
begin
assign(f,'C:\BDsotrudniki.dta');
r:=1;
repeat
clrscr;
writeln('0-завершение работы');
writeln('1-ввод данных');
writeln('2-поиск по фамилии');
readln(r);
case r of
1: Vvod (f);
2: Poisk(f);
else r:=0;
end;
until r=0;
readln;
end.
только крокозябры перебить
Непонял, что сделать?)
0
29.04.2012, 00:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2012, 00:24

Типизированные файлы
В базе данных school.dat хранятся сведения о годовых оценках учеников школы:...

Паскаль. Типизированные файлы.
Вот код к следующей задаче: Для студентов некоторой группы задана следующая...

Типизированные файлы (обработка)
Как мне вывести в алфавитном порядке список фамилий студентов группы Х, у...


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

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

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