Имя: Пароль:
IT
 
задачка на С++
0 men47
 
20.12.12
09:06
Здравствуйте, есть задачка вот такая

Дана целочисленная квадратная матрица. Определить:
•    произведение элементов в тех строках, которые не содержат отрицательных элемен-тов;
•     отсортировать по возрастанию строку с минимальной суммой среди сумм элементов строк матрицы.

не могу никак додумать 2 задание (отсортировать)

была мысль через 1-номерный массив
/////////////////////////////////////////////////////////////////
y=0;
   for (i = 1; i <= n; i++) {
       y = 0;
       for (j = 1; j <= m; j++) {
           y = a[i][j] + y;
       }
       c[i] = y;
   }
   printf("\n");
/////////////////////////////////////////////////////////////////
но не могу додумать как их выравнивать=)) подкиньте идейку=) пожалуйста
1 Mikeware
 
20.12.12
09:10
школота поперла....
2 Ёпрст
 
20.12.12
09:11
И кто тут про алгоритмические задачки спрашивал ?
ЗЫ: ©NS был в чем то прав, на счет сортировки
3 zak555
 
20.12.12
09:13
(0) массивы начинаются с индекса 0
4 men47
 
20.12.12
09:13
(1) я не тот тип, чтобы агрится, но если ты умом не блещешь, и кроме как "школота поперла..." предложить ничего не можешь... не флуди, пожалуйста
5 zak555
 
20.12.12
09:14
(1) почему школота ?
в нике год рождения
6 Undefined vs NULL
 
20.12.12
09:15
(5) у тебя?
7 men47
 
20.12.12
09:15
(3) ну да это я знаю....

я делал как то задачку на счет повторения элементов, но там проще было.... закидываем в 1-номерный массив сколько повторяется... и потом выравниваем по этим цифрам... а тут, что-то пока не могу додумать...
8 zak555
 
20.12.12
09:17
(6) у автора
9 Undefined vs NULL
 
20.12.12
09:18
10 zak555
 
20.12.12
09:28
> но не могу додумать как их выравнивать

что выравнивать ?
11 SeregaMW
 
20.12.12
09:30
(0) Тут спецов по Си пруд пруди!
12 dmpl
 
20.12.12
09:32
(0) Создай структуру из указателя на строку массива и суммы строки. Создай массив из этих структур. Вычисли сумму строк, заполни массив структур этой суммой, найди среди них строку с минимальной суммой. Воспользовавшись указателем на строку отсортируй строку.
13 ковер
 
20.12.12
09:32
(0) а куле там массив сортировать, пузырьковую сортировку юзай, самая легкая.
14 ковер
 
20.12.12
09:34
(12) зачем такой огород городить?
15 zak555
 
20.12.12
09:34
(12) зачем структура указателей ?
16 dmpl
 
20.12.12
09:35
(14) Дык тебе сначала надо найти строку с минимальной суммой, и только потом ее сортировать.
17 dmpl
 
20.12.12
09:35
(15) Так изящнее.
18 ковер
 
20.12.12
09:35
(16) мне ненужно искать это нужно ТС
19 ковер
 
20.12.12
09:38
(17) нужно в программировании применять принцип KISS - keep it simple stupid что означает "делай проще дурачок"
20 dmpl
 
20.12.12
09:39
(19) Это задачка не для практики, а чтобы показать знание языка. Тут надо как раз использовать как можно больше его возможностей.
21 Mikeware
 
20.12.12
09:57
(5) потому, что школота. Тупые студенты, у которых не хватает ума почитать учебник, и не хватает фантазии представить расположение объектов массива в памяти...
зы. в карточке у него год рождения...
(4) Эта задача решается в уме, в 17 строк. Только решение я выкладывать, естественно, не буду, потому как стране нужны _рабочие_ руки, а армии нужны солдаты...
22 zak555
 
20.12.12
10:37
(21) сортировку в вузах проходят ? о_О
23 ковер
 
20.12.12
10:43
(21) давай свое решение
25 ковер
 
20.12.12
10:45
(22) "сортировку в вузах проходят ?" для тебя стало это откровением?
26 Mikeware
 
20.12.12
10:53
(22) По-идее, да. в разделе оценки сложности алгоритмов.
27 dmpl
 
20.12.12
10:56
(24) А как же KISS? Почему не выделил второй цикл фигурными скобками? Опять же, зачем summa обнулять в конце цикла, а не в начале?
28 Mikeware
 
20.12.12
10:56
(23) не обессудь, твое решение я удалил. ибо пусть ТС доходит своим умом, или миздует в армию...
29 sda553
 
20.12.12
10:57
(24) Слишком тупо. Хочется какой то изюминки в решении.
30 sda553
 
20.12.12
10:58
(28) Вообще то в армию ходят все независимо от ума.
31 ковер
 
20.12.12
11:01
(27)(29) главное работает :)
(28) я хотел помочь человеку
32 zak555
 
20.12.12
11:02
(25) я думал, что в школе это изучают
33 Mikeware
 
20.12.12
11:02
(27) 1. а смысла нет - все равно в цикле один оператор. его можно даже в сам оператор цикла загнать, в приращение.
2. непринципиально.
(30) институты сейчас - в основном не для образования, а для законного уклонения от армии...
34 Mikeware
 
20.12.12
11:04
(32) в школе - только пузырек. да и то, излишество - это в школе учить... Только как факультатив....
35 ковер
 
20.12.12
11:05
(32) не звезди не учат в школе сортировку.
36 Ёпрст
 
20.12.12
11:06
(35) та ну ?
всё проходят и функции сложности алгоритма в том числе.
37 Ёпрст
 
