1 Востаннє редагувалося vasiliyok (09.06.2015 02:10:41)

Тема: Записи. Допоможіть з умовою [Вирішено]

Умова задачі: У файлі записано: прізвище працівника, нарахована зарплата, знятий податок. Порахувати загальну суму зароблених коштів і вивести прізвище працівника, який заплатив максимальний податок.
Як знайти прізвище працівника який отримав максимальний податок і зробити щоб рахувало суму?
код програми

Program lab13;
type book = record
surname:string[20];
zp:integer;
pd:integer;
max:real;
end;
  var b:text;
  gr:array [1..5] of book; i,j:integer;
  a:string;
  begin
  a:='Z:\drozd\lab13.txt';
      for i:=1 to 5 do
    begin
      writeln ('vvedu prizvushe '); readln(gr[i].surname);
      writeln (' zarplata '); readln(gr[i].zp);
      writeln (' podatok '); readln(gr[i].pd);
    end;
    begin
      assign(b,a);
      rewrite(b);
      for i:=1 to 5 do      writeln(b,gr[i].surname:20,gr[i].zp:14,gr[i].pd:7);
      close(b);
      end;
      reset(b);
   
      for i:=1 to 5 do
      begin
      s:=0;
             for j:=i + 1 to 4 do // ось з цього місця я заплутався взагалі
             begin
             s:=s+gr[i].zp;
             
                    if gr[i].pd = max then
                          writeln(gr[i].surname,s);
             end;
      end;
end.

2

Re: Записи. Допоможіть з умовою [Вирішено]

s := 0;
for i:=1 to 5 do
  s:=s+gr[i].zp; //s і є повна зп всіх працівників (тільки називайте змінні зрозуміліше)

так само і податок

allTax := 0;
for i:=1 to 5 do
  allTax:=allTax+gr[i].pd; //податок

3

Re: Записи. Допоможіть з умовою [Вирішено]

А можете повністю в коді їх записати? буду вдячний

Chemist-i написав:
s := 0;
for i:=1 to 5 do
  s:=s+gr[i].zp; //s і є повна зп всіх працівників (тільки називайте змінні зрозуміліше)

так само і податок

allTax := 0;
for i:=1 to 5 do
  allTax:=allTax+gr[i].pd; //податок

4

Re: Записи. Допоможіть з умовою [Вирішено]

Ні, в коді не можу, але спробую Вас на шлях істинний навести.
Вирішуйте задачу поетапно, як в завданні, розбивайте її на підзадачі,

Умова задачі: У файлі записано: прізвище працівника, нарахована зарплата, знятий податок. Порахувати загальну суму зароблених коштів і вивести прізвище працівника, який заплатив максимальний податок.

1.1. У файлі записано: прізвище працівника, нарахована зарплата, знятий податок;
2. Порахувати загальну суму зароблених коштів;
3. вивести прізвище працівника, який заплатив максимальний податок;
П. 1. у Вас налагоджено, далі робіть пункт 2, як я навів навів, т.е. в циклі доплюсовуєте до деякої змінної "загальний податок" податок ітого користувача.
А далі пункт 3. Просто в циклі перевіряйте, чи і-тий користувач заплатив більше ніж в змінній максТакс (яка до циклу має рівнятись 0), якщо так - то змінну максТакс присвоюйте цьому податку, а змінній "Найдовшийбільший користувач" номер того користувача (і), а в інакшому випадку (коли попередня умова не склалась) просто нічого не робите.
Після того циклу будете мати дві змінні, відповідно - Значення найбільшого податку (МаксТакс), і Номер користувача. - просто виведіть це.

5

Re: Записи. Допоможіть з умовою [Вирішено]

Дякую за керування , але все одно не виходить

Chemist-i написав:

Ні, в коді не можу, але спробую Вас на шлях істинний навести.
Вирішуйте задачу поетапно, як в завданні, розбивайте її на підзадачі,

Умова задачі: У файлі записано: прізвище працівника, нарахована зарплата, знятий податок. Порахувати загальну суму зароблених коштів і вивести прізвище працівника, який заплатив максимальний податок.

