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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2013, 19:19   #1
Катя100
Пользователь
 
Регистрация: 21.04.2013
Сообщений: 14
По умолчанию Посчитать зарплату

Помогите посчитать среднюю зарплату мужчин и женщин,можно ли это сделать без массива?
Код:
program my;
uses crt;
type baza=record
     fam:string[40];
     god:word;
     pol:char;
     zarp:word;
end;
var  f:file of baza;
     punkt:integer;
     m:integer;
procedure vvod;
var
    bd:baza;
begin
  rewrite(f);
  repeat
  begin
   write('Vvedite familia I.O.  ');
   readln(bd.fam);
   write('Vvedite pol(m/w) ');
   readln(bd.pol);
   write('Vvedite god postyplenia na raboty  ');
   readln(bd.god);
   write('Vvedite zarplaty  ');
   readln(bd.zarp);
   write(f,bd);
   writeln('Prodolgit?Da-1,Net-0');
   readln(m);
   end;
  until m=0;
  close(f);
  end;
procedure prosmotr;
var bd:baza;
sum1,sum2,kol1,kol2:integer;
 
begin
clrscr;
reset(f);
writeln('------------------------------------------------------------------');
writeln('| Familia I.O.  | Pol   | Gog postyplenia na paboty  |   Zarplata|');
writeln('------------------------------------------------------------------');
while not eof(f) do
begin
    read(f,bd);
{writeln('|',bd.fam,'            |    ',bd.pol,'  |               ',bd.god,'           |', bd.zarplata, '         |');      }
write('|', bd.fam:15,'|');
write('|', bd.pol:5, '|');
write('|', bd.god:10, '|');
writeln('|', bd.zarp:6, '|');
    writeln('-----------------------------------------------------------------------------');
    if bd.pol='w' then
   begin
    sum1:=sum1+bd.zarp;
    kol1:=kol1+1;
  end;
  if bd.pol='m' then
  begin
   sum2:=sum2+bd.zarp;
   kol2:=kol2+1;
  end;
  if kol1=0 then
          writeln('Net women')
  else writeln('Srednya zarplata women=',sum1/kol1);
  if kol2=0 then
          writeln('Net men')
  else writeln('Srednya zarplata men=',sum2/kol2);
end;
close(f);
readln;
end;
procedure Poisk;
var stag:integer;
    bd:baza;
    dt:word;
begin
    clrscr;
    reset(f);
    write('Vvedite daty postyplenia na rabory:');
    readln(dt);
    write('--------------------------------------------------------------------------------');
    writeln('|Familia I.O.| Pol| Gog postyplenia na paboty| Zarplata|');
    write('--------------------------------------------------------------------------------');
    while not eof(f) do
    begin
     read(f,bd);
     if bd.god= dt then
     begin
      write('|', bd.fam:6, '|');
      write('|', bd.pol:2, '|');
      write('|', bd.god:9, '|');
      writeln('|', bd.zarp:10, '|');
      write('--------------------------------------------------------------------------------') ;
      stag:=2013-dt;
      writeln('Stash=',stag);
      end
       else
       begin
       writeln('Net takoi daty postyplenia!!!');
     end;
end;
close(f);
readln;
end;
begin
  repeat
  clrscr;
  assign(f,'abc2.txt');
writeln('                                  MENU                      ');
writeln('1:Vvod');
writeln('2:Prosmotr');
writeln('3:Poisk');
writeln('4:Exit');
readln(punkt);
case punkt of
     1:Vvod;
     2:Prosmotr;
     3:Poisk;
     4:Exit
   end;
until punkt=4;
 writeln('Programa zakonchina');
readln;
end.

Последний раз редактировалось Stilet; 17.05.2013 в 07:57.
Катя100 вне форума Ответить с цитированием
Старый 16.05.2013, 19:49   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А сколько мужчин и женщин?

В принципе, можно посчитать и без массива - но очень муторно. И тем муторнее, чем больше охватываемый контингент.

Но если зарплата лежит в файле, то достаточно просто и без массива.
s-andriano вне форума Ответить с цитированием
Старый 16.05.2013, 19:53   #3
Катя100
Пользователь
 
Регистрация: 21.04.2013
Сообщений: 14
По умолчанию

А вот в том дело,что неизвестно точное количество..

А вот в том дело,что неизвестно точное количество..

Последний раз редактировалось Stilet; 17.05.2013 в 08:01.
Катя100 вне форума Ответить с цитированием
Старый 16.05.2013, 19:56   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
можно ли это сделать без массива?
А где он у Вас тута ?
Цитата:
Но если зарплата лежит в файле, то достаточно просто и без массива.
Там она и лежит.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 16.05.2013, 20:05   #5
Катя100
Пользователь
 
Регистрация: 21.04.2013
Сообщений: 14
По умолчанию

Я просто знаю как делать через массив,но это тогда надо все переделывать..может подскажите как по-другому?
Катя100 вне форума Ответить с цитированием
Старый 16.05.2013, 20:29   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вы расскажите поподробнее, какая информация у Вас есть, в каком она виде, и что нужно получить на выходе и в каком виде.
s-andriano вне форума Ответить с цитированием
Старый 16.05.2013, 20:30   #7
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Читать по одной записи из файла и считать точно так же, как и "через массив".
Son Of Pain вне форума Ответить с цитированием
Старый 16.05.2013, 21:54   #8
Катя100
Пользователь
 
Регистрация: 21.04.2013
Сообщений: 14
По умолчанию

Он должен считать из строки,а потом взять переменную zarp и при
помощи val переместить в число,а потом он только должен считать..
Катя100 вне форума Ответить с цитированием
Старый 16.05.2013, 22:14   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
помощи val переместить в число
Вчесть чего? У Вас же zarp типа Word.
Примерно так :
Код:
PayOfMen := 0;
CountOfMen := 0;

PayOfWomen := 0;
CountOfWomen := 0;


while not EoF(f) do begin
        ReadLn (t); // t : Baza
        
        if t.pol = 'м' then begin
                Inc (CountOfMen);
                Inc (PayOfMen, t.zarp)
        end
        else begin
                Inc (CountOfWomen);
                Inc (PayOfWomen, t.zarp)
        end
end;

WriteLn ('The average male salary is ', PayOfMen / CountOfMen : 0 : 4);
WriteLn ('The average female salary is ', PayOfWomen / CountOfWomen : 0 : 4)
Poma][a вне форума Ответить с цитированием
Старый 16.05.2013, 22:44   #10
Катя100
Пользователь
 
Регистрация: 21.04.2013
Сообщений: 14
По умолчанию

Я делаю так,а она у меня когда 2 пункт нажимаю вылетает..
Катя100 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать среднюю зарплату мужчин и женщин Катя100 Паскаль, Turbo Pascal, PascalABC.NET 1 04.05.2013 11:40
путём формул начислять зарплату ALEKS2008 Microsoft Office Excel 4 17.07.2011 19:49
Зарплату не могу получить Urpey Свободное общение 12 26.06.2010 15:30
программа, которая расчитывает зарплату. MyQwErTy Помощь студентам 10 06.04.2009 16:22
Срезать зарплату пропорционально ZORRO2005 Microsoft Office Excel 4 06.11.2008 00:12