Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [C] Поиск числа с максимальной суммой цифр |
Автор: Denzel666 22.12.2006, 01:08 |
Запарка ...Хелпаните... Вывести на на экран эелементы массива целых чисел, имеющих максимальную сумму цифр... |
Автор: Kuvaldis 22.12.2006, 01:21 | ||
|
Автор: Denzel666 22.12.2006, 02:53 |
Запарка ...Хелпаните... Вывести на на экран эелементы массива целых чисел, имеющих максимальную сумму цифр... [Язык Си] |
Автор: doomik 22.12.2006, 14:57 | ||
|
Автор: Denzel666 23.12.2006, 00:25 | ||||
А можно без функций попроще...И если не сложно с комментариями Добавлено @ 00:30
И что в вашем понимании протатип фцнкции? |
Автор: paSha_X 23.12.2006, 03:07 |
Denzel666, Ну ты даёшь, хоть бы книжку открыл глянул немного, хоть что чем называется знать, ладно уже решать, ну хоть понимать.......толку задачи тогда эти делать........ |
Автор: V.A.KeRneL 23.12.2006, 10:32 | ||||||
Мне кажется, чтобы просто сдать!.. ![]()
Да и магические числа тоже... ![]() |
Автор: apook 23.12.2006, 12:08 | ||
надеюсь по столбцам не надо искать |
Автор: Dov 23.12.2006, 13:14 |
Не только по столбцам, но и по строкам тоже не надо. apook, ты хоть читай, о чём речь идёт. ![]() |
Автор: doomik 23.12.2006, 15:27 | ||||||||||||||
Меня не учили сам учился ![]() У меня всё скомпилилось без ошибок( gcc ) Попробывал через MinGW Developer Studio тоже скомпилилось только переменная Max выдаёт странное число. Тогда я заменил старую функцию на эту функцию и всё бегает.
Microsoft Visual C++ 6.0 - Выдал 3 ошибки
И все они на 9 строке --> т.е там где я и создавал массив. Вот это упрямое существо не могу заставить компилить ![]()
Почему магические ![]() Denzel666
Можно.
Пробывал компилить под MinGW Developer Studio всё бегает но в Microsoft Visual C++ 6.0 опять проблемы с массивом ![]() Я считаю вариант с функцией был лучше но это моё мнение ![]()
В книжке всё должно быть расписано ![]() |
Автор: Dov 23.12.2006, 16:08 |
Дело в том, что размер статического массива должен быть известен во время компиляции. Позтому он должен быть константой. Как оно могло у тебя работать, я диву даюсь. ![]() |
Автор: Denzel666 24.12.2006, 01:07 |
Задачу не поняли наверно... Нужно например в массиве a{34.56.789.32.987} вывести 3 и 5-й элементы-a[2]=789 и a[4]=987...Потому что сумма цифр их в массиве является максимальной-24(7+8+9)... |
Автор: Pete 24.12.2006, 16:46 |
Что-то http://forum.vingrad.ru/topic-128282/kw-%F1%F3%EC%EC%E0-%F6%E8%F4%F0-%EC%E0%F1%F1%E8%E2%FB.html много... |
Автор: Dov 24.12.2006, 18:50 |
Denzel666, ты сам её не понял, даже после того, как Pete тебе решение выложил в дубликате твоей темы. |
Автор: Alexeis 24.12.2006, 18:58 | ||
|
Автор: adejneka 24.12.2006, 21:31 | ||||||
Объявления переменных, перемешанные с операторами, и массивы переменной длины допускаются в ISO C99. |
Автор: Dov 24.12.2006, 22:52 |
ISO C99 фтопку ![]() |
Автор: V.A.KeRneL 25.12.2006, 11:12 |
Конечно, НЕТ! Но и использовать такие новомодные фишки, забивая на предыдущий стандарт и версию компилятора, как это делает doomik, я слитаю, тоже НЕправильно. Потому как, например, лучший GCC для чистого C -- 2.95. |
Автор: V.A.KeRneL 28.12.2006, 15:57 | ||||||
Есть такой термин: «магическое число». Это такие числа, которые употребляются в программе, хотя естественно не должны, т.к. ничего не говорят сами по себе о природе своего происхождения. Их надо заменять на «символьные константы». Например, в данном случае, лучше было бы написать не
, а
, предварительно подключив <limits.h>. И тогда бы ты, как раз, не ошибся на единичку: INT_MIN == -2,147,483,648, а не -2,147,483,647. |
Автор: Denzel666 29.12.2006, 00:28 |
Спасиба за ответы... |
Автор: Rockie 29.12.2006, 18:43 | ||
?! ![]() интересно, где такой массив создастся? в стеке? adejneka, а как это? |
Автор: V.A.KeRneL 29.12.2006, 19:14 |
adejneka, Вы не совсем корректно выразились и, поэтому, вполне логично, что некоторые Все превратно поняли. Правильно было бы написать, что стандарт C99 допускает не «массивы переменной длины», а «массивы, длина которых [при инициализации] задаётся переменной». |
Автор: Rockie 29.12.2006, 20:45 | ||
V_A_KeRneL, ну да, из примера понятно о чем речь. adejneka, а можно ссылку? мне действительно непонятно, где создастся такой массив. |
Автор: adejneka 29.12.2006, 22:19 | ||||||
Массивы, длина которых задается неконстантным выражением, создаются в стеке. Во многих старых компиляторах С была псевдофункция alloca, делавшая примерно то же самое (для одномерных массивов), но с другим синтаксисом:
Этот код на моей машине транслируется в
Операторы, перемешанные с объявлениями:
|
Автор: Rockie 30.12.2006, 21:29 |
adejneka, чудеса прям ![]() |
Автор: Pete 30.12.2006, 22:25 |
Ее использование не одробряется (http://www.opennet.ru/man.shtml?topic=alloca&russian=0&category=&submit=%F0%CF%CB%C1%DA%C1%D4%D8+man) |
Автор: Rockie 30.12.2006, 23:41 | ||
вот-вот. если честно, непонятно как она вообще работает. память ведь для процесса imho отводится заранее
|
Автор: adejneka 31.12.2006, 08:35 | ||
Надеюсь, под "памятью для процесса" Вы имеете в виду "фрейм стека для вызова функции", а не "кучу для процесса"? На x86 `alloca' можно реализовать, например, так: фрейм стека разбивается на две части - статическую, содуржащую локальные переменные, и динамическую. Статическая часть размещается в начале фрейма, указатель на ее начало помещается в EBP. Динамическая часть размещается после статической, указатель на ее конец помещается в ESP. `alloca' уменьшает ESP и возвращает его новое значение. Доступ к аргументам функции и локальным переменным осуществляется с фиксированным на этапе компиляции смещением от EBP. |
Автор: Rockie 1.1.2007, 22:27 | ||||||
с кучей понятно, вроде такие массивы и называются динамическими. А имею в виду вот этот:
а к примеру так случайно нельзя по стандарту ISO C99 делать?
В любом случае сведения очень интересные, за что и дал по репе ![]() |