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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2012, 16:27   #1
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию Цикл в программе

Ввод записей на работников с клавиатуры.Вывод список работников самого большого отдела(большой отдел-содержится наибольший список работников).
1)Помогите зациклить программу а то у меня бардак.
2)Подскажите как дописать программу чтобы её можно было выполнять не только на 10 работников как у меня,а на любое количество работников
Drago56 вне форума Ответить с цитированием
Старый 24.11.2012, 16:28   #2
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию

Код:
Program QQQ;
Uses CRT;
Const n=10;
Type Rabotnik=record
     F:string;
     Vozr:byte;
     Adres:string;
     NazvOd:String;
end;

Type Rabotnik2=record
     F:string;
     Vozr:byte;
     Adres:string;
     NazvOd:String;
end;

Var mas:array[1..10] of Rabotnik;
    mas2:array[1..10] of Rabotnik2;
   ind, c10,c9,c8,c7,c6,c5,c4,c3,c2,c1,j,max,i:byte;

BEGIN
{Тут я ввожу с клавиатуры 10 записей на работников}
ind:=0;
Writeln('Zapolnite iformaciu o Rabotnik');
For i:=1 to n do begin
    Writeln('Rabotnik ',i);
    Write('Vvedite F: ');readln(mas[i].F);
    Write('Vvedite Vozr: ');readln(mas[i].Vozr);
    Write('Vvedite Adres: ');readln(mas[i].Adres);
    Write('Vvedite NazvOd: ');readln(mas[i].NazvOd);
    end;
    {Тут я начинаю проверять если есть схожые отделы то наращиваю переменыую для того тчобы в дальнейшем
     узнать в каком отделе находиться большое количество работников и записываю
     фамилии этих работников отного отдела в отдельный массив}
  For i:=1 to n do
  if mas[1].NazvOd=mas[i].NazvOd then
      begin
          inc(c1);
          mas2[1].f:=mas2[1].f+mas[i].f;
      end;

   For i:=1 to n do
   if mas[2].NazvOd=mas[i].NazvOd then
      begin
          inc(c2);
          mas2[2].f:=mas2[2].f+mas[i].f;
      end;
  
   For i:=1 to n do
   if mas[3].NazvOd=mas[i].NazvOd then
      begin
          inc(c3);
          mas2[3].f:=mas2[3].f+mas[i].f;
      end;
  
   For i:=1 to n do
   if mas[4].NazvOd=mas[i].NazvOd then
      begin
          inc(c4);
          mas2[4].f:=mas2[4].f+mas[i].f;
      end;
  
   For i:=1 to n do
   if mas[5].NazvOd=mas[i].NazvOd then
      begin
          inc(c5);
          mas2[5].f:=mas2[5].f+mas[i].f;
      end;
  
   For i:=1 to n do
   if mas[6].NazvOd=mas[i].NazvOd then
      begin
          inc(c6);
          mas2[6].f:=mas2[6].f+mas[i].f;
      end;
  
   For i:=1 to n do
   if mas[7].NazvOd=mas[i].NazvOd then
      begin
          inc(c7);
          mas2[7].f:=mas2[7].f+mas[i].f;
      end;
  
   For i:=1 to n do
   if mas[8].NazvOd=mas[i].NazvOd then
      begin
          inc(c8);
          mas2[8].f:=mas2[8].f+mas[i].f;
      end;
  
   For i:=1 to n do
   if mas[9].NazvOd=mas[i].NazvOd then
      begin
          inc(c9);
          mas2[9].f:=mas2[9].f+mas[i].f;
      end;
  
   For i:=1 to n do
   if mas[10].NazvOd=mas[i].NazvOd then
      begin
          inc(c10);
          mas2[10].f:=mas2[10].f+mas[i].f;
      end;
Drago56 вне форума Ответить с цитированием
Старый 24.11.2012, 16:28   #3
Drago56
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 91
По умолчанию

Код:
 {Тут я проверяюв каком отделе находиться большое количество работников и присваиваю переменной индекс этого отдела для дальнейшего вывода}
