• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

помогите, пожалуйста, срочно

  • Автор темы Автор темы lexel
  • Дата начала Дата начала

lexel

Ученик
Регистрация
16 Авг 2008
Сообщения
8
Реакции
0
Баллы
0
дали задание:

ОПИСАНИЕ
Программа должна использовать массив данных о сотрудниках небольшой фирмы (до 10 сотрудников). По каждому сотруднику вводится следующая информация:
• Фамилия, имя, отчество;
• год и дата рождения;
• пол;
• стаж работы по специальности;
• домашний адрес;
• телефон;
• должность;
• оклад.
Информация о сотрудниках фирмы хранится в файле workers.dat.
Программа содержит следующие процедуры и функции:
• НовыйСотрудник (предназначена для ввода данных о новом сотруднике и сохранении ее в файле workers.dat);
• Уволить (удаляет информацию об уволенном сотруднике из массива данных);
• Просмотреть (позволяет просмотреть информацию о сотрудниках в алфавитном порядке);
• Упорядочить (упорядочивает список сотрудников в порядке убывания величины оклада);
• Найти (выводит на экран список сотрудников, работающих в указанной должности, например, инженером).
В программе разрешается использовать дополнительные файлы, облегчающие просмотр и поиск требуемой информации о сотруднике.
ВХОД
Имя вызываемой процедуры должно вызываться из списка пунктов меню по номеру пункта.
Информация о новом сотруднике вводится в диалоге типа "Введите фамилию сотрудника:" и т.д.
Процедура Уволить запрашивает ввод фамилии И.О.увольняемого сотрудника.
Процедура Просмотреть должна ожидать нажатия "горячей" клавиши перехода к информации об очередном сотруднике в списке.
Процедура Найти запрашивает ввод жолжности по выбору пользователя.
ВЫХОД
Процедура Просмотреть по каждому нажатию "горячей" клавиши выводит полную информацию об очередном сотруднике из алфавитного списка.
Процедура Упорядочить выводит на экран список из фамилии И.О. и окладов сотрудников в порядке убывания величины оклада.
Процедура Найти выводит на экран список сотрудников, работающих в указанной должности.
ОШИБКИ
Ошибочный ввод информации, правильность которой компьютер в состоянии проверить, должен приводить к отказу от неправильного ввода с выходом на повторный ввод этой же информации.

