Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2013, 21:19   #1
GreeNYA
 
Регистрация: 18.04.2011
Сообщений: 5
По умолчанию Поиск строк с минимальной суммой модулей поэлементной разницы

Дан двумерный массив.
Надо вывести строку, в которой имеется минимальная сумма модулей поэлементной разницы.

В принципе, самое сложное (имхо), я реализовал, но на простом затупил. А именно: как же блин после всех вычислений вывести номер строки с минимальной суммой?

Код:
// Поиск строк с минимальной суммой модулей поэлементной разницы
void SearshStringsWithMinSumMod(int M, int N, int A[M][N])
{
int i,j,SumInRow,SumInCol;
   for (i=1; i<=M; i++) {
      SumInRow=0;
      for (j=2; j<=N; j++) {
         SumInCol=abs(A[i][j]-A[i][j-1]);
         printf("|[%d][%d]-[%d][%d]|=|%d-%d|=%d\n", i,j-1,i,j,A[i][j-1],A[i][j],SumInCol);
         SumInRow=SumInRow+SumInCol; }
      printf("Сумма модулей в строке %d: %d\n", i,SumInRow);puts(" "); }
}
Вроде как все работает:
Цитата:
Был выбрал АВТОМАТИЧЕСКИЙ способ заполнения массива размером 3x3
Исходный массив:

61 18 99
65 48 17
42 55 49

|[1][1]-[1][2]|=|61-18|=43
|[1][2]-[1][3]|=|18-99|=81
Сумма модулей в строке 1: 124

|[2][1]-[2][2]|=|65-48|=17
|[2][2]-[2][3]|=|48-17|=31
Сумма модулей в строке 2: 48

|[3][1]-[3][2]|=|42-55|=13
|[3][2]-[3][3]|=|55-49|=6
Сумма модулей в строке 3: 19
А как сделать поиск строки с минимальной SumInRow и вывод ее номера?
GreeNYA вне форума Ответить с цитированием
Старый 16.11.2013, 21:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
{
int i,j,SumInRow,SumInCol,smin,rmins=0;
   for (i=1; i<=M; i++) {
      SumInRow=0;
      for (j=2; j<=N; j++) {
         SumInCol=abs(A[i][j]-A[i][j-1]);
         printf("|[%d][%d]-[%d][%d]|=|%d-%d|=%d\n", i,j-1,i,j,A[i][j-1],A[i][j],SumInCol);
         SumInRow=SumInRow+SumInCol; }
      printf("Сумма модулей в строке %d: %d\n", i,SumInRow);puts(" "); }
      if(i==1 || smin<SumInRow){smin=SumInRow;rmins=i;}
}
      printf("Минимальная строке %d: %а\n", rmins,smins);
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2013, 22:39   #3
GreeNYA
 
Регистрация: 18.04.2011
Сообщений: 5
По умолчанию

Спасибо!

Вот, поправил чутка, теперь отлично работает.

Код:
{
int i,j,SumInRow,SumInCol,Smin=0,Rmins=1;
   for (i=1; i<=M; i++) {
      SumInRow=0;
      for (j=2; j<=N; j++) {
         SumInCol=abs(A[i][j]-A[i][j-1]);
         printf("|[%d][%d]-[%d][%d]|=|%d-%d|=%d\n", i,j-1,i,j,A[i][j-1],A[i][j],SumInCol);
         SumInRow=SumInRow+SumInCol; }
      printf("Сумма модулей в строке %d: %d\n", i,SumInRow);puts(" ");
      if((i==1)||(Smin>SumInRow)) { Smin=SumInRow;Rmins=i; } }
      printf("Минимальная сумма в строке %d: %d\n", Rmins,Smin);
}
GreeNYA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести на экран номер строки с максимальной суммой элементов и номер столбца с минимальной суммой? Vetal888888 C# (си шарп) 4 20.12.2011 13:46
Как найти наименьшее из значений элементов столбца, который обладает наибольшей суммой модулей элементов INFINITIFX Общие вопросы C/C++ 2 11.11.2010 09:55
Поиск минимальной стоимости GBTA Общие вопросы C/C++ 1 10.07.2010 11:17
Составить подпрограмму определения номеров строк матрицы с минимальной и максимальной характеристиками VNS Помощь студентам 0 08.12.2009 17:53
Составить подпрограмму определения номеров строк матрицы с минимальной и максимальной характеристиками VNS Помощь студентам 0 05.12.2009 20:34