Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Составить подпрограмму нахождения минимального эле |
Автор: sasha1212 4.6.2014, 13:47 | ||
Составить подпрограмму нахождения минимального элемента в массиве А.Используя подпрограмму найти сумму s минимальных элементов массивов А,В,С из 5,4 и 6 чисел .Ввести А,В и С,вывести их и s.Программу я написал,но не уверен что правильно,помогите исправить ее
|
Автор: EgoBrain 5.6.2014, 03:45 | ||||||
С чего начать даже х3. Куча ошибок как синтаксических так и программирования, так и подхода к использованию библиотек. На пару укажу:
Идентификаторы в языке могу содержать только буквы англ алфавита, цифры и знак подчеркивания, при том начинатся с цифры не могут. А ты пробел поставил.
Цикл с пустым телом, идентификатор i нераспознан, так как не объявлен. Убери ; после заголовка цикла. Далее, одно из самых главных, ты хочешь передавать в функцию массив, в ней его формировать и использовать дальше в программе. Делаешь ты это неправильно. Передаешь копию массива это раз, во вторых неопредленного размера (тут надеюсь на комментарии местных гуру). Хочешь в подпрограмме создавать внешний объект, тогда передавай адрес, так как миссив создается во время выполнения, нужно использовать кучу, поэтому будет передаваться указатель на указатель, как то так:
Но щас наверное начнут меня материть в духе "Память должна освбождаться там же где и выделяется", но я не знаю как грамотно реализовать. Дальше даже не смотрел, ждем экспертов. |
Автор: sasha1212 5.6.2014, 07:56 |
EgoBrain, Спасибо за замечания,постараюсь исправить |
Автор: Nerevar 5.6.2014, 13:50 | ||||
Это полный бред и ложь потому, что: Когда массив используется в качестве аргумента функции, передается только адрес массива, а не копия всего массива. При вызове функции с именем массива в функцию передается указатель на первый элемент массива.(с) И соответственно само по себе имя массива это указатель на его первый элемент! Не запутывайте новичка своими ужасными указателями на указатель да ещё в таком ужастном виде! Ему и так код тяжело писать а после ваших разъяснений вообще каша в голове будет! to sasha1212 Во первых определитесь на каком языке вы пишете программу? на Си или на С++ ? библиотека conio.h яляется не безопасной плохой майкрософтовской реализации для устаревших система типа MS-DOS единствено что там полезно это _getch() но для него есть множество альтернатив ошибка в коде и понимании:
Всё что выделенно красым ошибки: Во-первых Элементы массива начинаются с нуля написав i=1 вы оставили пустой превую-нулевую ячейку и %mas[i] этим действием записали значение во вторую запись вида : i<=N означает, что вы пройдёте на 1 итерацию больше а т.к. вы работаете с массивом и у вас его адреса с 0 по 49 НЕ 50 как вы обьявили потому что счёт начинается с 0 вы выёдете за границы массива и запишите значение в чужие ячейки что приведёт к краху программы Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Составить-подпрограмму-нахождения-минимального-эле-id538ef962ae201514258b4567#findElement_E7045_53904b71ae20153506b6e9aa_0 |
Автор: Nerevar 5.6.2014, 16:09 | ||||||||||||
Я уже не знаю сколько миллионов раз говорилось где только можно и где только нельзя, что главная функция программы обязана возвращать результат нулевой результат означает успешное выполнение программы...ну и далее по тексту об этом обязаны знать абсолютно все и каждый кто хоть раз в жизни видел Си или С++ исправьте на:
Сама расстановка скобо не говоря уже про форматирование настолько ужасна, что не поймёшь где ф-ция main заканчивается.... если вы в глобальной области объявили функции не стоит пихать их реализацию внутрь main !
шутки не понял, компилятор тоже не понял! после return 0; относящегося к int main(void) ничего не должно быть это свидетельство конца программы после инструкции return 0; ничего выполняться не будет, программа завершается! Это ёб***й стыд основы основ!!!
про логику поиска минимального значения вообще молчу её тут нет попытайтесь ну хоть самые элементарные азы почитать! сортировки это основа основ гугл вам в помощь!
чтобы передать в ф-цию размерность массива простым хорошим способом для новичков будет:
ну а дальше всё те же ошибки в общем как говорится учите мат.часть Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Составить-подпрограмму-нахождения-минимального-эле-id538ef962ae201514258b4567#findElement_E7045_53906bffae20153d29b6e6a1_0 |
Автор: sasha1212 5.6.2014, 19:52 |
Нэраварин, Пишу на Си,знаю что надо начинать с i=0,но в универе нас заставлять пока начинать с 1.Попробую учесть ваши замечания и исправить код |
Автор: EgoBrain 6.6.2014, 02:51 | ||||||||
Ок, товарищь великий разоблачитель, тогда скажи мне если у топикастера задача выделять память в подпрограмме с дальнейшем использованием в вызывающей функции (отсюда все ноги и растут), так как в ней определеятеся размер массива как ты реализуешь её (задачу) средствами языка по-другому? Во-первых массив в стеке можно объявить только указав размер, ибо это стек. Во-вторых еслит ты передашь указатель на первый элемент, то подпрограмма его не изменит, а изменит его копию, соответсвенно нужно передавать указатель на указатель.
Согласен лишь с тем что формулировка "Передавать в функцию массив" в С++ не верна. Nerevar Кто ты такой я не знаю, первый раз тебя вижу, ждём экспертов. Добавлено через 8 минут и 18 секунд
Странный подход, нас сразу приучали к отчету с 0 и в Си диалекте нужно так всегда подходить к обучению, зачем они вас лишние манипуляции с сознанием заставляют делать, не есть рациональный подход... |
Автор: Nerevar 6.6.2014, 11:40 | ||||||||||
Так в каком месте там у него эта задача выделения памяти? откуда вы этот бред вообще взяли?
я уже написал об этом ( последняя строчка кода в предидущем посте), если вам не хватает ума это понять это ваши проблемы
Вот именно после этих слов очевидно что вы бездарь и невежа не разбирающийся в предмете и смеющий утверждать то чего не знаете ....
Вчерашний школьник сегодняшний студент по умерьте свой пыл, и попытайтесь хоть, что то почитать о языке на котором вы пишите ! Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Sostavit-podprogrammu-nakhozhdeniya-minimalnogo-ele-id538ef962ae201514258b4567#findElement_E7045_53917e60ae20156167b6e8f4_0 |
Автор: JackYF 7.6.2014, 14:33 | ||
|