Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Как расчитать сумму для каждой строки массива

Ответить
Настройки темы
C/C++ - Как расчитать сумму для каждой строки массива

Новый участник


Сообщения: 14
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Вот функция, которая cчитает сумму модулей элементов матрицы, которые находятся после первого положительного элемента.
Вопрос : как сделать так, чтобы считало отдельно для каждой строки, и не учитывало этот самый первый положительный элемент?

Код: Выделить весь код
int sumofmodules( int **s, int rows, int columns )
{
    int sum = 0;
 
    for ( int i = 0 ; i < rows ; i++ )
        for ( int j = 0 ; j < columns ; j++ )
        {
            if (s[i][j] > 0)
            {
 
                break;
            }
        }
    for (int i = 0 ; i < rows ; i++)
        for(int j = 0 ; j < columns ; j++)
        {
            sum+=abs(s[i][j]);
        }
    return sum;
}

Отправлено: 01:32, 17-12-2012

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


pashazt,
Цитата pashazt:
Вот функция, которая cчитает сумму модулей элементов матрицы, которые находятся после первого положительного элемента. »
Она этого не делает.
Цитата pashazt:
for ( int i = 0 ; i < rows ; i++ )
for ( int j = 0 ; j < columns ; j++ )
{
if (s[i][j] > 0)
{
break;
}
} »
Находит первый положительный элемент, после чего прерывает вычисления, правда не понятно какого цикла.
А второй цикл:
Цитата pashazt:
for (int i = 0 ; i < rows ; i++)
for(int j = 0 ; j < columns ; j++)
{
sum+=abs(s[i][j]);
}
return sum; »
Делает все тоже самое. Т.е. с нова здорово, с нуля и по всем полям.
Цитата pashazt:
как сделать так, чтобы считало отдельно для каждой строки, и не учитывало этот самый первый положительный элемент? »
Объединять циклы и добавлять условия.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:49, 17-12-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Передавать в функцию нужно одномерный массив - построчно.
Делать надо в одном цикле.
break заменить на continue

Код: Выделить весь код
...
  const int rows = 3;  
  const columns = 4;

  int array[rows][columns] = {0};

  for(int i = 0; i < rows; i++)
     cout << sumofmodules(array[i], columns);
...

int sumofmodules(int array[], int column)
{
   int total = 0;
   for(int i = 0; i < column; i++){
      // Сюда исключение
      // чтобы считало отдельно для каждой строки, и не учитывало этот самый первый положительный элемент?
      total += array[i];
     }

 return total;
}

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Последний раз редактировалось Drongo, 17-12-2012 в 22:21. Причина: Исправил опечатку


Отправлено: 22:01, 17-12-2012 | #3


Новый участник


Сообщения: 14
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот функция которая считает сумму элементов матрицы, после первого положительного элемента.

1) можно ли сделать так, что бы она считала суму не во всей матрице, а в каждой строчке?
2) зачем там true i false?
3) что в конце означает BlackAndBlue = -1?

Код: Выделить весь код
int sumofmodules( int **s, int rows, int columns )
{
 
        int sum = 0;
        bool isEnought = false;
 
        int DontGo = 0;
        int BlackAndBlue = 0;
 
        for ( int i = 0; i < rows && !isEnought ; i++ )
                {
                        for ( int j = 0; j < columns ; j++ )
                                {
                                        if (s[i][j] > 0)
                                                {
                                                        DontGo = i;
                                                        BlackAndBlue = j;
                                                        isEnought = true;
                                                        break;
                                                }
                                }
                }
 
        for (int i = DontGo; i < rows ; i++)
                {
                        for(int j = ++BlackAndBlue; j < columns ; j++)
                                {
                                        sum += abs(s[i][j]);
                                }
                        BlackAndBlue = -1;
                }
return sum;
 
}

Отправлено: 00:30, 21-12-2012 | #4


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


pashazt, У меня несколько вопросов:
  1. Кто писал данную программу?
  2. Какой логикой он при этом руководствовался?
  3. Какие проверочные матрицы обрабатывались?
  4. Что сам автор говорит по поводу введенных им новых переменных и алгоритма решения задачи?
  5. Почему программа не решает поставленной задачи?
  6. Зачем надо было создавать новую тему, когда можно было продолжить в старой?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:30, 21-12-2012 | #5


Пользователь


Сообщения: 121
Благодарности: 35

Профиль | Отправить PM | Цитировать


Цитата pashazt:
int j = ++BlackAndBlue; »
Засунуть инкремент внутрь операции с присваиванием - очень плохая идея. В порядке выполнения операций тут разобраться весьма непросто.
Так как этот момент неочевиден, немного поясню. Операция
Код: Выделить весь код
++BlackAndBlue
не равносильна выражению
Код: Выделить весь код
BlackAndBlue + 1
На самом деле она равносильна выражению
Код: Выделить весь код
BlackAndBlue = BlackAndBlue + 1

Отправлено: 16:00, 21-12-2012 | #6


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Да можно было проще пояснить
Код: Выделить весь код
// Сначала идёт прибавление на единицу BlackAndBule, потом присваивание
int count = ++BlackAndBlue; 

// Сначала идёт присваивание, а потом прибавление на единицу
int count = BlackAndBlue++;

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 18:20, 21-12-2012 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Как расчитать сумму для каждой строки массива

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] цикл для каждой строки из файла rudimko Скриптовые языки администрирования Windows 15 25-10-2012 09:46
Разное - Добавление имени файла в начало каждой строки. CkapHa Программирование и базы данных 2 02-01-2012 22:13
CMD/BAT - [решено] Разобрать txt, на строки и назначить каждой переменную campbell Скриптовые языки администрирования Windows 6 26-11-2011 01:32
.NET - [решено] Определить и записать смещение каждой строки S.T.R.E.L.O.K. Программирование и базы данных 5 15-08-2011 09:55
Получение массива из строки с числами malev AutoIt 3 11-09-2009 00:08




 
Переход