Вывод множества из файла на экран - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

В студенческой группе 30 человек. 15 из них знают английский, 10 знают немецкий, 7 знают французский. 30 фамилий записаны в текстовом файле. Программа должна сама выбрать 15 фамилий владеющих английским, 10 немецким, 7 французским и вывести фамилии на экран. Выбор происходит рандомом. Проблема: Не понимаю как сделать так, чтобы прога сама выбирала 15, 10 и 7 фамилий соответственно. Помогите, второй день мучаюсь, стыдно даже как то!

Решение задачи: «Вывод множества из файла на экран»

textual
Листинг программы
  1. var a:array[1..30] of byte;
  2.     f:text;
  3.     b,n1,n2,n3,i:byte;
  4.     s1,s2,s3:array[1..15] of string;
  5.     st:string;
  6.     m,m1,m2,m3:set of byte;
  7. begin
  8. randomize;
  9. m:=[]; //пустое общее множество
  10. m1:=[]; //пустое множество номеров англичан
  11. for i:=1 to 15 do //генерируем 15 номеров
  12.  begin
  13.   repeat
  14.   b:=1+random(30); //от 1 до 30
  15.   until not(b in m);//пока не выпдет такое которого пока нет в множестве
  16.   m:=m+[b]; //добавим его в обшее
  17.   m1:=m1+[b];//и в первое
  18.  end;
  19. m2:=[]; //точно так же с несмцами
  20. for i:=1 to 10 do
  21.  begin
  22.   repeat
  23.   b:=1+random(30);
  24.   until not(b in m);
  25.   m:=m+[b];
  26.   m2:=m2+[b];
  27.  end;
  28. m3:=[]; //французы
  29. for i:=1 to 5 do  //выбираем 5 оставщихся номеров, сейчас осенило что можно было просто
  30.  begin           //m3:=[1..30]-m1-m2; хочешь переделай, а я спать
  31.   repeat
  32.   b:=1+random(30);
  33.   until not(b in m);
  34.   m:=m+[b];
  35.   m3:=m3+[b];
  36.  end;
  37. for i:=1 to 2 do  //еще 2 таких которых нет в множестве 3
  38.  begin
  39.   repeat
  40.   b:=1+random(30);
  41.   until not(b in m3);
  42.   m3:=m3+[b];
  43.  end;
  44. {writeln('Множество 3 '); //Это убери, я для проверки делал
  45. for i:=1 to 30 do
  46. if i in m3 then write(i,' ');
  47. writeln; }
  48. assign(f,'fam.txt'); //начинаем работ с файлом
  49. reset(f);
  50. n1:=0;  //мощности масивов-множеств
  51. n2:=0;
  52. n3:=0;
  53. i:=0;  //номера
  54. while not eof(f) do
  55.  begin
  56.   readln(f,st); //читаем фамилию
  57.   i:=i+1; //определяем номер
  58.   if i in m1 then //если он в  иножестве
  59.    begin
  60.     n1:=n1+1; //к англичанам
  61.     s1[n1]:=st;
  62.    end
  63.   else if i in m2 then //если во 2
  64.    begin
  65.     n2:=n2+1;
  66.     s2[n2]:=st; //к немцам
  67.    end;
  68.    //если в 3 или в 3 и 1 или в 3 и 2
  69.   if (i in m3)or((i in m3)and(i in m1))or((i in m3)and(i in m2)) then
  70.    begin
  71.     n3:=n3+1;
  72.     s3[n3]:=st;//к французам
  73.    end;
  74.  end;
  75. close(f);
  76. writeln('Знают английский');
  77. for i:=1 to n1 do
  78. write(s1[i],' ');
  79. writeln;
  80. writeln('Знают немецкий');
  81. for i:=1 to n2 do
  82. write(s2[i],' ');
  83. writeln;
  84. writeln('Знают французский');
  85. for i:=1 to n3 do
  86. write(s3[i],' ');
  87. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы