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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 22:34   #1
Profan4ik
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 12
Печаль Проверьте решение массива.

Ввести массив G6, с помощью под программы(умножение матрицы на скаляр) оформировать G6*S=G6*1.5(S=1.5). С помощью под программы(Вычисление минимального по модулю элемента матрицы) найти минимальный по абсолютной величине элемент массива G6*S. Вычислить среднее арифметическое элементов массива G6, меньших чем GSmin.
Идеи такие. Требуют создать массив из 6 элементов используя функцию при нахождении GSmin и процедуру при вычеслении средне арифметического элементов массива G6 < GSmin.
Это все в паскале.

Procedure multiple (scaler : real; var{"var" ставится в случае если надо переменную как-то изменить} Massive : mas {"mas" заранее созданный тип - обязательно(наверно)});
Var i : integer; {локальная переменная}
Begin
For i := 1 to n do
Massive [i] := Massive[i] * scaler;
end;
или:
Function Multipler (Scaler : real; Massive : mas) : mas {тип возвращаемой переменной-в данном случае массив Mas};
Var i : integer;
Begin
For i := 1 to n do
Multipler [i] := Massive [i] * scaler;
End;
На счет работоспособности функции гарантии нет (только теоретически).
2."С помощью под программы(Вычисление минимального по модулю элемента матрицы) найти минимальный по абсолютной величине элемент массива G6*S." здесь я бы использовал функцию.
Function minimal (massive : mas) : real;
Var min : real;
i : real;
Begin
min := massive [1];
For i := 2 to n do
If massive [i] < min then min := massive [i];
Mininmal := min;
end;

Использование процедуры : <имя процедуры и параметры>;
Использование функции: <имя переменной> := <имя функции и параметры>;

Проблема собственно в том, что мне не собрать это всё в одну программу рабочую.. Уже головой бьюсь, и толку 0. Кто мне может всё это как нибудь собрать в программу, а то слишком туп для этого

Последний раз редактировалось Profan4ik; 07.06.2010 в 23:21.
Profan4ik вне форума Ответить с цитированием
Старый 07.06.2010, 23:22   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
uses
  CRT;
Type
  mas=array [1..100,1..100] of integer;
var
  a:mas;
  b:mas;
  i,j,n,m,imin,jmin,min,sum,k,kol:integer;
  sr:real;

Procedure proizv(Var kl2:mas; kl:mas);
begin
  writeln('Массив после умножения: ');
      for i := 1 to n do
       begin
         for j:=1 to m do
           begin
              kl2[i,j]:=round(kl[i,j]*1.5);
              write(kl2[i,j]:3,'  ');
           end;
           writeln;
       end;
end;

procedure ABSMinEl(Var kl:mas);
begin
imin:=1;
  jmin:=1;
  min:=kl[1,1];
  for i:=1 to n do
      for j:=1 to m do
        if abs(kl[i,j])<abs(min) then
              begin
                 min:=kl[i,j];
                 imin:=i;
                 jmin:=j;
              end;
              writeln;
               writeln('MIN[',imin,';',jmin,']:=',min,' ');
               end;

procedure proizv(Var kl:mas);
begin
sum:=0;
kol:=0;
  for i:=1 to n do
    for j:=1 to m do
      if kl[i,j]<min then
          begin
            sum:=sum+kl[i,j];
            inc(kol);
          end;
          if kol<>0 then
          begin
          sr:=sum/kol;
          writeln('среднее арифметическое элементов массива G6, меньших чем GSmin:=',sr:1:3)
 end
 else writeln('В массиве нет елементов меньше!!!');
 end;
 
begin
Clrscr;
Randomize;
write('Введите количество строк: ');
 readln(n);
   write('Введите количество столбцов: ');
     readln(m);
 writeln('Исходная матрица: ');
  for i := 1 to n do
    begin
     for j:=1 to m do
       begin
          a[i,j]:=Random(12)-2;
          write(a[i,j]:2,'  ');
       end;
       writeln;
    end;
writeln;
  proizv(b,a);
writeln;
 ABSMinEl(b);
writeln;
proizv(a);
readkey;
end.
Вроди не ошибся нигде.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 08.06.2010, 00:46   #3
Profan4ik
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 12
По умолчанию

Ок щас протестим.
Profan4ik вне форума Ответить с цитированием
Старый 08.06.2010, 18:01   #4
Profan4ik
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 12
По умолчанию

Всё работает прекрасно. вот только есть одно замечание.
Если в матрицу забивать 1 строку, как по заданию дано, то он и находит 1 самый маленький элемент. при квадратной матрице вообще виснет
Если например взять матрицу 3 строки 6 слтолбцов, то он найдет 1 наименьший элемент, с его позицией, например [2,5], а таких элементов там будет еще несколько. но благо у меня строка одна
Так что за прогу спасибо.
Profan4ik вне форума Ответить с цитированием
Старый 08.06.2010, 18:03   #5
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Цитата:
Если в матрицу забивать 1 строку
Матрица в одну строку?
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 08.06.2010, 18:42   #6
Profan4ik
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от ROMA2PVT Посмотреть сообщение
Матрица в одну строку?
А что не так??
1 строка и n столбцов, чем не матрица ?? Либо же одномерный массив.
Profan4ik вне форума Ответить с цитированием
Старый 08.06.2010, 18:47   #7
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Цитата:
Либо же одномерный массив.
Матрица это матрица.А одномерный массив это одномерный массив.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 08.06.2010, 18:55   #8
Profan4ik
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 12
По умолчанию

Матрица не массив??? разве есть отличия??
Матрица не бывает в 1 строку???
Profan4ik вне форума Ответить с цитированием
Старый 08.06.2010, 19:02   #9
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

в самом первом посту(твоём) у тебя одномерный массив но не матрица фигурирует.
А матрица в одну строку или столбец есть.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 08.06.2010, 19:11   #10
Profan4ik
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 12
По умолчанию

)))) Просто как сложилось у меня впечатление, матрица и массив различия не имеют. Да мне нужен массив, не спорю.
Еще вопрос, почему то он пишет

Считает среднеарифметическое и нормально выводит(раз на раз не приходится) всё при 1 строке и 6 столбца и изменениях в программе
Код:
mas=array [1..6,0..1] of integer;

Последний раз редактировалось Profan4ik; 08.06.2010 в 20:04.
Profan4ik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на работу с элементами массива и с компонентами массива Full Juice Помощь студентам 24 30.12.2009 13:33
Basic.проверьте,пожалуйста,решение DeathLisenok Помощь студентам 1 10.12.2009 20:45
PHP: использование элемента массива как массива Sudia Помощь студентам 1 20.02.2009 20:48
проверьте моё решение sverhuVniz Паскаль, Turbo Pascal, PascalABC.NET 4 25.10.2008 09:26
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44