Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2009, 18:13   #1
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
Радость Паскаль, работа с записями

Получил лабораторку:
Описать переменную "служащий", состоящую из имени, фамилии, отчества служащего, даты рождения, образования, домашнего адреса, профессии. Определить имена людей с высшим образованием. Выдать данные о служащем, который имеет ту или иную профессию.
Немогу понять, как сделать чтобы пользователь вводил данные сотрудников (количество неизвестно) и потом оформить их в одну таблицу.
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.
Veselyn вне форума Ответить с цитированием
Старый 25.02.2009, 18:22   #2
Jean-Esther
Пользователь
 
Аватар для Jean-Esther
 
Регистрация: 15.01.2009
Сообщений: 69
По умолчанию

Либо чтение из файла, либо указывать количество этих служащих изначально.
Silence is of great value...
Jean-Esther вне форума Ответить с цитированием
Старый 25.02.2009, 18:34   #3
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
По умолчанию

Я думал о чтении из файла, но только как сказать чтобы оно искало по специальности
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.
Veselyn вне форума Ответить с цитированием
Старый 26.02.2009, 07:31   #4
Курсант
 
Регистрация: 21.02.2009
Сообщений: 3
По умолчанию

Могу ошибиться, но думаю так: создаете тип запись (Record), до тех пор пока оператор не скажет "хватит" запрашиваете у него данные и забиваете их в запись после чего записываете запись в файл. Потом схраняете файл. Открываете для чтения и по одной считываете из файла записи, смотрите что записано в поле "специальность", если Ваше - выдаете оператору инфу, если не ваше - то следующий. И так до конца файла... Вот только с файлами записей я никогда не работал, но думаю если очень надо можно побайтно записывать/считывать то с чем вы там работаете...
Курсант вне форума Ответить с цитированием
Старый 26.02.2009, 10:10   #5
Rus 47
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 28
По умолчанию

Да, создаёте комбинированный тип, например такой:
Type
Tsluzh = record;
imya,familiya,otchestvo,denrozhd,ob razov,adres,prof: string;
end.
var
sluzh:array [1..100] of sluzh

И так далее.
А вообще пощёлкай по темам здесь, тут есть такие темы уже.
Rus 47 вне форума Ответить с цитированием
Старый 26.02.2009, 10:35   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Либо чтение из файла, либо указывать количество этих служащих изначально.
Не обязательно.
uses crt;
........
repeat
вводим записи, пока не надоест
until readkey=#27; //по нажатию Esc заканчиваем ввод(или любая другая клавиша)
puporev вне форума Ответить с цитированием
Старый 26.02.2009, 12:00   #7
roach1967
Пользователь
 
Регистрация: 21.02.2009
Сообщений: 28
По умолчанию

Можно открыть типизированный файл (тип Tsluzh). Паскаль прекрасно обрабатывает такие файлы: длина файла (кол-во записей), навигация по файлу (вперёд, назад, в начало, в конец).
Если необходимо иметь доступ сразу ко всем записям, тут уж придёться заносить данные из файлу в кучу (HEAP). Тогда при интенсивном использовании данных уменьшатся дисковые операции. Иначе при большом числе служащих будет постоянная задержка на выдачу результатов.
В споре рождается истина.
roach1967 вне форума Ответить с цитированием
Старый 26.02.2009, 12:29   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Можно открыть типизированный файл (тип Tsluzh).
Цитата:
Паскаль прекрасно обрабатывает такие файлы
Как говорил Матроскин, чтобы продать что-нибудь ненужное, нужно иметь это ненужное. Речь идет как раз о создании этих записей.
puporev вне форума Ответить с цитированием
Старый 26.02.2009, 22:38   #9
roach1967
Пользователь
 
Регистрация: 21.02.2009
Сообщений: 28
По умолчанию

Уже было предложено описание типа:
Цитата:
Сообщение от Rus 47 Посмотреть сообщение
Type
Tsluzh = record;
imya,familiya,otchestvo,denrozhd,ob razov,adres,prof: string;
end.
Остаётся только объявить переменные данного типа, файловую переменную.
Открыть файл на считывание
В цикле по условию окончания файла считывать в переменную данные из файла и обрабатывать, как необходимо.
Для создания файла данных открываем файл для записи (правильнее для добавления), заполнив переменную этого-же типа вручную и записать в файл. Для окончания ввода можно ввести проверку условия ввода пустого имени.

Если необходимости в активном использовании таких данных нет, можно использовать простой текстовый файл с разделителями "точка с запятой" (*.CSV). Такой файл можно редактировать и в блокноте и в Excell.
В споре рождается истина.
roach1967 вне форума Ответить с цитированием
Старый 02.03.2009, 23:55   #10
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
По умолчанию

Собственно вот что я набросал с помощу ваших советов

PHP код:
program base;
uses crt;
Var   
      
namestring[40];
      
adresstring[30];
      
rojdenstring[15];
      
specialnost:string[15];
      
spstring;
      
kinreal;
Begin
Clrscr
;
specialnost:=sp;
k:=0;
writeln ('Vvedite kolichestvo sotrydnikov :',n);
readln(n);
for 
i:=1 to n do
   
Begin
    writeln 
('Vvedite FIO :',name);
       
readln(name);
            
writeln ('Vvedite adres :',adres);
               
readln(adres);
                   
writeln ('Vvedite daty rojdenia :',rojden);
                      
readln(rojden);
                            
writeln ('Vvedite specialnost :',sp)
                              
readln(sp);
 
Clrscr;
   
end;
   
Writeln ('-------------------------------------------------------------------');
   
writeln (' FIO ',,'|',,' adres ',,'|',,' god rojdeniya ',,'|',,' specialnost ');
   
writeln ('-------------------------------------------------------------------');
           for 
i:=1 to n do
             
Begin
              writeln 
(name,'|',adres,'|',rojden,'|',sp,'|');
           
end;
   
writeln ('-------------------------------------------------------------------');
       
writeln ('Vvedie specialnost dla poiska :',sp);
         
readln(sp);
  for 
i:=1 to n do
    if 
sp=sp then
  begin
   writeln 
(name,'|',adres,'|',rojden,'|',sp,'|');
    
ins(k);
   
end;
 
Wreteln ('Kolichestvo naydenuh sotrydnikov :',k);
redln;
end
помогите исправить ошибки, первая на первом же цикле
нужно использовать
a: array [1..100] of real;
но незнаю как это сделать и ещё а[i].
Пожалуйста помогите я только учус.
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.

Последний раз редактировалось Veselyn; 03.03.2009 в 01:05. Причина: Поправил
Veselyn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами и записями. Помощь с итоговой Refenement Помощь студентам 13 19.03.2009 08:42
Работа с записями, паскаль Дядька Помощь студентам 5 13.02.2009 18:44
работа с записями Mango Помощь студентам 2 12.10.2008 23:54
Программа с записями Алексей Д. Помощь студентам 5 27.04.2008 20:25
Help! Проблема с записями... Sлавян Паскаль, Turbo Pascal, PascalABC.NET 2 27.04.2008 16:40