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

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

Войти
Регистрация
Восстановить пароль
 
morAlex
9 / 9 / 0
Регистрация: 06.01.2011
Сообщений: 73
#1

Найти суммы элементов, расположенных по периметру и записать их в массив - C++

07.03.2011, 21:23. Просмотров 1015. Ответов 3
Метки нет (Все метки)

задача
Найти суммы элементов, расположенных по периметру и записать их в массив, если размерность исходной матрицы четная, то получить mas[n/2], если нечётная то mas[n/2+1].

Проблема в цикле:
C++
1
2
3
4
5
6
7
8
9
10
for(k=0;k<p;k++)
{
for(i=k;i<n-k;i++)
{
sum1+=*(*(m+i)+k)+*(*(m+i)+n-1-k);
}
for(j=k+1;j<n-1-k;j++)
{
sum2+=*(*(m+k)+j)+*(*(m+n-1-k)+j);
}
Если матрица чётная, всё нормально, а если нечётная, то на последнем периметре происходит удвоение суммы.
Ребят найдите ошибку.
Заранее благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2011, 21:23     Найти суммы элементов, расположенных по периметру и записать их в массив
Посмотрите здесь:

Двумерный массив: вычислить сумму элементов, которые стоят по периметру матрицы C++
Массив: Найти сумму элементов массива, расположенных между первым и последним отрицательными элементами. C++
C++ Дан массив A(n,n). Найти сумму всех его элементов, расположенных выше диагонали, противоположной главной
C++ Дан массив A[5,5]. Найти минимальный элемент среди элементов, расположенных в нечетных строках массива
C++ В квадратной матрице С(6*6)найти сумму элементов, находящихся по периметру
C++ Массив. Найти сумму элементов, расположенных на главной диагонали
Ввести двумерный массив A(N×N) , вывести его. Найти сумму положительных элементов расположенных в части массива одновременно C++
Одномерный массив. Найти произведение элементов массива, расположенных между максимальным и минимальным элементами C++
Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 записать суммы элементов по с C++
Найти сумму элементов, лежащих по периметру квадратной матрицы C++
Найти количество расположенных последовательно положительных элементов, которыми заканчивается массив C++
Массив: Найти количество элементов, расположенных перед первым минимальным. C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
07.03.2011, 22:35     Найти суммы элементов, расположенных по периметру и записать их в массив #2
Последний периметр в нечетной матрице - это ее центральный элемент.
Предлагается и для четной и для нечетной считать одинаково - до n/2, а потом для нечетной - отдельно выводить последний периметр, то бишь центральный элемент.
morAlex
9 / 9 / 0
Регистрация: 06.01.2011
Сообщений: 73
08.03.2011, 09:12  [ТС]     Найти суммы элементов, расположенных по периметру и записать их в массив #3
Цитата Сообщение от IrineK Посмотреть сообщение
Последний периметр в нечетной матрице - это ее центральный элемент.
Предлагается и для четной и для нечетной считать одинаково - до n/2, а потом для нечетной - отдельно выводить последний периметр, то бишь центральный элемент.
А каким циклом это сделать?
IrineK
Заблокирован
08.03.2011, 12:51     Найти суммы элементов, расположенных по периметру и записать их в массив #4
Опять же, для статического массива - надеюсь, в динамический переведете:
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
#include <iostream>
#include <time.h>
#define LEN 20
using namespace std;
 
int main()
{
        int i,j,k, DIM;
        int A[LEN][LEN];
        int B[LEN/2+1];
        srand(time(NULL));
 
 
        cout<<"Input the dimension to work: DIM<=20\t";
        cin>>DIM; //фактическая размерность
 
        for(i=0;i<DIM;i++)
        {       for(j=0;j<DIM;j++)
                {       A[i][j]=rand()%10+1;
                        cout<<A[i][j]<<"  ";
                }
        cout<<endl;
        }
 
for(k=0;k<DIM/2;k++) //для размерности любой четности (общая часть)
{       B[k]=0;
        for(i=k;i<DIM-k;i++)
                B[k]+=A[i][k]+A[i][DIM-1-k];
        for(j=k+1;j<DIM-1-k;j++)
                B[k]+=A[k][j]+A[DIM-1-k][j];
        cout<<B[k]<<"; ";
}
 
if(DIM%2) //если размерность нечетная
{
    B[DIM/2]=A[DIM/2][DIM/2];
    cout<<B[DIM/2];
}
        return 0;
}
Yandex
Объявления
08.03.2011, 12:51     Найти суммы элементов, расположенных по периметру и записать их в массив
Ответ Создать тему
Опции темы

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