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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2012, 00:09   #1
Vlad0n
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 26
По умолчанию Массив...

Привет, помогите пожалуйста решить задачу на языке Паскаль, не могу довести ее до конца... Вот:Задана вещественная матрица размера NxM. Поменять местами столбцы матрицы содержащиедве максимальные суммы элементов.Если таких столбцов несколько, то только последние из них.
Спасибо

Последний раз редактировалось Vlad0n; 09.11.2012 в 12:32.
Vlad0n вне форума Ответить с цитированием
Старый 09.11.2012, 00:58   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

ну покажите хотя бы начало...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 09.11.2012, 02:19   #3
Vlad0n
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 26
По умолчанию

Код:
uses crt;
const n1=10; m1=10;
type mas = array[1..n1,1..m1] of real;
var a:mas;i,j,n,m: integer;   sum,max_1,max_2,x:real;
begin
writeln ('введите кол-во строк');
readln (n);
writeln ('введите кол-во столбцов');
readln (m);
writeln('введите элементы массива');
for i:=1 to n do
 for j:=1 to m do
  begin
  writeln ('введите А[',i,',',j,']');
  readln (a[i,j]);
  end;

 for j:=1 to m do
begin
sum:=0;
for i:=1 to n do
begin
sum:=sum+a[i,j];
//X:=sum;
//sum:=sum1+a[i,j];
//If (Sum>X) and (max_2<max_1) then max_2:=max_1;
//If Sum>X then max_1:=Sum;

end;
writeln('сумма ',j,'столбца = ',sum);
end;
writeln(' Максимальные суммы двух столбцов равны ',max_1, ' ',max_2);
For i:=1 to n do
begin
For j:=1 to m do
Write (A[i,j],' ');
writeln;

end;
END.
Как-то так, то, что в комментарях - это примерное решение (начало решения), как я дуумаю...




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Vlad0n; 09.11.2012 в 12:32.
Vlad0n вне форума Ответить с цитированием
Старый 09.11.2012, 11:14   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а я не понял задание!

Цитата:
Поменять местами столбцы матрицы содержащие две максимальные суммы элементов.
Суммы каких именно элементов?
Цитата:
Если таких строк несколько, то только последние из них.
При чём здесь строки? Речь, вроде бы, о столбцах была?

давайте так.
вот матрица 4 x 7 (заполнил случайными числами):
Код:
   10     0     5     5     8     9     4
   10     7     4     4     2     0     2
    8     2     0     5     5     3     4
    4    10     7     9     0     3     9
объясните, что и как считается, что должно с чем меняться...


ДОБАВЛЕНО

так что ли?
Код:
uses crt;
const n1 = 10; m1 = 10;
type mas = array[1..n1, 1..m1] of real;
var a: mas; i, j, n, m: integer;
    sum, max1, max2 : real;
    index_max1, index_max2 : integer;

begin
  randomize;
  writeln('введите кол-во строк');
  readln(n);
  writeln('введите кол-во столбцов');
  readln(m);
  writeln('введите элементы массива');
  for i := 1 to n do begin
    for j := 1 to m do
    begin
      {writeln('введите А[', i, ',', j, ']');
      readln(a[i, j]); }
      a[i, j] := Random(11);
      Write(a[i, j]:5:0,' ');
    end;
    WriteLn;
  end;

  index_max1 := 0;
  index_max2 := 0;
  for j := 1 to m do
  begin
    sum := 0;
    for i := 1 to n do
      sum := sum + a[i, j];

    if index_max1 = 0 then begin
      index_max1 := j;
      max1 := sum
    end
    else begin
      if index_max2 = 0 then begin
        index_max2 := index_max1;
        max2 := max1;
        index_max1 := j;
        max1 := sum
      end
      else { оба максимальных значения уже не пустые,
             сравним их с очередной суммой }
        if sum>=max1 then begin
          index_max2 := index_max1;
          max2 := max1;
          index_max1 := j;
          max1 := sum
        end
        else
          if sum>=max2 then begin
            index_max2 := j;
            max2 := sum
          end;
    end;
    writeln('сумма ', j, 'столбца = ', sum:5:0);
  end;
  writeln(' Максимальные суммы двух столбцов равны: ');
  WriteLn(' меняем местами столбцы с номерами ',index_max1,'  и ',index_max2);
  WriteLn('    стобец № ',index_max1,' = ', max1:5:2);
  WriteLn('    стобец № ',index_max2,' = ', max2:5:2);


  {меняем их местами}

  {..... тут ваш код замены столбцов местами..}

  readln;

end.

Последний раз редактировалось Serge_Bliznykov; 09.11.2012 в 11:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2012, 12:31   #5
Vlad0n
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 26
По умолчанию

Да, извиняюсь за "замечательное" условие. Вобщем нужно найти столбики, где сумма элементов максимальная. Например 4 5 6 0
4 8 3 4
1 3 7 5
7 8 2 1
тут: сумма 1-го = 16, 2-го = 24, 3-го = 18, 4-го = 10; То есть нужно поменять местами столбики с суммами 24 и 18, т.к. это две максимальные суммы элементов в столбиках. А насчет последнего условия...да, там про столбики, не строки.
Vlad0n вне форума Ответить с цитированием
Старый 09.11.2012, 13:33   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я написал код в сообщении выше.
Разберётесь?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2012, 19:39   #7
Vlad0n
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 26
По умолчанию

ну впринципе разобрался, дело в том, что программа работает некорректно, мне вывело максимальную и среднюю сумму. Т.е. в некоторых случаях работает, в некоторых нет.


Программа работает правильно только для квадратной матрицы(

Последний раз редактировалось Stilet; 12.11.2012 в 20:10.
Vlad0n вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны Koksa Помощь студентам 0 10.10.2011 11:26
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58
Массив - Нужно написать массив и распечатать на экран с конца в начало(язык С++) econ Помощь студентам 1 29.05.2011 22:02