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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
hally
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 16
#1

Сформировать последовательность из элементов матрицы - C++

22.12.2011, 18:07. Просмотров 1411. Ответов 9
Метки нет (Все метки)

Cоставить программу заданной обработки матрицы целых чисел. В процессе обработки использовать перестановки элементов внутри массива, не создавая новых массивов. Заполнение исходного массива организовать с помощью генератора случайных чисел. Исходный и обработанный массив выводить на экран.
Во всех вариантах работать с ЗАДАНОЙ матрицей, не создавая дополнительных массивов и матриц (кроме случаев, где это предусмотрено вариантом задания).


1) Дана матрица A(n на n). Получить x1xn + x2xn-1 + ... + xnx1, где xk – наибольшее значение элементов k-го столбца данной матрицы.

Добавлено через 9 часов 21 минуту
HELP ME

Добавлено через 17 часов 50 минут
up......
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2011, 18:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сформировать последовательность из элементов матрицы (C++):

Сформировать одномерный массив из диагональных элементов матрицы. Найти след матрицы - C++
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы...

Сформировать массив из элементов исходных массивов, образующих возрастающую последовательность - C++
Задача: Заданы массивы целых положительных чисел X(n), Y (k), Z(m). Сформировать массив U из таких элементов массивов X, Y , Z, которые в...

Даны три квадратные матрицы. Сформировать вектор, состоящий из минимальных элементов каждой матрицы, отличных от нуля - C++
Даны три квадратные матрицы. Сформировать вектор, состоящий из минимальных элементов каждой матрицы, отличных от нуля. Поиск минимального...

Из элементов матрицы сформировать вектор средних арифметических парных элементов - C++
Это что вообще сделать надо. Не надо писать код, просто объясните суть..

Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. - C++
Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива.

Сформировать суммы элементов строк матрицы и суммы элементов столбцов матрицы - C++
Добрый день господа программисты, я к вам с небольшим вопросом. Мне необходимо написать программу в которой генерируется матрица...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
22.12.2011, 18:25 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Ищет максимальный элемент в столбце c номером colN(начиная с нуля)
int maxInCol(int **m, int n, int colN)
{
  int max = m[0][colN];
  for (int i = 1; i < n; i++)
    if (max < m[i][colN])
      max = m[i][colN];  
  return max;
}
 
// Сама функция
int function(int **m, int n)
{
  int sum = 0;
  for (int i = 0; i < N / 2; i++)
    sum += maxInCol(m, i) * maxInCol(m, N - i - 1) * 2;
  if (N % 2 == 1)
  {
    int tmp = maxInCol(N / 2 + 1);
    sum += tmp * tmp;
  }
}
Я вточности не уверен, что это работает корректно. Если требуется - могу объяснить принцип.
0
hally
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 16
25.12.2011, 11:57  [ТС] #3
помогите с полной программой
0
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 12:05 #4
Как должна выглядеть программа? Матрица - она определенного размер или размер вводится с клавиатуры? Матрица тоже заполняется с клавиатуры?
0
hally
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 16
25.12.2011, 12:36  [ТС] #5
НУ вот все задание


Задание: составить программу заданной обработки матрицы целых чисел. В процессе обработки использовать перестановки элементов внутри массива, не создавая новых массивов. Заполнение исходного массива организовать с помощью генератора случайных чисел. Исходный и обработанный массив выводить на экран.
Во всех вариантах работать с ЗАДАНОЙ матрицей, не создавая дополнительных массивов и матриц (кроме случаев, где это предусмотрено вариантом задания).

