Форум программистов, компьютерный форум CyberForum.ru

Заменить максимальный элемент каждой строки на противоположный по знаку - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
AforeveR
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 29
01.03.2012, 11:22     Заменить максимальный элемент каждой строки на противоположный по знаку #1
Дан двумерный массив размером 5 * 6, заполненный случайным образом. Заменить максимальный элемент каждой строки на противоположный по знаку .
В инете есть такая же задача.
Дан двумерный массив размером 5 х 6, заполненный случайным образом.

- Заменить максимальный элемент каждой строки на противоположный ( мне надо только это )
- Вставить после столбцов с максимальными элементами столбец и нулей;
- Удалить среднюю строку;
- Поменять местами средние столбцы
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  program ild;
uses crt;
const
  n=5;
  m=6;
var
  a,b,c,d,i:integer;
  z:array[1..n,1..(m+1)]of integer;
procedure printtable;
begin
  for a:=1 to n do begin
    for b:=1 to m+1 do
      write('     ',z[a,b]:4);
    writeln;
  end;
end;
begin
  {начальное заполнение}
  randomize;
  for a:=1 to n do
    for b:=1 to m do
      z[a,b]:=random(99);
  printtable;
  {п.1 - заменяем максимальный элемент каждой строки на противоположный}
  write('A ');
  for a:=1 to n do begin
    i:=1;
    for b:=1 to m do
      if z[a,b]>z[a,i] then i:=b;
    z[a,i]:=-z[a,i];
  end;
  printtable;
  {п.2 - вставляем после столбца с максимальным элементом столбец нулей}
  write('B ');
  c:=1;
  d:=1;
  for a:=1 to n do begin
    for b:=1 to m do begin
      if z[a,b]>z[c,d] then
        begin
          c:=a;
          d:=b;
        end;
    end;
  end;
  {здесь в переменных c и d содержатся индексы максимального элемента в таблице}
  {сдвигаем оставшиеся столбцы вправо}
  for a:=1 to n do begin
    for b:=m+1 downto d+1 do
      z[a,b]:=z[a,b-1];
  end;
  {теперь заполняем нужный столбец нулями}
  for a:=1 to n do
    z[a,d+1]:=0;
  printtable;
  {п.3 - удаляем среднюю строку}
  write('C ');
  for a:=4 to n do begin
    for b:=1 to m+1 do
      z[a-1,b]:=z[a,b];
  end;
  for b:=1 to m+1 do
    z[5,b]:=0;
  printtable;
  {п.4 - меняем местами средние столбцы}
  write('D ');
  for a:=1 to n do begin
    i:=z[a,3];
    z[a,3]:=z[a,4];
    z[a,4]:=i;
  end;
  printtable;
end.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 11:22     Заменить максимальный элемент каждой строки на противоположный по знаку
Посмотрите здесь:

В квадратной матрице для каждой строки найти максимальный элемент C++
C++ [Ошибка] Максимальный элемент каждой строки двумерной матрицы
В матрице найти максимальный элемент каждой строки C++
C++ Задана матрица С(5,5). Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки
C++ Заменить максимальный элемент в матрице, средним арифметическим элементов строки, в которой находится максимальный элемент
C++ В каждой строке матрицы найти максимальный элемент и заменить его на противоположный
C++ Найти максимальный элемент и заменить им первый элемент строки в двумерном массиве
C++ Заменить максимальный элемент каждой строки номером столбца, в которой он находится

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
01.03.2012, 11:59     Заменить максимальный элемент каждой строки на противоположный по знаку #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <cstdlib>
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int a[5][6];
    
    srand(time(NULL));
    
    for (int i = 0; i < 5; i++)
        for (int j = 0; j < 6; j++)
            a[i][j] = rand() % 2000 - 1000; //Sluch ot -1000 do 1000
            
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 6; j++)
            cout << a[i][j] << "  ";
        cout << endl;
    }
    
    for (int i = 0; i < 5; i++)
    {
        int max = 0;
        for (int j = 0; j < 6; j++)
            if (a[i][j] > a[i][max])
                max = j;
        a[i][max] *= -1;
    }
    cout << endl << endl;
    
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 6; j++)
            cout << a[i][j] << "  ";
        cout << endl;
    }
    
    system("PAUSE > NULL");
    return EXIT_SUCCESS;
}
Yandex
Объявления
01.03.2012, 11:59     Заменить максимальный элемент каждой строки на противоположный по знаку
Ответ Создать тему
Опции темы

Текущее время: 05:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru