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

Масив - C++

Восстановить пароль Регистрация
 
Eddwardd
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 53
20.05.2010, 19:30     Масив #1
Дана матрица N*M.Найти сумму елментов черной области.(Обозначена звездочками)
Код
|*****|
| *** |
|  *  |
| *** |
|*****|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2010, 19:30     Масив
Посмотрите здесь:

Масив D[m][n] C++
масив C++
C++ Масив
масив C++
C++ масив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.05.2010, 19:35     Масив #2
по какой формле определяется черная область?
Eddwardd
0 / 0 / 0
Регистрация: 25.11.2009
Сообщений: 53
20.05.2010, 19:42  [ТС]     Масив #3
11111
01110
00100
01110
11111
Найти суму елементов, которые входят в область, которая обозначена цифрой 1.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.05.2010, 19:58     Масив #4
ну это похоже для массива N*N

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
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
const int N = 5;
 
int main(){
  srand( time(NULL) );
  int nArr[N][N];
  for( int i=0;i<N;++i ){
    for( int j=0;j<N;++j ){
     nArr[i][j] = rand() % 100 - 50;
    }
  }
  int nSum = 0, nRange = N/2+N%2;
  for( int i=0;i<nRange;++i ){
    for( int j=0;j<N;++j ){
      nSum+= nArr[i][j];
    }
  }
  for( int i=nRange;i<N;++i ){
    for( int j=0;j<N;++j ){
      nSum+= nArr[i][j];
    }
  }
  cout << nSum;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using namespace std;
 
const int N = 30;
 
int main(){
  int nArr[N][N];
  for( int i=0;i<N/2+N%2;++i ){
    for( int j=0;j<N;++j ){
      cout << ( (i<=j && i<=abs(N-1-j))?1:0 ) << " ";
    }
    cout << endl;
  }
  for( int i=N/2+N%2;i<N;++i ){
    for( int j=0;j<N;++j ){
      cout << ( (i>=j && i>=abs(N-1-j))?1:0 ) << " ";
    }
    cout << endl;
  }
}
получается

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
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 
0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.05.2010, 20:06     Масив #5
если я все правильно понял
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
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main()
{
   const int n = 5;
   const int m = 3;
 
   int a[n][m];
 
   for(int i = 0; i < n; ++i)
      for(int j = 0; j < m; ++j)
         a[i][j] = rand() % 9;
 
   for(int i = 0; i < n; ++i)
   {
      for(int j = 0; j < m; ++j)
         cout << a[i][j] << ' ';
      cout << endl;
   }
 
   int sum = 0;
   for(int i = 0, k = m; i < n; ++i, --k)
      for(int j = 0; j < k; ++j)
         if(&a[i][j] != &a[n-i-1][j])
            sum += a[i][j] + a[n-i-1][j];
         else
            sum += a[i][j];
 
   cout << "sum = " << sum << endl;
 
   system("pause");
   return 0;
}
Результат
Код
5 8 7
4 8 1
3 0 7
2 8 2
7 6 7
sum = 65
Добавлено через 53 секунды
оу нет, прошу прощения, я неправильно понял =)
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.05.2010, 20:12     Масив #6
я не представляю как при м!=н сформировать подобный масссив
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.05.2010, 20:13     Масив #7
Цитата Сообщение от alex_x_x Посмотреть сообщение
я не представляю как при м!=н сформировать подобный масссив
Так я думаю из условия это как факт
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.05.2010, 20:16     Масив #8
ну нарисуйте что это будет?

***
-*-
-*-
***
?
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
20.05.2010, 20:48     Масив #9
я не видел предложение выше поэтому нарисовал обратную задачу
вот для этих размеров:
C++
1
2
   const int n = 10;
   const int m = 8;
C++
1
2
3
   for(int i = 0; i < n/2; ++i)
      for(int j = m - i - 1; j >= i; --j)
         a[i][j] = 1, a[n-i-1][m-j-1] = 1;
результат такой:
Код
1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 0
0 0 1 1 1 1 0 0
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0
0 0 1 1 1 1 0 0
0 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1
разумеется массив заранее забит нулями, но ведь не суть.. справляется вроде как с любыми размерами

надо еще только в конце на нечетность проверить и забить центральную строку

возможен ведь и такой вариант:
Код
1 1 1 1 1
0 1 1 1 0
0 0 0 0 0
0 1 1 1 0
1 1 1 1 1
Как я понимаю при неравных сторонах прямоугольника есть два варианта:
1. предположить, что массив заранее забит нулями и сдвигаться сверху и снизу к центру приравнивая к 1
2. предположить, что массив заранее забит единицами и сдвигаться слева и справа приравнивая к 0
ну как-то так ... результат будет разный
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2010, 23:24     Масив
Еще ссылки по теме:

C++ Масив
Динамический масив: записать в масив все делители числа n C++
C++ Масив на 18 действ. Упорядочить по возростанию масив

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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
20.05.2010, 23:24     Масив #10
Цитата Сообщение от fasked Посмотреть сообщение
Как я понимаю при неравных сторонах прямоугольника есть два варианта:
1. предположить, что массив заранее забит нулями и сдвигаться сверху и снизу к центру приравнивая к 1
2. предположить, что массив заранее забит единицами и сдвигаться слева и справа приравнивая к 0
ну как-то так ... результат будет разный
это должно быть четко оговорено в задании, а то никак не понять, а метод заполнения неплох
Yandex
Объявления
20.05.2010, 23:24     Масив
Ответ Создать тему
Опции темы

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