Теоретический материал
Матрица, по сути, является двумерным массивом элементов, поэтому для работы с матрицей будем использовать двумерный массив. Правила создания, обработки двумерных массивов, в общем, остаются такими же, как и для одномерных массивов. Отличие состоит в количестве индексов.
Для организации доступа последовательно ко всем элементам матрицы организуются два цикла, причем порядок «вложения» циклов определяется тем, как осуществляется перебор элементов: по столбцам или по строкам. Чаще используется проход по матрице по строкам, т. е. сначала в первой строке перебираются элементы всех столбцов, затем – во второй строке и т. д. В этом случае «внешним» будет цикл по строкам (т. е. по индексу i), а вложенным – цикл по столбцам (т. е. по j). Ниже представлен пример заполнения матрицы значениями, вводимыми с клавиатуры, причем элементы строк матрицы могут вводиться в строчку через пробел, а для ввода значений новой строки надо нажать клавишу <Enter>.
C++
1
2
3
4
5
6
for (i=1; 5; i++)
{
   for (j=1;10; j++)
       cin>>a[i][j];
   cin<<
}
Обработка и вывод матрицы осуществляется аналогично.


1. Дана матрица A(n*n). Получить x1xn + x2xn-1 + ... + xnx1, где xk – наибольшее значение элементов k-го столбца данной матрицы.
0
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 13:04 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Получилось примерно так:
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
#include <iostream>
#include <stdlib.h>
// Размер матрицы 
#define N 2 
using namespace std;
 
// Ищет максимальный элемент в столбце c номером colN(начиная с нуля)
int maxInCol(int m[N][N], int colN)
{
  int max = m[0][colN];
  for (int i = 1; i < N; i++)
    if (max < m[i][colN])
      max = m[i][colN];  
  return max;
}
 
// Сама функция
int function(int m[N][N])
{
  int sum = 0;
  for (int i = 0; i < N / 2; i++)
    sum += maxInCol(m, i) * maxInCol(m, N - i - 1) * 2;
  if (N % 2 == 1)
  {
    int tmp = maxInCol(m, N / 2 + 1);
    sum += tmp * tmp;
  }
 
  return sum;
}
 
void main( void )
{
  int m[N][N];
  int i, j;
 
  // Заполняем случайными значениями и одновременно выводим
  for (i = 0; i < N; i++)
  {
    for (j = 0; j < N; j++)
    {
      m[i][j] = rand() % 201 - 100;
      cout << m[i][j] << ' ';
    }
    cout << '\n';
  }
 
  cout << "Result: " << function(m) << '\n';
  system("pause");
}
2
hally
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 16
25.12.2011, 13:44  [ТС] #7
Спасибо, но нужно сделать чтобы вводилось и т д,что-то наподобие этой программы

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
#include <stdafx.h>
#include <stdio.h>
#include <iostream>
#include <ctime> 
#include <conio.h>
using namespace std;
int main()
{
cout << "Vvedite kolichestvo elementov :"<<endl;
int *iptr;                                   // указатель на массив
int *jptr;                                   // указатель на конечный массив 
int *lastptr;
int *min;                                    // указатель на мин. элемент массива
int n,i;
cin >> n;                                   // вводим количество элементов массива
int* a = new int[n];
 
for ( iptr = a, i=0; iptr < a+n; iptr++,i++) 
{                 // цикл ввода элементов массива
 
cout << "Vvedite " << i << " element = ";
cin >> *iptr;                                // вводим элементы массива
}
cout <<endl;
cout << "Zadaniu massiv"<<endl; 
cout <<endl;
min = a;                                  //указатель min равен указателю первого элемента
//нахождение минимального элемента массива-------------------
for (iptr = a+1; iptr < a+n; iptr++)                   
{   if (*iptr < *min) 
       {
         min = iptr;
         *min = *iptr;
       }
    cout << "Element: "<<*iptr << " "<<endl;         //заданный массив
  //  cout << "Nomer: " << iptr     << " "<<endl;  //номер элемента массива
}                                           
cout << "Min element: " << *min <<endl;
//-----------------------------------------------------------
cout <<endl;
//----удаляем положительные элементы массива, имеющие четный порядковый номер---
iptr=a+n;
i = n;
lastptr = a+n;                        //указатель на последний элемент массива
while (iptr > min)
  {               
         if( (*iptr >= 0) && (i % 2 == 0) )
         {    
             for ( jptr = iptr; jptr < lastptr-1; jptr++)
             {
                  *jptr = *(jptr+1);                  
             }
             lastptr--;
         }
         iptr--;
         i--;
        
  } 
//--------вывод массива--------------------------------------------------------
cout << "Konechniy massiv "<<endl;
for ( iptr = a; iptr < lastptr; iptr++) 
{
  cout << *iptr << " ";
}
 _getch() ;
 
 
}
0
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 13:58 #8
Т.е. дожен вводиться размер матрицы, а потом ее содержимое?
0
hally
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 16
25.12.2011, 14:04  [ТС] #9
ну да ну или можно вроде просто вводить порядок матрицы и что-бы потом выводилось
0
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
25.12.2011, 14:20 #10
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сейчас набросаю...