1.1. У файлі записано: прізвище працівника, нарахована зарплата, знятий податок;
2. Порахувати загальну суму зароблених коштів;
3. вивести прізвище працівника, який заплатив максимальний податок;
П. 1. у Вас налагоджено, далі робіть пункт 2, як я навів навів, т.е. в циклі доплюсовуєте до деякої змінної "загальний податок" податок ітого користувача.
А далі пункт 3. Просто в циклі перевіряйте, чи і-тий користувач заплатив більше ніж в змінній максТакс (яка до циклу має рівнятись 0), якщо так - то змінну максТакс присвоюйте цьому податку, а змінній "Найдовшийбільший користувач" номер того користувача (і), а в інакшому випадку (коли попередня умова не склалась) просто нічого не робите.
Після того циклу будете мати дві змінні, відповідно - Значення найбільшого податку (МаксТакс), і Номер користувача. - просто виведіть це.

6

Re: Записи. Допоможіть з умовою [Вирішено]

vasiliyok, що саме у Вас не виходить, код в студію? Будемо обговорювати.

7

Re: Записи. Допоможіть з умовою [Вирішено]

Нагородив город.Все разом і нічого не зрозуміло, це потрібно вводити дві нові змінні? maxTax i allTax ?

Chemist-i написав:

vasiliyok, що саме у Вас не виходить, код в студію? Будемо обговорювати.

8

Re: Записи. Допоможіть з умовою [Вирішено]

Змінна allTax - буде відповідати за збереження результату сумування (Summ) податків всіх людей;
Змінна maxTax - буде зберігати максимальний податок "певного" користувача
Також треба ще змінну, яка буде зберігати номер того юзера, що найбільший податок заплатив.

9 Востаннє редагувалося vasiliyok (09.06.2015 00:58:09)

Re: Записи. Допоможіть з умовою [Вирішено]

.

10 Востаннє редагувалося Chemist-i (09.06.2015 01:05:01)

Re: Записи. Допоможіть з умовою [Вирішено]

Навіщо у Вас два вкладених циклу? upd - вони не вкладені, соррі.
Ваш код з моїми коментарями, по перше я нормально відформатував, (зробив відступи) щоб наглядно було видко як іде виконання програми

end;
      reset(b); 
      s:=0; alltax:=0;
      for i:=1 to 5 do //в цому циклі рахуємо загальний фонд зп, зп всіх робітників разом, ок;
        s:=s+gr[i].zp;
      alltax:=alltax+gr[i].pd; //рахуємо податок, але: по перше т.я. воно не в блоці бегін-енд то виконується один раз;
      begin 
        maxtax:=0;
        for i:=1 to 5 do
          if maxtax<gr[i].pd then 
            gr[i].pd:=maxtax; //тут треба навпаки ви присвоюєте структурі значення змінної максТакс, а треба навпаки (maxtax := gr[i].pd)
          for j:=i + 1 to 4 do //навіщо цикл?
            writeln(gr[i].pd,s); //тут виводить рандомно від 4 до 0 разів, або хз скільки однакові стрічки;
      end;

Другий цикл прибрати, блоки бегін-енд поставити на свої місця, вони ніби дужок, але для виконання.
приклад:

for i:=1 to 5 do
begin
  //щось виконується в циклі;
  //щось теж виконується в тому ж циклі;
end;

...

for i:=1 to 5 do
  //щось виконується в циклі;
//щось теж виконується поза циклом;

11 Востаннє редагувалося vasiliyok (09.06.2015 01:12:30)

Re: Записи. Допоможіть з умовою [Вирішено]

Подібно?

 reset(b);
       s:=0; alltax:=0;maxtax:=0;
      for i:=1 to 5 do
      begin 
        alltax:=alltax+gr[i].pd;
          s:=s+gr[i].zp;
          for i:=1 to 5 do
           if maxtax<gr[i].pd then
            maxtax:=gr[i].pd
            end;
Chemist-i написав:

Навіщо у Вас два вкладених циклу? upd - вони не вкладені, соррі.
Ваш код з моїми коментарями, по перше я нормально відформатував, (зробив відступи) щоб наглядно було видко як іде виконання програми

end;
      reset(b); 
      s:=0; alltax:=0;
      for i:=1 to 5 do //в цому циклі рахуємо загальний фонд зп, зп всіх робітників разом, ок;
        s:=s+gr[i].zp;
      alltax:=alltax+gr[i].pd; //рахуємо податок, але: по перше т.я. воно не в блоці бегін-енд то виконується один раз;
      begin 
        maxtax:=0;
        for i:=1 to 5 do
          if maxtax<gr[i].pd then 
            gr[i].pd:=maxtax; //тут треба навпаки ви присвоюєте структурі значення змінної максТакс, а треба навпаки (maxtax := gr[i].pd)
          for j:=i + 1 to 4 do //навіщо цикл?
            writeln(gr[i].pd,s); //тут виводить рандомно від 4 до 0 разів, або хз скільки однакові стрічки;
      end;

Другий цикл прибрати, блоки бегін-енд поставити на свої місця, вони ніби дужок, але для виконання.
приклад:

for i:=1 to 5 do
begin
  //щось виконується в циклі;
  //щось теж виконується в тому ж циклі;
end;

...

for i:=1 to 5 do
  //щось виконується в циклі;
//щось теж виконується поза циклом;

12

Re: Записи. Допоможіть з умовою [Вирішено]

Нащо ви таки зробили вкладені цикли?
Краще так:

 reset(b);
      s:=0; alltax:=0;maxtax:=0;
      for i:=1 to 5 do
      begin 
        alltax:=alltax+gr[i].pd;
        s:=s+gr[i].zp;
      end;
          
      for i:=1 to 5 do
        if maxtax<gr[i].pd then
          maxtax:=gr[i].pd
            

13

Re: Записи. Допоможіть з умовою [Вирішено]

Виправив, і що далі?

Chemist-i написав:

Нащо ви таки зробили вкладені цикли?
Краще так:

 reset(b);
      s:=0; alltax:=0;maxtax:=0;
      for i:=1 to 5 do
      begin 
        alltax:=alltax+gr[i].pd;
        s:=s+gr[i].zp;
      end;
          
      for i:=1 to 5 do
        if maxtax<gr[i].pd then
          maxtax:=gr[i].pd
            

14

Re: Записи. Допоможіть з умовою [Вирішено]

Коли рахуєте maxtax, Вам ще треба зберігати не тільки розмір податку, але і номер працівника (не забувайте про begin-end
ну а далі просто виводьте

gr[i].surname

, замість і - номер працівника, що вирахуєте.

15

Re: Записи. Допоможіть з умовою [Вирішено]

Це знову потрібно ввести будь-яку змінну?

Chemist-i написав:

Коли рахуєте maxtax, Вам ще треба зберігати не тільки розмір податку, але і номер працівника (не забувайте про begin-end
ну а далі просто виводьте

gr[i].surname

, замість і - номер працівника, що вирахуєте.

16

Re: Записи. Допоможіть з умовою [Вирішено]

vasiliyok написав:

Це знову потрібно ввести будь-яку змінну?

Chemist-i написав:

Коли рахуєте maxtax, Вам ще треба зберігати не тільки розмір податку, але і номер працівника (не забувайте про begin-end
ну а далі просто виводьте

gr[i].surname

, замість і - номер працівника, що вирахуєте.

Так.

17

Re: Записи. Допоможіть з умовою [Вирішено]

reset(b);
       s:=0; alltax:=0;maxtax:=0;
      for i:=1 to 5 do
      begin 
        alltax:=alltax+gr[i].pd;
          s:=s+gr[i].zp;
          end;
          k:=0;
          for i:=1 to 5 do
                                                   <===тут потрібен бегін?
           if maxtax<gr[i].pd then
           
            maxtax:=gr[i].pd;
                                                   <=== енд?
            Write (gr[i].surname)

   І як присвоїти змінну людині? все, я здаюсь

18

Re: Записи. Допоможіть з умовою [Вирішено]

vasiliyok написав:
reset(b);
      s:=0; alltax:=0;maxtax:=0;
      for i:=1 to 5 do
      begin 
        alltax:=alltax+gr[i].pd;
        s:=s+gr[i].zp;
      end;
         k:=0;
         for i:=1 to 5 do
                                                   <===тут потрібен бегін? - ні!!
           if maxtax<gr[i].pd then
                                                   <===тут!!!          
            maxtax:=gr[i].pd;
                                                   <=== тут ще дещо, вам треба і зберігти, ну наприклад CurrentUserNumber :=i;
                                                   <=== енд? - так
            Write (gr[i].surname) //це вивід, тут вже замість і ставите той CurrentUserNumber 
Подякували: vasiliyok1

19

Re: Записи. Допоможіть з умовою [Вирішено]

ой дякую,дуже!

20

Re: Записи. Допоможіть з умовою [Вирішено]

vasiliyok написав:

ой дякую,дуже!

Надішліть повний код готової програми. А в першу тему відредагуйте, додавши [вирішено] до назви.