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

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

Войти
Регистрация
Восстановить пароль
 
nowichok2
1 / 1 / 0
Регистрация: 09.03.2009
Сообщений: 6
#1

матрица с массивами - C++

14.04.2009, 16:50. Просмотров 450. Ответов 3
Метки нет (Все метки)

Задание:
дана челочисленная квадратная матрица. Определить
1)сумму элементов в тех столбцах, которые не содержат отрицательных элементов
2) минимум среди сумм модулейдиагоналей, паралельных побочной диагонали матрицы
3) программу записать в статическом и в динамическом масиве(должнобыть 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
#include <vcl.h>
 
#include <iostream.h>
#include <stdio.h>
 
 
#define SIZE 4
 
int array[SIZE][SIZE] = {{10, 5, -5, 7}, {5, 8, 3, 6}, {-5, 9, 4, 3}, {-5, 7, -5, 7}};
 
int main()
{   float s;
    int c, r, sum;
    for (c = 0; c < SIZE; c++) {
        sum = 0;
        for (r = 0; r < SIZE; r++)
            if (array[r][c] > 0) sum += array[r][c];
            else {
                sum = -1;
                break;
            }
        if (sum >= 0) printf("sum of %d column is %d\n", c + 1, sum);
    }
    
    cin>>s;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2009, 16:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос матрица с массивами (C++):

Работа с многомерными массивами. Дана матрица размером М * N. Сформировать из этой матрицы вектор по правилу - C++
Дано матрицу размером М * N. Сформировать из этой матрицы вектор по правилу: первые N элементов вектора - это элементы матрицы первого...

дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим - C++
помогите пожалуйста. условие: дана квадратичная матрица z. составить программу, которая если матрица симметричная(транспонированная...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char* argv) { srand(time(NULL)); int mas; ...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include&lt;conio.h&gt; void main() { int mas; int N; int max_element; int...

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

Тупик с массивами - C++
я вообще не понимаю как работает Dev C++ пишу явно не правильный код а он его запускает как ни в чем не бывало: #include&lt;iostream&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
14.04.2009, 16:57 #2
Динамически выделяй память под массив.
C
1
2
3
4
5
6
#include <stdlib.h>
 
int **array, i;
array = (int **) malloc(N * sizeof(int*);
for(i = 0; i < N; i++)
    array[i] = (int *) malloc(N * sizeof(int));
В остальном все так же.
nowichok2
1 / 1 / 0
Регистрация: 09.03.2009
Сообщений: 6
14.04.2009, 17:49  [ТС] #3
Цитата Сообщение от Gravity Посмотреть сообщение
Динамически выделяй память под массив.
C
1
2
3
4
5
6
#include <stdlib.h>
 
int **array, i;
array = (int **) malloc(N * sizeof(int*);
for(i = 0; i < N; i++)
    array[i] = (int *) malloc(N * sizeof(int));
В остальном все так же.
если я правильно тебя понял то код должен выглядеть так:
[C]
#include <vcl.h>

#include <iostream.h>
#include <stdio.h>


#define SIZE 4

int **array, i;
array = (int **) malloc(N * sizeof(int*);
for(i = 0; i < N; i++)
array[i] = (int *) malloc(N * sizeof(int));

int main()
{ float s;
int c, r, sum;
for (c = 0; c < SIZE; c++) {
sum = 0;
for (r = 0; r < SIZE; r++)
if (array[r][c] > 0) sum += array[r]
C
1
2
3
4
5
6
7
8
9
10
11
;
            else {
                sum = -1;
                break;
            }
        if (sum >= 0) printf("sum of %d column is %d\n", c + 1, sum);
    }
    
    cin>>s;
    return 0;
}
Добавлено через 1 минуту 20 секунд
Цитата Сообщение от Gravity Посмотреть сообщение
Динамически выделяй память под массив.
C
1
2
3
4
5
6
#include <stdlib.h>
 
int **array, i;
array = (int **) malloc(N * sizeof(int*);
for(i = 0; i < N; i++)
    array[i] = (int *) malloc(N * sizeof(int));
В остальном все так же.
если я правильно тебя понял то код должен выглядеть так:

#include <vcl.h>

#include <iostream.h>
#include <stdio.h>


#define SIZE 4

int **array, i;
array = (int **) malloc(N * sizeof(int*);
for(i = 0; i < N; i++)
array[i] = (int *) malloc(N * sizeof(int));

int main()
{ float s;
int c, r, sum;
for (c = 0; c < SIZE; c++) {
sum = 0;
for (r = 0; r < SIZE; r++)
if (array[r][c] > 0) sum += array[r]
C
1
2
3
4
5
6
7
8
9
10
11
;
            else {
                sum = -1;
                break;
            }
        if (sum >= 0) printf("sum of %d column is %d\n", c + 1, sum);
    }
    
    cin>>s;
    return 0;
}
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.04.2009, 18:33 #4
malloc - сишный вариант... в си++ чаще используется new
и старайтесь не использовать iostream и stdio в одной программе.. это не рационально...

вот ваш код должен выглядеть примерно так:

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
#include <iostream>
using namespace std;
 
int main()
{   
  float s;
  int c, r, sum;
  int m, n;
  
  // узнаем размеры матрицы
  cout << "Vvedite razmer matritxi cherez probel\n";
  cin >> m >> n;
  
  // создаем матрицу
  int **arr = new int*[m];
  for (int i=0; i<m; i++)
    arr[i] = new int[n];
  
  cout << "Vvedite elementi strok cherez probel" << endl;
  for (int i=0; i<m; i++)
  {
      for(int j=0; j<n; j++)
      {
          cout << "Array[" << i << "][" << j << "] = ";
          cin >> arr[i][j];
      }
  }
  
  for (c = 0; c < m; c++) 
  {
    sum = 0;
    for (r = 0; r < n; r++)
      if (arr[r][c] > 0) sum += arr[r][c];
        else 
        {
          sum = -1;
          break;
        }
        if (sum >= 0) cout << "\nsum of " << c+1 << " column is " << sum;
  }
 
  cin >> s;
  delete []arr;
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2009, 18:33
Привет! Вот еще темы с ответами:

3 задачки с массивами - C++
Здравствуйте. Помогите в написании кода. Сложно дается С++ Первый код я написал (не сам, исходя из примеров в интернете). Но вот хотел бы...

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

sizeof() с массивами - C++
Почему такие результаты? Размеры у обоих массивов одинаковые а sizeof() показывает у одного 28, а другого 32 int a = {1, 2, 3, 4, 5,...

задача с массивами - C++
написать программу , которая проверяет , представляют ли элементы введенного с клавиатуры массива возрастающую последовательность .


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

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

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