Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Написание программы через процедуры и функции (http://www.tehnari.ru/f41/t92546/)

Тетрадь 24.11.2013 11:42

Написание программы через процедуры и функции
 
Помогите написать данную программу с помощью подпрограмм
Код:

program pro1;
const n = 100;
type
  girl = record
    id : byte;
    pts : integer;
  end;
var
  a : array[1..n] of girl;
  i, j : byte;
  m : girl;
begin
  writeln('Участницы:');
  randomize;
  for i := 1 to n do
  begin
    a[i].id := i;
    a[i].pts := 1000 + random(1000);
    writeln((a[i].id):4, a[i].pts:6)
  end;
  for i := 1 to n do
    for j := n downto i do
      if a[i].pts >= a[j].pts then
      begin
        m := a[i];
        a[i] := a[j];
        a[j] := m
      end;
  writeln('финалистки:');
  for i := 1 to 10 do
    writeln((a[i].id):4, a[i].pts:6)
end.

Паскаль

Тетрадь 24.11.2013 12:02

Паскаль ABC. Подпрограммы должны быть с параметрами. Надеюсь на вашу помощь

Vladimir_S 24.11.2013 14:19

Цитата:

Сообщение от Тетрадь (Сообщение 972934)
Паскаль ABC. Подпрограммы должны быть с параметрами. Надеюсь на вашу помощь

Поскольку Вы не написали, что именно требуется засунуть в подпрограммы, я это сделал по своему усмотрению, введя процедуру упорядочения массива записей по полю pts примененным Вами методом сортировки выбором. Между прочим, похоже, у Вас ошибка: вместо того, чтобы упорядочить массив по убыванию, Вы упорядочили его по возрастанию, в результате чего финалистками у Вас оказались девушки, набравшие наименьшее число этих самых pts. Или так и задумано? Но я в программе знак неравенства изменил на противоположный.
Код:

program pro1;
const n = 100;
type
  girl = record
    id : byte;
    pts : integer;
  end;
  mas=array[1..n] of girl;
var
  a : mas;
  i : byte;

Procedure Order(G_in:mas; var G_out:mas);
var
 G:mas;
 m:girl;
 q,p:byte;
begin
  G:=G_in;
  for q := 1 to n-1 do
    for p := n downto q do
      if G[q].pts < G[p].pts then
      begin
        m := G[q];
        G[q] := G[p];
        G[p] := m
      end;
  G_out:=G;
end;

begin
  writeln('Участницы:');
  randomize;
  for i := 1 to n do
  begin
    a[i].id := i;
    a[i].pts := 1000 + random(1000);
    writeln((a[i].id):4, a[i].pts:6)
  end;
  Order(a,a);
  writeln('финалистки:');
  for i := 1 to 10 do
    writeln((a[i].id):4, a[i].pts:6)
end.


Тетрадь 24.11.2013 14:35

В конкурсе «Мисс Очаровашка» участвуют 100 девушек. Известен балл, набранный каждой девушкой в ходе первого тура конкурса. Определить десять девушек вышедших во второй тур конкурса. Вот такая задача

Vladimir_S 24.11.2013 14:44

Цитата:

Сообщение от Тетрадь (Сообщение 972975)
В конкурсе «Мисс Очаровашка» участвуют 100 девушек. Известен балл, набранный каждой девушкой в ходе первого тура конкурса. Определить десять девушек вышедших во второй тур конкурса. Вот такая задача

Ну правильно, я так и понял, и так моя программа и работает. А Ваша отбирает 10 девушек, набравших наинизшее количество баллов.
С этим ясно, а в остальном - устраивает? Или еще подпрограммы нужны?

Тетрадь 24.11.2013 15:06

Да, спасибо


Часовой пояс GMT +4, время: 06:46.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.