![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
max29 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.4.2016 Репутация: нет Всего: нет |
Вот программа:
У меня пару вопросов: что делает код на строке 5(т.е. в чём смысл присваивать значению по адресу "а"----- (new float[n]) когда самому (new float[n]-у) ничего не присваивается если ошибаюсь поправьте меня). И почему программа не работает как надо? что не так написано? Желательно наглядно показать в правильном виде программы. Буду благодарен. Вот задача по этой программе: Написать прог-му. для вещественного массива из (n) элементов определяющую сумму его элементов расположенных правее последнего отрицательного элемента. ![]() Это сообщение отредактировал(а) max29 - 7.5.2016, 13:26 |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
"a" присваивается адрес массива (n значений типа float). Надеюсь, так будет более понятно:
В каком смысле? При выделении памяти (то есть new) сама выделяемая память (float[n]) редко когда инициализируется какими-либо значениями. Но вот позже в коде элементам массива присваиваются значения, считанные со стандартного ввода:Итого: имеем выделенный массив с инициализированными элементами. Чудненько же))) Обычно это означает ошибки в программе. Ну, например, переменная ineg не инициализирована при объявлении:Далее ей присваивается значение только в том случае, ести во введённом с клавиатуры массиве значений есть отрицательная величина:А если таковой нет? Чему тогда равно значение ineg? Какому-то мусору... Как после этого делать дальнейшее суммирование? Более того, в момент определения значения ineg отсутствует выход из цикла. В результате, вместо того, чтобы определить индекс первого отрицательного значения в массиве, определяется индекс последнего отрицательного значения (если такой, конечно, существует; если нет, то значение ineg остаётся неопределенным). Хотя задачу Вы не сформулировали, может быть, нужен как раз последний отрицательный элемент, кто знает. А ещё там в двух местах стоит a[n], а не a[i]. А ещё не проинициализирована сумма sum. Итого: И всё же, три прохода по массиву делать не обязательно (первый - при вводе, второй - при определении ineg, третий - при суммировании). -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
max29 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.4.2016 Репутация: нет Всего: нет |
Благодарю за ответ.
Вы объяснили мне но !..... Меня всё же смущает строка 5, а зачем надо присваивать "а" адрес массива? (т.е. по адресу "а" присвоить массив с "n" значениями так?) Или вместе с адресом,----"а"----присваивается и значение находящиеся по этому адресу? Это сообщение отредактировал(а) max29 - 7.5.2016, 15:41 |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Нет))) Объявляется переменная типа указатель на float:И уже этой переменной присваивается адрес выделенного в памяти процесса массива из n элементов:Когда объявление переменной объединяется с присваиванием, получается инициализация:Здесь совсем нет такого:
![]() -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
max29 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 16.4.2016 Репутация: нет Всего: нет |
Кажись понял
![]() Это сообщение отредактировал(а) max29 - 7.5.2016, 15:54 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |