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

Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Робота с структурированными файлами http://www.cyberforum.ru/cpp-beginners/thread901464.html
Создать программу, которая бы обеспечивала создание, просмотр, дополнения и удаление даных из файла, содержащего информацию о группе студентов а именно имя, пол, рост. Организовать поиск который позволяет найти средний рост всех девушек в группе, и имя самого высокого мальчика. помогите пожалуйста.....очень нужна програма.......отчислят если не зделаю
C++ Матрица. Найти номер ее ряда с наибольшей суммой элементов и вывести данный ее номер, а также значение наибольшей суммы Дана матрица размерности M x N. Найти номер ее ряда з найбольшою суммой элементов и вивести даный ее номер а также значение найбольшой суммы http://www.cyberforum.ru/cpp-beginners/thread901460.html
QR разложение (есть эскиз кода и алгоритм) C++
Здравствуйте! Требуется реализовать класс матриц, в котором присутствует QR разложение. На википедии нашёл отличный алгоритм с примерами, написал эскиз кода. При реализации алгоритма появились трудности от неумения применения простейших алгоритмов (скалярное произведение, проекция вектора на вектор) Вот мой кусок кода из класса: void Cmatrix::QR_Decomposition(Cmatrix* A, Cmatrix* Q, Cmatrix*...
C++ Производный класс, аргументы по умолчанию
Здравствуйте. Есть базовый класс и производный. Проблема в том что в производном классе надо сделать один аргумент, который наследуется от базового класса, по умолчанию, но по условии задания я могу редактировать только определения класса, а я этот самый аргумент даже передать не могу в производный так как он не объявлен в конструкторе производного класса. Чтобы вам было удобней я выделил...
C++ Поменять местами наибольший и последний элементы массива http://www.cyberforum.ru/cpp-beginners/thread901390.html
Даны действительные числа х1,...,хn (все числа попарно различны). Поменять местами наибольший и последний элементы. 1 Victoria, сколько ваших тем надо переименовать, чтобы вы обратили наконец внимание на правила форума?! заголовок должен отражать суть задания, название раздела - не есть подходящее название для темы.
C++ Исправление ошибок Помогите запустить программу #include <iostream.h> #include <stdlib.h> #include <fstream.h> int vvod(); int vivod(); char Name; struct ved { int tn; char fam; подробнее

Показать сообщение отдельно
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5534 / 2568 / 234
Регистрация: 01.11.2011
Сообщений: 6,343
Завершенные тесты: 1
17.06.2013, 10:40     Определить минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы
Сломал половину мозга над заданием, и как понял требуется найти две диагонали параллельные побочной и сравнить у кого сумма элементов больше, да?
Вот, если актуально еще. Универсальным алгоритм не получился: для размерностей матрицы два на два и три на три считает только с помощью костыля (см. crutch).
А так, в точности ваш паскалевский код, на тупую переведенный, подправлены переносы строк при выводе и пофиксен сам алгоритм поиска элементов диагоналей.
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
#include <iostream.h>
 
int main()
{
//usescrt;
const int n = 4; //const n = 10;
int mm[n][n]; //Var mm :array[1..n,1..n] of integer;
int i, j, SumAbs; //i, j, SumAbs : integer;
unsigned short int MinSum; //MinSum : Word;
//Begin
system("cls"); //ClrScr;
 
cout << "Исходнаяматрица:" << endl; //WriteLn('Исходнаяматрица:');
randomize(); //Randomize;
  for(i=0; i<n; i++) //For i:=1 to n do
    { //begin
      for(j=0; j<n; j++) //For j:=1 to n do
        { //begin
        mm[i][j] = rand() % 20; //mm[i,j]:=Random(20);
          if(rand()%10 < 5) mm[i][j] *= -1; //If Random(10)<5 then mm[i,j]:=-mm[i,j];
        cout.width(4);
        cout << mm[i][j]; //Write(mm[i,j]:4);
        } //end;
    cout << endl; //WriteLn;
    } //end;
MinSum = 65535; //MinSum:=65535;
cout << "Суммымодулейэлементовдиагоналейвышепобочной" << endl; //WriteLn('Суммымодулейэлементовдиагоналейвышепобочной');
int crutch;
switch(n)
  {
  case(3) : crutch = 1; break;
  case(2) : crutch = 1; break;
  default : crutch = 0;
  }
for(i=n/2-1+crutch; i>0; i--) //For i:=n-1 downto 1 do
  { //begin
  SumAbs = 0; //SumAbs:=0;
    for(j=i; j<n; j++) //For j:=1 to i do
      SumAbs += abs(mm[j-i][n-j-1]); //SumAbs:=SumAbs+Abs(mm[j,i-j+1]);
    cout.width(4);
    cout << SumAbs; //Write(SumAbs:4);
    if(MinSum > SumAbs) MinSum = SumAbs; //If MinSum>SumAbs then MinSum:=SumAbs;
  } //end;
cout << endl; //WriteLn;
cout << "Суммы модулей элементов диагоналей ниже побочной" << endl; //WriteLn('Суммы модулей элементов диагоналей ниже побочной');
for(i=n/2-1+crutch; i>0; i--) //For i:=2 to n do
  { //begin
  SumAbs = 0; //SumAbs:=0;
  for(j=i; j<n; j++) //For j:=1 to n+1-i do
    SumAbs += abs(mm[j-i+1][n-j]); //SumAbs:=SumAbs+Abs(mm[i-1+j,n+1-j]);
  cout.width(4);
  cout << SumAbs; //Write(SumAbs:4);
  if(MinSum > SumAbs) MinSum = SumAbs; //If MinSum>SumAbs then MinSum:=SumAbs;
  } //end;
cout << endl; //WriteLn;
cout << "Минимальнаясумма:" << MinSum; //WriteLn('Минимальнаясумма:',MinSum:4);
cin.ignore(); //ReadLn;
//End
 
return 0;
}
 
Текущее время: 22:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru