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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2010, 12:24   #1
skalt12
Пользователь
 
Регистрация: 05.07.2009
Сообщений: 87
По умолчанию линейные массивы паскаль проверить

Всем доброго дня)..
Вот вопрос, толи я дурак, толи препод докопаться решил.. накатал одногруппнику задачу, препод посмотрел и заявил "вообще не правильно".. не врублюсь никак.., проверьте, пожалуйста..

задание:

Цитата:
Вычислить K = ((M1+M2+M3))/(3), где M1, M2, M3 - максимальные элементы массивов X(30), Y(15), Z(20)
код:

Код:
program v2n30;
uses crt;
var X: array[1..30] of integer;
     Y: array[1..15] of integer;
     Z: array[1..20] of integer;
     M1,M2,M3,i: integer;
     K: real;

procedure Searching;
begin
   randomize;
   write('X-Array: ');
      writeln;

   for i := 1 to 30 do
      begin
         X[i] := random(20);
         write(X[i],' ');
      end;
   writeln;
      writeln;
   write('Y-Array: ');
      writeln;

   for i := 1 to 15 do
      begin
         Y[i] := random(10);
         write(Y[i],' ');
      end;
   writeln;
      writeln;
   write('Z-Array: ');
      writeln;

   for i := 1 to 20 do
      begin
         Z[i] := random(10);
         write(Y[i],' ');
      end;
   writeln;
      writeln;
   write('Maximum X-Massiva(M1): ');
   M1 := X[1];

   for i := 1 to 30 do
      begin
         if M1 < X[i] then
         M1 := X[i];
      end;
   write(M1);
      writeln;
   write('Maximum Y-Massiva(M2): ');
   M2 := Y[1];

   for i := 1 to 15 do
      begin
         if M2 < Y[i] then
         M2 := Y[i];
      end;
   write(M2);
      writeln;
   write('Maximum Z-Massiva(M3): ');
   M3 := Z[1];

   for i := 1 to 20 do
      begin
         if M3 < Z[i] then
         M3 := Z[i];
      end;
   write(M3);
      writeln;
end;

begin
   clrscr;
   Searching;
   K := (M1+M2+M3)/3;
   write('K= ',K:0:2);
   readkey;
end.
вопрос уже умяли, но мне все равно покоя не дает сия ситуация)

Последний раз редактировалось artemavd; 19.06.2010 в 19:31. Причина: сократил интервал между строчками для более удобного чтения
skalt12 вне форума Ответить с цитированием
Старый 19.06.2010, 12:33   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Лично я бы сделал для формирования матриц одну процедуру, для поиска максимума в матрице другую процедуру... А то, в этой программе почти все выкинуто в отдельную процедуру, в которой, по сути, один и тот код повторяется по три раза...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 19.06.2010, 12:36   #3
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

можно было оставить заполнение массива в основном теле программы и сделать одну процедурку поиска.кода меньше было бы.а так всё верно.но я сижу щас с мобилы.или и заполнение и поиск в процедурах.
にんじゃ

Последний раз редактировалось ROMA2PVT; 19.06.2010 в 12:39.
ROMA2PVT вне форума Ответить с цитированием
Старый 19.06.2010, 12:53   #4
skalt12
Пользователь
 
Регистрация: 05.07.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от Grag Посмотреть сообщение
Лично я бы сделал для формирования матриц одну процедуру, для поиска максимума в матрице другую процедуру... А то, в этой программе почти все выкинуто в отдельную процедуру, в которой, по сути, один и тот код повторяется по три раза...
можно было, но сама программа от этого мало пострадала... вопрос в другом...
skalt12 вне форума Ответить с цитированием
Старый 19.06.2010, 12:53   #5
skalt12
Пользователь
 
Регистрация: 05.07.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от ROMA2PVT Посмотреть сообщение
можно было оставить заполнение массива в основном теле программы и сделать одну процедурку поиска.кода меньше было бы.а так всё верно.но я сижу щас с мобилы.или и заполнение и поиск в процедурах.
верно, да? вот и я думаю, что-то препод гонит..
skalt12 вне форума Ответить с цитированием
Старый 19.06.2010, 17:14   #6
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
write('Z-Array: ');

      writeln;

   for i := 1 to 20 do

      begin

         Z[i] := random(10);

         write(Y[i],' ');

      end;
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 19.06.2010, 19:01   #7
skalt12
Пользователь
 
Регистрация: 05.07.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от ROMA2PVT Посмотреть сообщение
Код:
write('Z-Array: ');

      writeln;

   for i := 1 to 20 do

      begin

         Z[i] := random(10);

         write(Y[i],' ');

      end;
ну это да, вариант без исправленой ошибки)) мы ее заметили до сдачи и исправили) а в своем варианте я не исправлял ничего
skalt12 вне форума Ответить с цитированием
Старый 19.06.2010, 19:21   #8
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

я бы делал как то так:
Код:
uses
  CRT;

type
  mas = array [1..30] of integer;

const
  n = 30;
  c = 15;
  l = 20;

var
  X, Y, Z: mas;
  max, imax, i, max1, max2, max3: integer;
  K: real;

procedure Zapoln(var m: mas; kl: integer);
begin
  randomize;
  writeln;
  for i := 1 to kl do
  begin
    m[i] := random(15) - 5;
    write(m[i], ' ');
  end;
  writeln;
end;


procedure Searching(m: mas; kl: integer; Var rez: integer);
begin
  MAX := m[1];
  imax := 1;
  for i := 1 to kl do
    if m[i] > MAX then
    begin
      MAX := m[i];
      imax := i;
    end;
  writeln('MAX[', imax, ']:=', MAX);
  rez := max;
end;

begin
  clrscr;
  write('X-Array: ');
  Zapoln(X, n);
  write('Y-Array: ');
  Zapoln(Y, c);
  write('Z-Array: ');
  Zapoln(Z, l);
  write('Maximum massiva X: ');
  Searching(X, n, max1);
  write('Maximum massiva Y: ');
  Searching(Y, c, max2);
  write('Maximum massiva Z: ');
  Searching(Z, l, max3);
  K := (max1 + max2 + max3) / 3;
  write('K= ', K:1:3);
  readkey;
end.
(просто для примера)
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 20.06.2010, 18:04   #9
skalt12
Пользователь
 
Регистрация: 05.07.2009
Сообщений: 87
По умолчанию

Цитата:
Сообщение от ROMA2PVT Посмотреть сообщение
я бы делал как то так:
Код:
uses
  CRT;

type
  mas = array [1..30] of integer;

const
  n = 30;
  c = 15;
  l = 20;

var
  X, Y, Z: mas;
  max, imax, i, max1, max2, max3: integer;
  K: real;

procedure Zapoln(var m: mas; kl: integer);
begin
  randomize;
  writeln;
  for i := 1 to kl do
  begin
    m[i] := random(15) - 5;
    write(m[i], ' ');
  end;
  writeln;
end;


procedure Searching(m: mas; kl: integer; Var rez: integer);
begin
  MAX := m[1];
  imax := 1;
  for i := 1 to kl do
    if m[i] > MAX then
    begin
      MAX := m[i];
      imax := i;
    end;
  writeln('MAX[', imax, ']:=', MAX);
  rez := max;
end;

begin
  clrscr;
  write('X-Array: ');
  Zapoln(X, n);
  write('Y-Array: ');
  Zapoln(Y, c);
  write('Z-Array: ');
  Zapoln(Z, l);
  write('Maximum massiva X: ');
  Searching(X, n, max1);
  write('Maximum massiva Y: ');
  Searching(Y, c, max2);
  write('Maximum massiva Z: ');
  Searching(Z, l, max3);
  K := (max1 + max2 + max3) / 3;
  write('K= ', K:1:3);
  readkey;
end.
(просто для примера)
Ну тоже вариант.. коротко и ясно =)
skalt12 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линейные массивы JonnyKnoxville Помощь студентам 9 21.04.2010 21:15
линейные массивы @lenk@ Помощь студентам 3 21.11.2009 22:26
Линейные и Двумерные массивы в C++ Zid@ne Помощь студентам 3 17.05.2009 19:30