Добавлено через 14 минут
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
// Ищет максимальный элемент в столбце c номером colN(начиная с нуля)
int maxInCol(int **m, int N, int colN)
{
  int max = m[0][colN];
  for (int i = 1; i < N; i++)
    if (max < m[i][colN])
      max = m[i][colN];  
  return max;
}
 
// Сама считаем то что требуется в матрице
int function(int **m, int N)
{
  int sum = 0;
  for (int i = 0; i < N / 2; i++)
    sum += maxInCol(m, N, i) * maxInCol(m, N, N - i - 1) * 2;
  if (N % 2 == 1)
  {
    int tmp = maxInCol(m, N, N / 2 + 1);
    sum += tmp * tmp;
  }
 
  return sum;
}
 
// Функция создания матрицы
int ** newMatr( int N )
{
  int **m = new int *[N];
 
  for (int i = 0; i < N; i++)
    m[i] = new int[N];
  return m;
}
 
// Функция удаляет матрицу
void delMatr( int **m, int N )
{
  for (int i = 0; i < N; i++)
    delete[] m[i];
  delete m;
}
 
// Функция печатает матрицу
void printMatr( int **m, int N )
{
  int i, j;
  for (i = 0; i < N; i++)
  {
    for (j = 0; j < N; j++)
      cout << m[i][j] << ' ';
    cout << '\n';
  }
}
 
// Функция вводит матрицу
void inputMatr( int **m, int N )
{
  int i, j;
  for (i = 0; i < N; i++)
    for (j = 0; j < N; j++)
    {
      cout << "a[" << i << "][" << j << "] = ";
      cin >> m[i][j];
    }
}
 
void main( void )
{
  int **m; // Указатель на матрицу
  int N; // Размер матрцы
 
  system("cls"); // Очищает экран
  cout << "Insert matrix size: ";
  cin >> N;
  if (N <= 0)
  {
    cout << "Incorrect matrix size!\n";
    system("pause");
    return;
  }
  m = newMatr(N); // Заводим матрицу
  cout << "Insert matrix:\n";
  inputMatr(m, N); // Вводим матрицу
  system("cls");
  cout << "Matrix: \n";
  printMatr(m, N);
  cout << "Result: " << function(m, N) << '\n';
  delMatr(m, N);
  system("pause");
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2011, 14:20
Привет! Вот еще темы с ответами:

Построить последовательность из элементов матрицы - C++
Знакомый попросил помочь, мол &quot;Тыжпрограммист&quot;, а я в C++ не рублю. Задачи-то простые, алгоритм у них легкий, но есть проблемы с тонкостями...

Сформировать массив из элементов матрицы - C++
Дан двумерный массив. Сформировать одномерный массив, каждый элемент которого равен среднему арифметическому четных положительных элементов...

Сформировать массив из элементов матрицы - C++
Дан двумерный массив. Сформировать одномерный массив,каждый элемент которого равен количеству элементов соответствующего столбца ...

Сформировать массив из элементов матрицы - C++
задача следующая: дана матрица A(NxN). сформировать ономерный массив по следующим правилам:если аii&lt;0(i=2,...,n-1),в качестве bi взять...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.12.2011, 14:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru