таблицы в турбо паскале, помогите, плиз...

Света7
Сообщения: 20
Зарегистрирован: 18 мар 2008, 19:42

Помогите чайнику с задачей
Известна информация о сотрудниках некоторого предприятия:
-фамилия, инициалы;
-должность, оклад;
Сформировать таблицу, записав в неё всю известную информацию о каждом сотруднике.Сформировать поле "подоходный налог", учитывая, что он составляет 13% от оклада и поле "к выплате".Определить количество с минимальной зарплатой, количество с максимальной зарплатой (по 5 записей). Отсортировать таблицу по полю "должность ".
Заранее благодарна всем, кто откликнется!
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Наверное так:
[syntax='Delphi']
program prog1;

uses
Crt;

Type
TEmploeye=record
Name:string;
Post:string;
Salary:LongInt;
Tax:LongInt;
Payment:LongInt;
end;

Const
N=5;

var
Table: array[1..N] of TEmploeye;
I,J:integer;
K:TEmploeye;
Max,Min:LongInt;
MaxCnt,MinCnt:integer;

procedure Sort;
begin
for i:=N downto 1 do
for j:=2 to i do
begin
k:=Table[j-1];
if k.Post>Table[j].Post then
begin
Table[j-1]:=Table[j];
Table[j]:=k;
end;
end;
end;

Procedure WriteRow(idx:integer);
var
R:string;
i:integer;
s:string;
begin
R:=Table[idx].Name;
For i:=Length(R) to 9 do
R:=R+' ';
R:=R+Table[idx].Post;
For i:=Length(R) to 20 do
R:=R+' ';
Str(Table[idx].Salary,s);
R:=R+s;
For i:=Length(R) to 30 do
R:=R+' ';
Str(Table[idx].Tax,s);
R:=R+s;
For i:=Length(R) to 38 do
R:=R+' ';
Str(Table[idx].Payment,s);
R:=R+s;
Writeln(R);
end;

Procedure FindMaxMin;
var
I:integer;
begin
Max:=Low(LongInt);
Min:=High(LongInt);
For I:=1 to N do
if Table.Payment>Max then
Max:=Table.Payment;
For I:=1 to N do
if Table.Payment<Min then
Min:=Table.Payment;
MaxCnt:=0;
MinCnt:=0;
For I:=1 to N do
begin
If Table.Payment=Max then
Inc(MaxCnt);
If Table.Payment=Min then
Inc(MinCnt);
end;

end;

begin
ClrScr;
for I:=1 to N do
with Table do
begin
Writeln('Введите данные для работника № ',I,' :');
Writeln('Имя и инициалы:');
Readln(Name);
Writeln('Должность:');
Readln(Post);
Writeln('Оклад:');
Readln(Salary);
Tax:=(Salary div 100)*13;
Payment:=Salary-Tax;
end;
Sort;
Writeln('Имя: Должность: Оклад: Налог: К выплате:');
for i:=1 to N do
begin
WriteRow(i);
end;
FindMaxMin;
writeln;
Writeln('С минимальной зарплатой : ',MinCnt);
Writeln('С максимальной зарплатой : ',MaxCnt);

repeat until keypressed;

end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Света7
Сообщения: 20
Зарегистрирован: 18 мар 2008, 19:42

Благодарю! Скажите пожалуйста, многоуважаемый MOTOcoder, как, не набирая снова эту программу в турбопаскаль проверить как она работает, тоесть как то скопировать и вставить можно в тпаскаль?
с уважением Света7
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Проще всего будет создать новый текствый файл в Блокноте, скопировать код и вставить в него, затем сохранить его как файл с расширением .pas . Дальше его можно открыть в паскале, правда придется переписать русские надписи вручную(вместо них будет непонятный набор символов).
Ни что так не ограничивает фантазию программиста, как компилятор...
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

а можно, я отвечу за многоуважаемого (это без всякой иронии!!!) MOTOcoder...

можно выделить текст программы в браузере, скопировать, открыть текстовый редактор (желательно такой, который поддерживает кодировку DOS, например, FAR manager), вставьте туда скопированный текст и сохраните под именем PROG1.PAS

Кстати, рекомендую копировать текст после того, как нажмёте на кнопку "quote"[справа внизу в сообщении от MOTOcoder - тогда текст будет отформатирован правильно.

ДОБАВЛЕНО да... успеешь за ним... он, похоже тут на форуме живёт!! ;-))
MOTOcoder - респект!
Света7
Сообщения: 20
Зарегистрирован: 18 мар 2008, 19:42

MOTOCoder писал(а):Наверное так:
[syntax='Delphi']
program prog1;

uses
Crt;

Type
TEmploeye=record
Name:string;
Post:string;
Salary:LongInt;
Tax:LongInt;
Payment:LongInt;
end;

Const
N=5;

var
Table: array[1..N] of TEmploeye;
I,J:integer;
K:TEmploeye;
Max,Min:LongInt;
MaxCnt,MinCnt:integer;

procedure Sort;
begin
for i:=N downto 1 do
for j:=2 to i do
begin
k:=Table[j-1];
if k.Post>Table[j].Post then
begin
Table[j-1]:=Table[j];
Table[j]:=k;
end;
end;
end;

Procedure WriteRow(idx:integer);
var
R:string;
i:integer;
s:string;
begin
R:=Table[idx].Name;
For i:=Length(R) to 9 do
R:=R+' ';
R:=R+Table[idx].Post;
For i:=Length(R) to 20 do
R:=R+' ';
Str(Table[idx].Salary,s);
R:=R+s;
For i:=Length(R) to 30 do
R:=R+' ';
Str(Table[idx].Tax,s);
R:=R+s;
For i:=Length(R) to 38 do
R:=R+' ';
Str(Table[idx].Payment,s);
R:=R+s;
Writeln(R);
end;

Procedure FindMaxMin;
var
I:integer;
begin
Max:=Low(LongInt);
Min:=High(LongInt);
For I:=1 to N do
if Table.Payment>Max then
Max:=Table.Payment;
For I:=1 to N do
if Table.Payment<Min then
Min:=Table.Payment;
MaxCnt:=0;
MinCnt:=0;
For I:=1 to N do
begin
If Table.Payment=Max then
Inc(MaxCnt);
If Table.Payment=Min then
Inc(MinCnt);
end;

end;

begin
ClrScr;
for I:=1 to N do
with Table do
begin
Writeln('Введите данные для работника № ',I,' :');
Writeln('Имя и инициалы:');
Readln(Name);
Writeln('Должность:');
Readln(Post);
Writeln('Оклад:');
Readln(Salary);
Tax:=(Salary div 100)*13;
Payment:=Salary-Tax;
end;
Sort;
Writeln('Имя: Должность: Оклад: Налог: К выплате:');
for i:=1 to N do
begin
WriteRow(i);
end;
FindMaxMin;
writeln;
Writeln('С минимальной зарплатой : ',MinCnt);
Writeln('С максимальной зарплатой : ',MaxCnt);

repeat until keypressed;

end.
[/syntax]


что то программа выдает несколько ошибок, помогите исправить, если сможете
с уважением Света7
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Света7, телепаты на форуме обычно в отпуске. Где выдает ошибки и какие?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Света7
Сообщения: 20
Зарегистрирован: 18 мар 2008, 19:42

да кто её знает, где то там, в программе, это ведь вы программисты, а я полный чайник.Вроде синтаксические что ли. Будтье любезны, помогите
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

У меня компилируется без ошибок.
Приведите сообщение об ошибке, которое выдает компилятор.
Ни что так не ограничивает фантазию программиста, как компилятор...
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

без ошибок
Ответить