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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2013, 21:33   #1
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание написать функцию Randomize в готовую программу Pascal ABC

добрый вечер, уважаемые программисты. помогите, пожалуйста, дописать программу на языке Pascal ABC.

в массиве хранится информация про зимнию сессию студентов. сведения про каждого студента (максимальное количество студентов - 150) имеют следущие данные:
-фамилия (до 12 символов);
-номер группы (от 1 до 7);
оценки по 3 предметам;
написать программу, которая выводит эту информацию и печатает следущие данные:
-фамилии студентов, которые имеют долги хотя бы с одного предмета;
-процент студентов,которые сдали все экзамены на 5 и 4;
-название предмета, который был сдан лучше всего.


вот моя программа. она работает, но нужно написать программу, чтобы данные про студентов (фамилия, номер группы) вводились через функцию Randomize (генератор случайных чисел, но для фамилии нужно написать Random (букв)).

Код:
program zd_1;
uses crt;
type  oc = record
      fa, chm, ec: integer;
  end;
chel = record
  ngroup: integer;
  fam: string;
  fa, chm, ec: integer;
  oc_ot: oc
  end;
var
 a, s, d, k, n, i, c: integer;
 p:real;
 base: array [1..150] of chel;
begin
      clrscr;
       write('Введіть кількість студентів (до 150): ');
       readln(n);
        for i:=1 to n do
            begin
                 writeln;
                 writeln('Введіть прізвище: ');
                 readln(base[i].fam);
                 writeln('Введіть номер групи: ');
                 readln(base[i].ngroup);
                 writeln('Оцінка по предмету "програмування" : ');
                 readln(base[i].fa);
                 writeln('Оцінка по предмету "економіка" : ');
                 readln(base[i].chm);
                 writeln('Оцінка по предмету "історія" : ');
                 readln(base[i].ec);
           end;
          clrscr;
          writeln('Введіть цифру:');
          writeln('1 - прізвище студентів з заборгованістю.');
          writeln('2 - процент студентів,що здали екзамени на  "4","5".');
          writeln('3 - назва предмета,який був зданий найкращий.');

         writeln('4 - вихід.');
         readln(c);
         case c of
   1: begin
           clrscr;
           writeln('Заборгованість у:');
       for i:=1 to n do
         if base[i].fa<4 then
          writeln(base[i].fa, ' ',base[i].fam);
         if base[i].chm<4 then
          writeln(base[i].chm, ' ',base[i].fam);
         if base[i].ec<4 then
          writeln(base[i].ec, ' ',base[i].fam);
       writeln('<Enter>');
      end;
       2: begin
       clrscr;
       writeln('процент студентів,що здали екзамен  на "4","5":');
       for i:=1 to n do
        begin
             with base[i].oc_ot do
         begin
             k:=0;
         if (fa < 5)and(ec < 5)and (chm < 5) then
             k:=k+1
         else
             k:=k+0;
        end;
        end;
           p:= k/n*100;
           writeln(p);
           writeln('<Enter>');
        end;
        3: begin
       clrscr;
       writeln('Назва предмета,який був зданий найкраще:');
       for i:=1 to n do
        begin
             with base[i].oc_ot do
         begin
             a:=0;
             s:=0;
             d:=0;
         if (fa > ec)and(fa > chm) then
         a:=a+1
         else
         a:=a+0;
            if (ec > fa)and(ec > chm) then
            s:=s+1
            else
            s:=s+0;
               if (chm > ec)and(chm > fa) then
               d:=d+1
               else
               d:=d+0;
         end;
        end;
        if (a>s) and (a>d) then
         writeln('програмування');
        if (s>a)and (s>d) then
         writeln('економіка');
        if (d>a)and (d>s) then
         writeln('історія');
         writeln('<Enter>');
       end;

    4: exit;

  end;
     readln;
end.

заранее, огромное спасибо, за помощь.
программирование вне форума Ответить с цитированием
Старый 15.06.2013, 01:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

фамилии генерить случайным образом?!
Да Вы, как я посмотрю, затейник..

Не пугает, что будет бред?
ну тогда извольте попробовать такую функцию:
Код:
function RandomFam : string;
const
   MaxA1 = 12;
   A1 : array[1..MaxA1] of string =
     ('Аб', 'Ав', 'Ал', 'Ба', 'Бе', 'Бо',  'Ве', 'Ва', 'Во', 'Да', 'Де', 'До' );
   MaxA2 = 18;
   A2 : array[1..MaxA2] of string =
     ('бо', 'ба', 'ва', 'во', 'вя', 'ер', 'чек', 'ен', 'да', 'ни', 'ла', 'мо', 'до', 'ра', 'ре', 'руч', 'рам', 'ро' );
   MaxA3 = 14;
   A3 : array[1..MaxA3] of string =
     ('ко', 'ко','ка', 'ук', 'юк', 'ик', 'ич', 'ин', 'кий', 'кая', 'ный', 'ная', 'ур', 'ер' );
var i, k : integer;
begin
  result := A1[Random(MaxA1)+1];
  k := Random(3); {максимальное количество слогов в фамилии}
  for i:=1 to k+1 do
        result := result + A2[Random(MaxA2)+1];
  {добавим окончание}
  result := result + A3[Random(MaxA3)+1];
  
  {удалим повторяющиеся буквы}
  for i:=Length(result)-1 downto 1 do
    if result[i+1] = result[i] then Delete(result, i , 1);
  
end;
использовать, очевидно, примерно так:
Код:
       clrscr;
       write('Введіть кількість студентів (до 150): ');
       readln(n);
        for i:=1 to n do
            begin
              base[i].fam := RandomFam;
              ......

Последний раз редактировалось Serge_Bliznykov; 15.06.2013 в 01:39.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу на Pascal ABC. (Разветвления) VladimirAvakov Помощь студентам 6 18.03.2013 00:12
Написать программу на Pascal ABC. (Рекурентные последовательности) VladimirAvakov Помощь студентам 4 15.03.2013 11:12
Паскаль ABC. Прошу помочь написать программу. Helen1 Паскаль, Turbo Pascal, PascalABC.NET 12 12.12.2012 21:21
Написать программу на Pascal ABC daniil-640 Помощь студентам 0 31.05.2012 13:50
Pascal ABC.Описать функцию Polynom(A,N,X) вещественного типа, находящую значение полинома P в вещественной точке X. sanjer21 Помощь студентам 0 24.05.2012 00:34