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

Поменять знак всех локальных максимумов данной матрицы на противоположный. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс с Конструктором и Деструктором http://www.cyberforum.ru/cpp-beginners/thread392542.html
напишите класс, содержащий закрытые целочисленные переменные , характеризующие координаты точки в пространстве и ее температуру(с плавающей точкой),Класс должен содержать конструктор со списком инициализации координат точки , а также конструктор , в котором инициализируется значение температуры.В деструкторе должно выводиться сообщение о разрушении объекта. Вот начал писать.Дальше немного не...
C++ Поиск с логическими связками struct OBUV { char Marka; char Strana; int Size; double Summa_nal; double Summa_beznal; int Kolichestvo; }sp, sd; http://www.cyberforum.ru/cpp-beginners/thread392530.html
C++ разделение строки на слова
нужно разбить строку на слова (си) без использования библиотеки string.h (пользоваться можно только stdio.h) можно использовать многомерные массивы подкиньте идею как реализовать\алгоритм заранее благодарю !
Строки C++ C++
Помогите пожалуйста. Дана строка текста, в которой слова разделены пробелами и запятыми. Необходимо: а) определить количество слов в строке; б) найти самое длинное слово и его порядковый номер; в) вывести каждое четное слово.
C++ Задача про целочисленную прямоугольную матрицу http://www.cyberforum.ru/cpp-beginners/thread392508.html
Определить: 1) количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент; 2) номера строк и столбцов всех седловых точек матрицы. Помогите, пожалуйста, написать программу на языке Си! не проходил его вообще, в универе лекции совершенно не совпадают с практикой, поэтому никак не могу сообразить, как написать такую программу. Очень надеюсь на Вашу...
C++ Привести в каноническую форму задачу линейного программирования Доброго времени суток! Есть такая задача, кто сможет помочь? Привести в каноническую форму задачу из линейного программирования: 1.x1 + 2x2 + 3x3 + 4x4 -> max при ограничениях 3x1 + 2x2 + 4x3 + x4 = 20; 2.5x1 + 4x2 + 3x3 + 2x4 <= 10; 3.x1 - x2 + x3 - x4 >= 1 при условии x1,x2,x3 >= 0. подробнее

Показать сообщение отдельно
mc.Duck
Заблокирован
26.11.2011, 21:57     Поменять знак всех локальных максимумов данной матрицы на противоположный.
Слегка необычная задача!
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
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
74
75
76
77
78
79
80
 
#include <iostream>
#include <clocale>
#include <iomanip>
using namespace std;
 
     const int n=4; //размерность матрицы(лучше будем пользоваться квадратной, чтоб голову зря не ломать)
    
     int main()
     {
         setlocale(LC_ALL,"Russian");
         int mat[n][n];
         int mat2[n][n];                        //дополнительная матрица(нужна чисто ради просмотра значений!)
         for(int i=1;i<=n;i++)
         for(int j=1;j<=n;j++)
         {
         mat[j][i]=rand() % 9+5;
         mat2[j][i]=mat[j][i];
         }
         
         cout<<"Целевая матрица:"<<endl;
         for(int i=1;i<=n;i++)
         {
         for(int j=1;j<=n;j++)
         cout<<setw(4)<<mat[j][i];
         cout<<endl;
         }
         
         cout<<endl;cout<<endl;
         cout<<"Локальные минимумы:"<<endl;
         for(int i=1;i<=n;i++)
         for(int j=1;j<=n;j++)
         {
         bool left=true;                             //соседи элемента с четырех его сторон
         bool right=true;
         bool up=true;
         bool down=true;
         /////////////////////
         bool nb_left=true;                       //по умолчанию, все соседи больше элемента
         bool nb_right=true;
         bool nb_up=true;
         bool nb_down=true;
         /////////////////////
         if(j==1) left=false;                      //проверяем есть ли у элемента соседи с четырех его сторон
         if(j==n) right=false; 
         if(i==1) up=false; 
         if(i==n) down=false; 
         /////////////////////
         if(left==true) if(mat[j-1][i]>mat[j][i]) nb_left=false;       //проверяем на валидность соседа и его значение
         if(right==true) if(mat[j+1][i]>mat[j][i]) nb_right=false;
         if(up==true) if(mat[j][i-1]>mat[j][i]) nb_up=false;
         if(down==true) if(mat[j][i+1]>mat[j][i]) nb_down=false;
         
         if(nb_left==true && nb_right==true && nb_up==true && nb_down==true) 
         {
         cout<<"> Число "<<mat[j][i]<<"  -  X-координата: "<<j<<"    Y-координата: "<<i<<endl;       // ...и если все соседи меньше, то выводим этот элемент...
         if(j>1) if(mat2[j-1][i]<0)  mat2[j-1][i]=mat2[j-1][i]+mat2[j-1][i]*2;
         if(j>1) if(mat2[j-1][i]>0)  mat2[j-1][i]=mat2[j-1][i]-mat2[j-1][i]*2;
         if(j<n) if(mat2[j+1][i]<0)  mat2[j+1][i]=mat2[j+1][i]+mat2[j+1][i]*2;
         if(j<n) if(mat2[j+1][i]>0)  mat2[j+1][i]=mat2[j+1][i]-mat2[j+1][i]*2;
         
         if(i>1) if(mat2[j][i-1]<0)  mat2[j][i-1]=mat2[j][i-1]+mat2[j][i-1]*2;
         if(i>1) if(mat2[j][i-1]>0)  mat2[j][i-1]=mat2[j][i-1]-mat2[j][i-1]*2;
         if(i<n) if(mat2[j][i+1]<0)  mat2[j][i+1]=mat2[j][i+1]+mat2[j][i+1]*2;
         if(i<n) if(mat2[j][i+1]>0)  mat2[j][i+1]=mat2[j][i+1]-mat2[j][i+1]*2;
                          }
         }
         cout<<endl;cout<<endl;
         
         cout<<"Исходная матрица:"<<endl;
         for(int i=1;i<=n;i++)
         {
         for(int j=1;j<=n;j++)
         cout<<setw(4)<<mat2[j][i];
         cout<<endl;
         }
         
cin.get();
//system("Pause");
 }
Единственное, что размерность матрицы не M x N, n на n. Но, думаю, тебе это будет очень легко исправить!
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru