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

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

Войти
Регистрация
Восстановить пароль
 
RomaJkaa
Сообщений: n/a
#1

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

08.01.2010, 21:04. Просмотров 334. Ответов 4
Метки нет (Все метки)

Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы 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++
Происходит аварийное завершение программы, не могу найти причину. Вроде бы все правильно но не работает. Ниже есть задание для программы. ...

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

Задача на двумерные массивы (найти ошибку) - C++
На строчке где, по-идее, программа должна делать замену Dev-C++ пишет ошибку. Помогите разобраться, пожалуйста. /* Дана...

нужно найти ошибку в программе с++ на двумерные массивы - C++
void task_1(int** A, int M ) { int i, j; double sum=0; bool flag=0; printf(&quot;\n1 задание: &quot;); for(i=0; i&lt;M; i++) for(j=0;...

Двумерные массивы. Найти сумму элементов и максимум - C++
Очень нужно решить вот эту здачку: Дано двумерный массив размерами nxn. У строчках с отъемлемыми елементами на главной диагонали найти...

Не могу найти ошибку в коде, двумерные и одномерные массивы - C++
# include &lt;iostream.h&gt; # include &lt;iomanip.h&gt; # include &lt;conio.h&gt; # include &lt;fstream.h&gt; # define m 10 # define n 5 # define k 50...

Двумерные массивы. Найти количество положительных элементов в каждой строке массива - C++
Задан двумерный массив действительных чисел m на n. Элементы массива инициализируются или вводятся с клавиатуры. Найти количество...

Двумерные массивы : найти сумму 1ого и 2ого массивов и записать их в третий - C++
Даны два двумерных массива(различных между собой) размерностью N*M, найти сумму 1ого и 2ого массивов и записать их в третий. Третий массив...

Двумерные массивы. Найти количество положительных элементов в каждой строке массива - C++
Задан двумерный массив действительных чисел a на b. Элементы массива инициализируются или вводятся с клавиатуры. Найти количество...

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


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

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

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