if (c1>=c2)and(c1>=c3)and(c1>=c4)and(c1>=c5)and(c1>=c6)and(c1>=c7)and(c1>=c8)and(c1>=c9)and(c1>=c10) then ind:=1
else if (c2>=c1)and(c2>=c3)and(c2>=c4)and(c2>=c5)and(c2>=c6)and(c2>=c7)and(c2>=c8)and(c2>=c9)and(c2>=c10) then ind:=2
else if (c3>=c1)and(c3>=c2)and(c3>=c4)and(c3>=c5)and(c3>=c6)and(c3>=c7)and(c3>=c8)and(c3>=c9)and(c3>=c10) then ind:=3
else if (c4>=c2)and(c4>=c3)and(c4>=c1)and(c4>=c5)and(c4>=c6)and(c4>=c7)and(c4>=c8)and(c4>=c9)and(c4>=c10) then ind:=4
else if (c5>=c2)and(c5>=c3)and(c5>=c4)and(c5>=c1)and(c5>=c6)and(c5>=c7)and(c5>=c8)and(c5>=c9)and(c5>=c10) then ind:=5
else if (c6>=c2)and(c6>=c3)and(c6>=c4)and(c6>=c5)and(c6>=c1)and(c6>=c7)and(c6>=c8)and(c6>=c9)and(c6>=c10) then ind:=6
else if (c7>=c2)and(c7>=c3)and(c7>=c4)and(c7>=c5)and(c7>=c1)and(c7>=c1)and(c7>=c8)and(c7>=c9)and(c7>=c10) then ind:=7
else if (c8>=c2)and(c8>=c3)and(c8>=c4)and(c8>=c5)and(c8>=c1)and(c8>=c7)and(c8>=c1)and(c8>=c9)and(c8>=c10) then ind:=8
else if (c9>=c2)and(c9>=c3)and(c9>=c4)and(c9>=c5)and(c9>=c1)and(c9>=c7)and(c9>=c8)and(c9>=c1)and(c9>=c10) then ind:=9
else if (c10>=c2)and(c10>=c3)and(c10>=c4)and(c10>=c5)and(c10>=c6)and(c10>=c7)and(c10>=c8)and(c10>=c9)and(c10>=c1) then ind:=10;
  {Тут я проверяю если в отделе равное количетсво работников то в дальнейшем вывожу сообщшение об этом}
if (c1=c2)and(c1=c3)and(c1=c4)and(c1=c5)and(c1=c6)and(c1=c7)and(c1=c8)and(c1=c9)and(c1=c10) then ind:=0
else if (c2=c1)and(c2=c3)and(c2=c4)and(c2=c5)and(c2=c6)and(c2=c7)and(c2=c8)and(c2=c9)and(c2=c10) then ind:=0
else if (c3=c1)and(c3=c2)and(c3=c4)and(c3=c5)and(c3=c6)and(c3=c7)and(c3=c8)and(c3=c9)and(c3=c10) then ind:=0
else if (c4=c2)and(c4=c3)and(c4=c1)and(c4=c5)and(c4=c6)and(c4=c7)and(c4=c8)and(c4=c9)and(c4=c10) then ind:=0
else if (c5=c2)and(c5=c3)and(c5=c4)and(c5=c1)and(c5=c6)and(c5=c7)and(c5=c8)and(c5=c9)and(c5=c10) then ind:=0
else if (c6=c2)and(c6=c3)and(c6=c4)and(c6=c5)and(c6=c1)and(c6=c7)and(c6=c8)and(c6=c9)and(c6=c10) then ind:=0
else if (c7=c2)and(c7=c3)and(c7=c4)and(c7=c5)and(c7=c1)and(c7=c1)and(c7=c8)and(c7=c9)and(c7=c10) then ind:=0
else if (c8=c2)and(c8=c3)and(c8=c4)and(c8=c5)and(c8=c1)and(c8=c7)and(c8=c1)and(c8=c9)and(c8=c10) then ind:=0
else if (c9=c2)and(c9=c3)and(c9=c4)and(c9=c5)and(c9=c1)and(c9=c7)and(c9=c8)and(c9=c1)and(c9=c10) then ind:=0
else if (c10=c2)and(c10=c3)and(c10=c4)and(c10=c5)and(c10=c6)and(c10=c7)and(c10=c8)and(c10=c9)and(c10=c1) then ind:=0;
 {Если равное колтчество работников в отделах то
 вывод посказки,иначе вывожу список фамиий работнико самого большого отдела}
if ind=0 then writeln('все отделы равны') else
begin
writeln('------------------------------------------------------------');
writeln(mas[ind].NazvOd);
writeln(mas2[ind].f);
end;
END.
Drago56 вне форума Ответить с цитированием
Старый 24.11.2012, 21:04   #4
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Цитата:
Сообщение от Drago56 Посмотреть сообщение
1)Помогите зациклить программу а то у меня бардак.
Вам точно нужно, чтобы она зациклилась?
Тогда так
Код:
var arr: array of (хз какой тип);
begin
setlength(arr,0);
    while length(arr)-1<Length(arr) do
           begin
               setlength(arr,length(arr)+1);
               readln(arr[length(arr)-1]);// Вводите работников
           end;
end.
a.k.a. Angelicos Phosphoros
Мой сайт

Последний раз редактировалось New man; 24.11.2012 в 21:07.
New man вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка файла, какой цикл лучше пустить в программе?! Lays Microsoft Office Excel 1 16.11.2010 17:46
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34