просто не знаю, что делать(((
от этой проги зависит моя учёба!!! помогите!!!
 
может и не такую, но в принцыпе, да. на Pascal'е или C++
 
ПОМОГИТЕ, ПЛЗ!!!
 
Ну а чего ты собственно хочешь? В смысле в чем состоит затруднение.
 
Роман Вознюк написал(а):
Ну а чего ты собственно хочешь? В смысле в чем состоит затруднение.
я не знаю, как работать с файлами((( в принцыпе, надо создать массив, с которого будут даные передаваться в файл, я так думаю.
вот немного начал, но оно, наверное, не правильно:

program firma;
uses crt;
type mas=array[1..15,1..8] of string;
var a:mas;
k:byte;

procedure noviy(a:mas);
begin
writeln('vvedit dani novogo sotrudnika');
write('vvedit FIO ');
readln(a[1,1]);
write('vvedit datu narodjenia(d:m:g) ');
readln(a[1,2]);
write('vvedit pol(m/f)' );
readln(a[1,3]);
write('vvedit staj roboti ');
readln(a[1,4]);
write('domashnia adresa ');
readln(a[1,5]);
write('telefon ');
readln(a[1,6]);
write('doljnost ');
readln(a[1,7]);
write('oklad ');
readln(a[1,8]);


end;

begin
writeln('Vvedit nomer operacii:');
writeln('1.noviy sotrudnik');
writeln('2.uvolit');
writeln('3.posmotret');
writeln('4.uporiado4it');
writeln('5.nayti');
readln(k);
case k of
1:noviy(a);
{2:
3:
4:
5:}
else
begin
writeln('vvedeno nepravilniy nomer');
end;
end;

readkey;
end.
 
lexel написал(а):
я не знаю, как работать с файлами(((
Работа с файлами ничем не отличается от обычного ввода/вывода - только еще указывается допогнительный параметр - дескриптор файла.
 
lexel
Ваша процедура постоянно переписывает привводе нового сотрудника первую запись :). Попробуйте реализовать это с помощью счетчика записей, для этого нужно сначала считать количество записей из файла, потом увеличить счетчик на один, ввести данные и записать в файл.
Пользуйтесь справкой программной среды. Там все примеры есть.

В частности для Pascal реализованы следующие операторы работы с файлами (список далеко не полный):
Assign - ассоциировать файловую переменную с файлом
Reset - инициализация файла по чтению
Rewrite - инициализация файла по записи
Append - инициализация файла по добавлению строк в конец файла.
WriteLN - запись строки в файл
ReadLN - чтение строки из файла в переменную
Close - закрыть файл

В C++ работа идет с потоками данных, которые потом можно адресовать, сравнивать и уничтожать. Об этом - в предыдущем посте.
 
у меня в програме
program firma;
uses crt;
type mas=array[1..15,1..8] of string;
var a:mas;
k,i:byte;
f:text;
m:char;

procedure noviy(a:mas;i:byte);
var z:char;
f:boolean;
d,m:byte;
g:word;
begin
writeln('vvedit dani novogo sotrudnika');
write('vvedit FIO ');
readln(a[1,1]);
repeat
write('vvedit datu narodjenia(d m g) ');
read(d);
read(m);
read(g);
if d>31 then
begin
writeln('takogo dnia ne isnye, povtorit vvod');
f:=false;
end
else f:=true;
if m>12 then
begin
writeln('takogo misiacia ne isnye, povtorit vvod');
f:=false;
end
else f:=true;
if g>1992 then
begin
writeln('pracivniku menshe 16 rokiv, povtorit vvod');
f:=false;
end
else f:=true;
until f=true;
a[1,2]:=d+' '+m+' '+g;
repeat
write('viberit pol(m/f)' );
readln(z);
f:=false;
if z='m' then begin
a[1,3]:='male';
f:=true;
end
else if z='f' then begin
a[1,3]:='female';
f:=true;
end
else writeln('nepravilniy vvod, vvedit sche raz');
until f=true; }
write('vvedit staj roboti ');
readln(a[1,4]);
write('domashnia adresa ');
readln(a[1,5]);
write('telefon ');
readln(a[1,6]);
write('doljnost ');
readln(a[1,7]);
write('oklad ');
readln(a[1,8]);


end;

begin
writeln('Vvedit nomer operacii:');
writeln('1.noviy sotrudnik');
writeln('2.uvolit');
writeln('3.posmotret');
writeln('4.uporiado4it');
writeln('5.nayti');
readln(k);
case k of
1:begin
assign(f,'workers.dat');
reset(f);
while not eof(f) do
begin
readln(f,m);
i:=i+1;
end;
noviy(a,i);
end;
{2:
3:
4:
5:}
else
begin
writeln('vvedeno nepravilniy nomer');
end;
end;

readkey;
end.
в процедуре noviy возле слова begin выдаёт 202 ошибку (переполнение стэка). Почему???

и как сделать ограничение по дате, если в
repeat
write('vvedit datu narodjenia(d m g) ');
read(d);
read(m);
read(g);
if d>31 then
begin
writeln('takogo dnia ne isnye, povtorit vvod');
f:=false;
end
else f:=true;
if m>12 then
begin
writeln('takogo misiacia ne isnye, povtorit vvod');
f:=false;
end
else f:=true;
if g>1992 then
begin
writeln('pracivniku menshe 16 rokiv, povtorit vvod');
f:=false;
end
else f:=true;
until f=true;
a[1,2]:=d+' '+m+' '+g;
a[1,2] типа string, а d,m и g-byte???
 
Код:
repeat
      write('vvedit datu narodjenia(d m g) ');
      read(d);
      read(m);
      read(g);
      f:=true;
      if d>31 then
                begin
                  writeln('takogo dnia ne isnye, povtorit vvod');
                  f:=false;
                end
              else if m>12 then
                begin
                  writeln('takogo misiacia ne isnye, povtorit vvod');
                  f:=false;
                end
              else if g>1992 then
                  begin
                    writeln('pracivniku menshe 16 rokiv, povtorit vvod');
                    f:=false;
                  end;
  until f=true;
Попробуйте так, в принципе, это сложное условие, не проверял, но должно работать.
 
lexel написал(а):
Строковой переменной вы присваиваете числовое значение без преобразования формата. Это вызывает одну из ошибок.
 
а как можно сделать преобразование формата d,m,g-целые, а[1,2]-елемент масива типа string???
 
IntToStr(), это в дельфях, в борланд паскале ищите STR()
 
lexel, постучись сюда 485-703-717
 
Установка второго винта

Всем привет. Прошу у вас помощи с установкой второго винчестера. Ситуация следующая: купил новый комп, полностью укомплектованный. Жесткий диск 750 Gb 7200 rpm 32Mb SATA-II подключен к материнке Asus P-43, на которой имеются разъемы и для подключения винчестера через интерфейс IDE. Собственно, через него (IDE) я и пробовал подключить мой старый винчестер (Seagate Barracuda 7200.7 160Gb). Подключаль его к краю и середине шлейфа, подключал как Master, как Slave и как Cable Select - все одно - ни в БИОСе, ни в управлении дисками он не появляется. Пробовал в настройках нового диска (SATA) в БИОСе отключить его как IDE (где-то вычитал, что это может помочь), но в итоге и этот жесткий диск перестал работать - вернул в начальное положение. На новом диске стоит недавно установленная операционка Windows XP (если необходимо для задания других параметров диска или его формата, могу удалить и переустановить ее заново), на старом - нет операционки, только документы, музыка, видео, картинки и т.д. Прошу помочь подключить этот второй диск к новому компу. Всем ответившим заранее спасибо.
 
Кроме сигнального шлейфа необходимо и про питающий не забыть;). Если старый HDD в полном порядке, то должен определиться без проблем.
 
Безусловно, питание я также подключал - однако, определяться все равно не хочет. И кстати, при включении второго диска не только он не видится, но и DVD-ROM исчезает. Вопрос открыт и к нему можно добавить: как не только установить второй жесткий диск, но и сохранить DVD-ROM?
 
Безусловно, питание я также подключал - однако, определяться все равно не хочет. И кстати, при включении второго диска не только он не видится, но и DVD-ROM исчезает. Вопрос открыт и к нему можно добавить: как не только установить второй жесткий диск, но и сохранить DVD-ROM?
DVD-ROM тоже по IDE подключен? Можно попробовать параллельно с ним подключить HDD. И по шлейфу вопрос, сколькижильный применяете, есть 40 и 80-жильные?
 
C DVD-ROMом (он также через SATA подключается, через IDE только старый винчестер и подключается, т.ч. ни с чем запараллелить не получится) разобрался, сейчас в БИОСе он под SATA 4, а новый жесткий под SATA 1. Новый жесткий по-прежнему не видит. Шлейф 80-жильный, жесткий подключен сейчас к серому разъему и перемычка стоит на cable select.
 
C DVD-ROMом (он также через SATA подключается, через IDE только старый винчестер и подключается, т.ч. ни с чем запараллелить не получится) разобрался, сейчас в БИОСе он под SATA 4, а новый жесткий под SATA 1. Новый жесткий по-прежнему не видит. Шлейф 80-жильный, жесткий подключен сейчас к серому разъему и перемычка стоит на cable select.

Обновите драйвера материнской платы, возможно контроллер IDE в слепую работает.
 
Назад
Сверху