IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Создание БД
Abror
сообщение 14.05.2006 16:07
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Аброр

Репутация: -  0  +


Здрасте не поможете написать прогу?
Есть офис сотрудников указаны фамилию,имя,стаж, номер телефона и зароботная платаю
А) Вывести список сотрудников чей стаж не менее 20 лет работы
В) Вывести список сотрудников две первые цифры номера которых одинаковы

Часть А я сделал.
Код

program Kursovaya;
type group=record
surname:string[10];
name:string[10];
year:integer;
money:integer;
number:string[7];
end;
var F:file of group;
G:group; i,n:integer; s:string;
begin
Assign(F,'C:\TP7\kursovaya.pas');
write('Vvedite chislo sotrudnikov'); readln(n); rewrite(F);
For i:=1 to n do begin with G do
begin
readln(surname);
readln(name);
readln(year);
readln(money);
readln(number);
end;
write(F,G);
end;
reset(F);
WHILE NOT EOF (F) do begin
read (F,G);
IF(G.year>=20) then begin
writeln('Staj raboti ne menee 20 let');
writeln(G.surname);
writeln(G.name);
close(F);end.


Это первая часть проги которую я смог сделать
для второй части Мне посоветвали сделать
var s:array[1..100];
For i:=1 to n do
s[i]:=copy(G.number,1,2) {записать в массив первые две цифры номера и сравнивать их}

А можно еще сделать
number:longint;
var:array[1..100];
for i:=1 to n do
s[i]:=G.number div 100000 ; {так как все номера у меня семизначныеЪ
Но я не знаю как сравнивать и как сделать так чтобы выводило фамилии сотрудников чьи номера начинаются с двух первых цифр.
Заранее спасибо!


Например
1. петров 123456
2.сидоров 127456
3.иванов 134585
4.козлов 139856
5.баранов 224558
6. Ишаков 129547
Ответ:
Номера одинаковые у: Петров, Сидоров,Ишаков
Номера одинаковые у: Иванов, Козлов
Просьба помочь!! Спасибо

Сообщение отредактировано: Abror - 14.05.2006 16:29
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 14.05.2006 16:45
Сообщение #2


Гость






Ну, в принципе это делается так:
program Kursovaya;
var
F:file of group;
G, Gnext:group; i, err: integer; s:string;

f_pos: longint;
check: string;
first: boolean;

{
Этот массив - для того, чтобы не выводить информацию,
уже выведенную на экран, повторно
}
was: array[1 .. 99] of boolean;

{ ... остальные переменные ... }

begin
Assign(F,'kurs.dat'); rewrite(F);
{ Вводишь данные и записываешь их в файл }

reset(F); f_pos := 0;
while not eof (f) do begin

read (F,G);
check := copy(G.number, 1, 2); first := false;
val(check, i, err);
if was[i] then continue else was[i] := true;

f_pos := filepos(f);

while not eof(f) do begin
read(f, Gnext);
if copy(Gnext.number, 1, 2) = check then begin
if not first then begin
write('number: ', check, '... : ', G.surname); first := true
end;
write(', ', Gnext.surname);
end;
end;
writeln;
seek(f, f_pos);

end;
close(F);
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 12.08.2025 10:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"