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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2011, 16:36   #1
2mbler
 
Регистрация: 22.11.2011
Сообщений: 7
По умолчанию Паскаль. Двумерные массивы с сортировкой.

Дана матрица mxn. Найти среднее арифметическое каждой строки и поменять его с минимальным значением каждой строки с указанием индексов. Создать новый одномерный массив состоящий из средних арифметических каждой строки и отсортированный по возрастанию.

Пытался сделать сам, не получилось(

Последний раз редактировалось 2mbler; 23.11.2011 в 07:33.
2mbler вне форума Ответить с цитированием
Старый 22.11.2011, 17:14   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

и что? незнаете, что такое среднее арифметическое? или как искать минимум в массиве?
p51x вне форума Ответить с цитированием
Старый 22.11.2011, 17:20   #3
2mbler
 
Регистрация: 22.11.2011
Сообщений: 7
По умолчанию

среднее арифметическое я найти могу, но не могу создать одномерный массив из них и отсортировать его, постоянно ошибку выталкивает. минимум могу найти, но только если во всём массиве, а не построчно. плюс не знаю как заменить среднее арифметическое с минимальным значением в каждой строке с указанием индексов(
2mbler вне форума Ответить с цитированием
Старый 22.11.2011, 17:28   #4
2mbler
 
Регистрация: 22.11.2011
Сообщений: 7
По умолчанию

Код:
program matrix;
uses crt;
var a:array [1..10, 1..10] of integer;
s:array [1..10] of integer;
i,j,r,k,d,b,c,min,t:integer;
begin
clrscr;
write('Введите количество строк'); read(n);
write('Введите количество столбцов'); readln(m)
writeln ('Введите матрицу:');
for i:=1 to n do
for j:=1 to m do 
     begin
     gotoxy (j*5+10,i+5);
     readln (a[i,j]); 
     end;
for i:=1 to n do 
     begin
     for j:=1 to m do 
     begin
     k:=k+a[i,j];
     end;
     c:=k div n;
     min:=c;
     s[i]:=c;
     k:=0;

{if s[i]<s[i+1] then begin
t:=s[i];
s[i]:=s[i+1];
s[i+1]:=t;}

gotoxy (i*1, j*4+20);
writeln (s[i]:5:0);
end;

{ end;}

for i:=1 to n do
for j:=1 to m do begin
if min=a[i,j] then b:=i;
if min=a[i,j] then d:=j;

{writeln ('Koordinaty', i,'-go minimuma', b, d);}

end;
readkey;

end.

Последний раз редактировалось 2mbler; 22.11.2011 в 17:31.
2mbler вне форума Ответить с цитированием
Старый 23.11.2011, 16:05   #5
2mbler
 
Регистрация: 22.11.2011
Сообщений: 7
По умолчанию

Если не открывать фигурные скобки, то программа только считает в каждой строчке среднее арифметическое.
если добавить минимум и открыть последнюю строчку с фигурными скобками, то скорей всего будут выводиться координаты минимума
2mbler вне форума Ответить с цитированием
Старый 23.11.2011, 16:05   #6
2mbler
 
Регистрация: 22.11.2011
Сообщений: 7
По умолчанию

ну не понимаю я как это сделать
2mbler вне форума Ответить с цитированием
Старый 23.11.2011, 17:03   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) Вы выложили какой-то промежуточный вариант.
он даже не компилируется (т.к. нет, например, переменных n и m

2) среднее вы находите неправильно. Делить нужно на число столбцов, а не число строк.

3) почему не сделать массив со средними значениями вещественным? (ведь логично, что среднее значение в строке может получится не целым!)

4) что собственно Вы не понимаете, как сделать?!
Цитата:
айти среднее арифметическое каждой строки и поменять его с минимальным значением каждой строки
эту фразу я лично расцениваю так - найти среднее арифметическое значение элементов строки и ЗАПИСАТЬ ЕГО ВМЕСТО миниального значения в данной строке...




а вот примерное решение (как я его вижу...):
Код:
program matrix;
uses crt;
var a : array [1..10, 1..10] of integer;
    s : array [1..10] of real;
    t : real;
    n,m : integer;
    i,j,k,MinIndex : integer;
begin
clrscr;
write('Введите количество строк'); read(n);
write('Введите количество столбцов'); readln(m);
writeln ('Введите матрицу:');

{ввод матрицы}
for i:=1 to n do
for j:=1 to m do 
     begin
       //////////// ТУТ ВВОД МАТРИЦЫ ЛЮБЫМ СПОСОБОМ /////////////////
     end;

{вывод матрицы на экран}
WriteLn('исходная матрица:');
for i:=1 to n do begin
  for j:=1 to m do Write(a[i,j]:4,' ');
  WriteLn;
end;

{найти средние и минимальные значения по каждой строке}
  for i:=1 to n do
  begin
    k := 0;
    MinIndex := 1;
    for j:=1 to m do 
      begin
        k:=k+a[i,j];
        if a[i,j]<a[i,MinIndex] then MinIndex := j;
      end;

    {среднее значение строки сохраняем в массив S}
    s[i] := k / m;

    {выдадим среднее значение строки, минимальное значение строки и индекс минимального значения}
    WriteLn(i,'-я строка. Сред.ариф.строки =',s[i]:5:3, 
        ' минимальное значение = ',a[i,MinIndex],' индекс ',MinIndex);
    
    {записываем среднее значение на место минимального}
    a[i,MinIndex] := Trunc(Round(s[i]));
   end;


  {сортировка массива средних значений s}
  {сортировка массива методом простых обменов ("пузырька") }
  for i:=1 to n-1 do
    for j:=i+1 to n do
      if s[i] > s[j] then begin
        t := s[i];
        s[i] := s[j];
        s[j] := t;
      end;

  {вывести отсортированный массив средних значений}
  WriteLn('Отсортированный массив:');
  for i:=1 to n do
    Write(s[i]:5:3,'  ');
  WriteLn;


readkey;

end.

Последний раз редактировалось Serge_Bliznykov; 23.11.2011 в 17:30.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.11.2011, 07:34   #8
2mbler
 
Регистрация: 22.11.2011
Сообщений: 7
По умолчанию

Извините, за неясность. Благодарю за решение задачи)
2mbler вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Двумерные массивы с сортировкой. 2mbler Паскаль, Turbo Pascal, PascalABC.NET 2 23.11.2011 13:50
Двумерные массивы [Паскаль] romka w Помощь студентам 0 12.12.2010 14:23
двумерные массивы [Паскаль] Azat777 Помощь студентам 0 12.12.2010 14:19
Паскаль.Двумерные массивы,объединить два массива в один с сортировкой столбцов по возрастанию. valord Помощь студентам 6 02.06.2009 11:13