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

Найти ошибки (двумерные массивы) - C++

Восстановить пароль Регистрация
 
RomaJkaa
Сообщений: n/a
08.01.2010, 21:04     Найти ошибки (двумерные массивы) #1
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы 10 на 10 .
Найти сумму модулей элементов выше главной диагонали.

Вопрос по первой части :
1)Что-то он криво считает минимумы в углах там вроде как нужен учёт границ только я не знаю как это сделать ((
и ещё с элементами меньше нуля криво работает

если не сложно помогите

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
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
int main(){
int k,j,i,m,n,loc_min,summ;
cout << endl << endl << "vvedite kolichestvo strok : ";
cin >> m;
cout << "vvedite kolichestvo stolbcov : ";
cin >> n;
int **a = new int *[m];
for ( i = 0 ; i < m ; i++){
    a[i] = new int [n];
    }
for ( i = 0 ; i < m ; i++ ){
    for ( j = 0 ; j < n ; j++ )
        cin >> a[i][j];
    }
 
cout << endl << endl;
 
loc_min = 0;
summ = 0;
 
 
for ( i = 0 ; i < m ; i++ )
    {
    for ( j = 0 ; j < n ; j++ )
        {
        if( (i==0) && (j==0) && (a[i][j]<a[i][j+1]) && (a[i][j]<a[i+1][j]) && (a[i][j]<a[i+1][j+1]) )
            loc_min = loc_min + 1;
        else
            if( (a[i][j]<a[i-1][j-1]) && (a[i][j]<a[i-1][j]) && (a[i][j]<a[i-1][j+1]) && (a[i][j]<a[i][j-1]) && (a[i][j]<a[i][j+1]) && (a[i][j]<a[i+1][j-1]) && (a[i][j]<a[i+1][j]) && (a[i][j]<a[i+1][j+1]))
                loc_min = loc_min + 1;
        }
    }
 
cout << endl;
cout << " colichestvo localnyx minimumov v matrice : " << loc_min;
 
for ( i = 0 ; i < m-1 ; i++ )
    {
       cout <<endl << summ;
    for ( j = 1 ; j < n ; j++ )
        {
if ( i+j < n ) 
if ( a[i][j+i] < 0 )
summ = summ - a[i][j+i];
else
summ = summ + a[i][j+i];
        }
    }
cout << " summa modulei elementov, raspol. vishe glavnoi diagonali : " << summ;
getchar();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2010, 21:04     Найти ошибки (двумерные массивы)
Посмотрите здесь:

нужно найти ошибку в программе с++ на двумерные массивы C++
C++ Двумерные массивы. Найти количество положительных элементов в каждой строке массива
C++ Двумерные массивы. Найти количество положительных элементов в каждой строке массива
C++ Двумерные массивы. Найти max характеристику
Двумерные массивы. Найти ошибку в коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
09.01.2010, 09:37     Найти ошибки (двумерные массивы) #2
Цитата Сообщение от RomaJkaa Посмотреть сообщение
Найти сумму модулей элементов выше главной диагонали.
Главная диагональ бывает у квадратной матрицы. А у Вас задаются и кол-во строк и столбцов (которые могут и отличаться).
Цитата Сообщение от RomaJkaa Посмотреть сообщение
Что-то он криво считает минимумы в углах там вроде как нужен учёт границ только я не знаю как это сделать
Так у Вас проверка только на нахождение элемента в верхнем левом углу:

Цитата Сообщение от RomaJkaa Посмотреть сообщение
if( (i==0) && (j==0) && (a[i][j]<a[i][j+1]) && (a[i][j]<a[i+1][j]) && (a[i][j]<a[i+1][j+1]) )
loc_min = loc_min + 1;
По такой же аналогии нужно сделать еще семь проверок: верхний край, верхний правый угол, правый край и т.п.

Цитата Сообщение от RomaJkaa Посмотреть сообщение
Найти сумму модулей элементов выше главной диагонали.
По секрету скажу, что у вас суммируются и элементы ниже главной диагонали.
А насчет модулей: есть такая функция abs(). Только не забудьте подключить: #include<math.h>
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
09.01.2010, 09:51     Найти ошибки (двумерные массивы) #3
Цитата Сообщение от valeriikozlov Посмотреть сообщение
По секрету скажу, что у вас суммируются и элементы ниже главной диагонали.
А насчет модулей: есть такая функция abs(). Только не забудьте подключить: #include<math.h>
А для abs() math.h не нужен, насколько я знаю
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
09.01.2010, 09:58     Найти ошибки (двумерные массивы) #4
Цитата Сообщение от Darky Посмотреть сообщение
А для abs() math.h не нужен, насколько я знаю
Иногда нужен. Например для VS 2008 не нужен. А для VC++ 6.0 нужен. (с другими компиляторами не работаю, поэтому об остальных компиляторах не могу сказать).
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
09.01.2010, 11:11     Найти ошибки (двумерные массивы) #5
RomaJkaa, для локальных минимумов можно завести отдельную матрицу, размерностью на 2 больше, и на границах выставить +бесконечность, и не надо учета границ
Yandex
Объявления
09.01.2010, 11:11     Найти ошибки (двумерные массивы)
Ответ Создать тему
Опции темы

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