Сумма отрицательных элементов массива
Отщеплен от топика Помогите написать программу.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Пожалуйста срочно надо
Написать программу использующую подпрограмму(функцию)/
Сумма отрицательных элементов массива Y.
Для работы подпрограмма должна использовать только свои локальные переменные и формальные аргументы. В подпрограмме должен осуществляться ввод исходных данных, однократный вызов подпрограммы обработки данных и вывод результата на экран.
in c++
Бегло читать обычно люди начинают годам к 10. А вот понимать прочитанное... Некоторые вообще обходятся без этого до самой смерти.
Azizullo Qudratullo, если уж пытаешься помочь людям, что само по себе похвально, то помогай правильно. Ещё раз прочитай задание и попытайся понять, что в нём сказано.
Я думаю, программа должна выглядеть так:
Юрий, как вариант, на «троечку» потянет.
Недостатки кода:
for (int i = 0; i < arrsize; i++) { ... }
. В противном случае можно опять-таки получить выход за границу массива при обработке последнего элемента.using namespace std;
лучше использовать в глобальной области видимости.Формальности:
Исходя из вышеизложенного, твой код может выглядеть так:
Или, если верно моё предположение об опечатке в тексте задания, так:
Спасибо, Алан.
На данном этапе не совсем разбираюсь в этом вопросе. То есть, созданная символическая константа за пределами функции является статической, а созданная в функции автоматической ? ? Тогда, какую роль играет квалификатор const?
Во время написания кода, я думал об этом, а именно, не уже ли пользователь введя размер массива 1001, захочет инициализировать его с клавиатурного ввода :)
Здесь впору инициализировать массив случайными числами.
В этом случае, я руководствовался удобством отображения номера вводимого числа, который совпадает с номером элемента массива. И честно, не совсем понимаю :( в каком случае можно выйти за пределы массива в данном случае. В проверочном условии цикла
for (...; i <= arrsize; ...)
???Буду благодарен за объяснения :)
Пожалуйста, Юрий ))
(1) «Символическая константа» — это скорее
#define
. Здесь я бы употребил термин «константная переменная». Да, такая переменная, определённая внутри функции, является автоматической. А квалификатор const говорит о том, что эта переменная не может быть изменена. И «говорит» он прежде всего оптимизирующему компилятору, который будет выбирать соответствующие алгоритмы оптимизации.Но в цитате говорится не про константу, определяющую размер массива, а про выделение памяти под массив Y в стеке. При размере массива int[1000] и размере int 4 байта, в стеке должно быть выделено почти 4 килобайта памяти под этот массив. А если потребуется сделать размер массива в 100000 элементов? Надо себя приучать писать аккуратный код.
(2) Программы должны быть надёжными. Примеров обратному — уйма, к сожалению. И если в программе имеется дырка, то обязательно найдётся идиот, который сунет туда палец. Изучайте Законы Мэрфи. Надо себя приучать писать аккуратный код.
(3) «Удобство отображения номера» решается элементарно:
cout << "Number " << i+1 << ": ";
.Выход за границу массива можно получить тоже элементарно. Допустим, в твоей программе имеется массив длиной 1000 элементов, и пользователь указал используемый размер массива 1000 (т.е. будут использоваться все имеющиеся элементы). При этом, по правилам С/С++, элементы массива нумеруются от 0 до 999. А переменная цикла в
for (int i = 1; i <= arrsize; i++)
будет принимать значения от 1 до 1000. Т.е. на последней итерации будет обращение к несуществующему элементу Y[1000].