20.12.12
11:06
по крайней мере, в 9 классе у нас было это всё
38 dmpl
 
20.12.12
11:07
(29) Ну, изюминку я в (12) описал. Хотя можно еще круче сделать - создать класс сортировки всех строк матрицы, на основании этого класса создать дочерний класс сортировки строки с минимальной суммой. Ну и т.д. и т.п., насколько фантазии хватит.

(33) Дык выше речь шла про KISS, а отсутствие скобок и обнуление суммы в конце цикла уменьшает читаемость кода и повышает вероятность ошибки. Не зря во многих правилах оформления кода специально указывается использовать фигурные скобки даже когда этого не требуется, чтобы выделить логический блок. В т.ч. и когда в цикле всего 1 строка.

Кроме того, если компилятор не очень умный, то 2 инициализации - это 2 кода инициализации + значение типа int в сегменте data, которое будет храниться в исполняемом файле.
39 zak555
 
20.12.12
11:08
(26) я таких дисциплин не слышал
40 zak555
 
20.12.12
11:08
(28) может человек после армии пришёл, поступил в вуз, а тут затык
41 zak555
 
20.12.12
11:09
(37) это в каком году ?
42 ковер
 
20.12.12
11:11
(38) зачем фигурные скобки в цикле если один оператор? или ты меня щас просто обос.рать хочешь? выложи свое крутое изящное решение.
43 Ёпрст
 
20.12.12
11:11
(41) я так сразу и не вспомню.
ЗЫ: физмат школа была, урок информатики
:))
44 ковер
 
20.12.12
11:12
(43) не все в физматах учились :) в обычной школе не проходят, это факт.
45 zak555
 
20.12.12
11:12
(43) при каком вузе ?
46 zak555
 
20.12.12
11:13
(44) в обычных школах не у всех была информатика
47 ковер
 
20.12.12
11:14
(46) у тебя когнитивный диссонанс см(32)
48 Ёпрст
 
20.12.12
11:14
(44) да проходят, информатика есть у всех.
Примитив с массивами и сортировками у всех есть..
49 badboychik
 
20.12.12
11:15
а у нас на первом уроке информатики в 11 классе была такая задача: поменять у двух переменных значения, без использования третьей
50 zak555
 
20.12.12
11:15
(47) у меня не было в школе, у других была -- видел их учебник - там была сортировка
51 dmpl
 
20.12.12
11:19
(42) Затем, что по идеологии KISS надо. Иначе stupid может посчитать, что там и if () выполняется в том же цикле, что и суммирование. Особенно при таком стиле проставления скобок (когда открывающая и закрывающая скобки находятся на разных позициях по горизонтали).

P.S. Если бы я хотел обос.рать - то в первую очередь обратил бы внимание на использование константы 5 в стольких местах, вместо 2 переменных или же вместо #define'ов, определяющих размеры массива. Ведь если массив станет 6x6 - в твоем коде придется в 7 местах одни и те же изменения вносить. Т.е., имеем грубейшее нарушение правил написания расширяемых программ. Но поскольку в данном случае на понимание это не влияет - я и не указал на это.
52 ERWINS
 
20.12.12
11:25
Фон Нейман у меня 20 докторов наук которые могут доказать корректность, сходимость и универсальной пузырьковой сортировки и нет ни одного человека который может ее реализовать...
53 ERWINS
 
20.12.12
11:26
(9) быстрая сортировка это туфта... ее уже много лет никто не применяет
54 Mikeware
 
20.12.12
11:27
(42) ну какое в задницу "изящное решение" у примитивнейшей задачи?
кроме единственного простого - остальные уже усложненные и извращенные.
55 Mikeware
 
20.12.12
11:28
(53) во как?
56 ERWINS
 
20.12.12
11:29
(55) да... в худшем случае у нее производительность квадрат... и такой случай не редкость
57 bolder
 
20.12.12
11:36
(0) А вот зачем вам еще один массив вводить?Неужели не понятно, что нужно найти лишь индекс строки где сумма минимальна?
58 dmpl
 
20.12.12
11:39
(57) На будущее - вдруг потребуется сортировка по сумме строк ;)
59 Mikeware
 
20.12.12
11:44
(56) вообще-то, нужно знать, когда и что применять..
для того, собственно, и изучают разные способы сортировки.
например, в дизассемблировании для разбора ссылок квиксорт показывает лучшие результаты. а для сортировки событий в коечном автомате мне хватает пузырька...
60 Mikeware
 
20.12.12
11:45
(58) усовершенствованный метод гаусса.... :-)
61 zak555
 
20.12.12
11:54
> была мысль через 1-номерный массив

надо вводить массив размерностью [n][1][1][1]
1 - номер строки исходного массива
2 - сумма строки исходной матрицы
3 - флаг, когда в исходной строке нет отрицательных телемостов
4 - произведение элементов строки
62 sda553
 
20.12.12
15:14
(61) Просто три к любой размерности добавить колонки добавить.
Я бы при решении 2 написал бы
matrix->SortLine(Matrix->GetLineWithMinSum());
А потом бы придумал все остальное.
63 HeroShima
 
20.12.12
15:18
белый и пушистый..
64 program1Cer
 
20.12.12
15:29
(54) Может. Решить за минимальное количество итераций например =)
65 Mikeware
 
20.12.12
15:46
(64) это уже дополнительные требования, типа "миимальное количество итераций", "максимальное быстродействие", "минимальный объем занимаемой памяти", использование специфических библиотек, минимальное использование памяти данных, работа с комплексными числами, и многия, многия, многия...