0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
1 | |
Найти сумму элементов массива, расположенных до последнего положительного элемента16.05.2012, 21:11. Показов 5898. Ответов 17
Метки нет (Все метки)
Вот такое задание нужно сделать на с++ в консольном приложении:
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) максимальный элемент массива; 2) сумму элементов массива, расположенных до последнего положительного элемента. Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, Ь]. Освободившиеся в конце массива элементы заполнить нулями. 3) Создать вектор и поместить в него полученный в п.2 массив. Вывести содержимое вектора на экран. Для доступа к элементам массивов в работе пользоваться только указателями! Для заполнения массива использовать функцию int rand(), которая возвращает при каждом обращении к ней псевдослучайное целое число из диапазона 0...0x7fff. Сложно ли это сделать? Не могли бы помочь?
0
|
16.05.2012, 21:11 | |
Ответы с готовыми решениями:
17
Найти сумму элементов массива, расположенных до последнего положительного элемента Найти сумму элементов массива, расположенных до последнего положительного элемента Найти сумму элементов массива, расположенных до последнего положительного элемента Найти сумму элементов массива, расположенных до последнего положительного элемента |
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
17.05.2012, 03:59 | 2 | |||||
Сообщение было отмечено Памирыч как решение
Решение
Первое и второе
Не идеальное, но решение.
Диапазон от нуля и дальше, но в задании нужна сумма до последнего положительного. Так они все положительные тогда быть должны и значит это тупо можно отбросить. Выходит и считать обычную сумму всех элементов, хотя и сделано как сказано
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||
17.05.2012, 08:47 | 3 | ||||||||||
О сохранении относительного порядка оставшихся элементов речи не было.
0
|
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
17.05.2012, 19:43 [ТС] | 4 |
Странно, компилируется, запускается, но как только ввожу число элементов - ошибка.
А ещё не знаю как вывести массив после сжатия и вектор. 2-ой комментарий, спасибо, но куда это нужно вставить?
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
17.05.2012, 19:57 | 5 |
Ты вводишь количество элементов и в квадратных скобках тоже должно быть количество. Ошибка происходит, когда доходишь до N-1-го элемента, так как его просто нет, их всего N-1, а первый индекс =0 и тогда последний N-2.
0
|
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
17.05.2012, 20:07 [ТС] | 6 |
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
17.05.2012, 20:10 | 7 |
Ну цикл то надо до N-1.
0
|
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
17.05.2012, 20:15 [ТС] | 8 |
Тогда в массиве получается на 2 элемента меньше
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
17.05.2012, 22:54 | 9 |
Странно вы размышляете
Давайте подумаем. Предположим пользователь решил создать 10 элементов. Я отнимаю от введенного 10 один элемент= 9 элементов. Теперь я создаю массив в 9 элементов (цифра в скобках)+нулевой элемент массива = Массив в 10 элементов. Все элементы на месте, причем тут N-2? Этот N-1 сделан сразу и один раз только чтобы не писать его в каждой функции снова и снова, а можно было просто писать N Так как я переписывал вручную, я мог допустить ошибки, но вы или написали на вскидку или не подумали. Как вы заметили, даже пользователь при N-2 получил на 2 элемента меньше. В моих экспериментах при проходе циклом проблем не было и все считало как должно
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
17.05.2012, 23:28 | 10 |
Я не знаю в чем проблема, но могу предположить что какая-то из функций, использованных в DosBox bc 3.1 некорректно работает внутри Visual Studio и скорее проблема не в алгоритме написанного кода, а именно в этих функциях.
Прикрепил скрин и все работает (я циклом у себя дописывал), но так и не увидел ошибки при многократных попытках ее словить. Проверил тот код, что написал с тем что в исходнике, опечаток не нашел
0
|
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
17.05.2012, 23:44 [ТС] | 11 |
Я заменил <iostream.h> на <iostream>, добавил пару других библиотек, потому что иначе выдавало ошибку - 'time' identifier not found. Добавил using namespace std; Удалил clrscr - 'clrscr' : undeclared identifier. И после этих изменений у меня такая ошибка, что описана выше.
А студиа у вас какая? У меня 2005.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
18.05.2012, 16:08 | 12 | |||||
Сообщение было отмечено Памирыч как решение
Решение
Специально скачал Visual Studio 2005.
0
|
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
18.05.2012, 23:03 [ТС] | 13 |
Работает. Спасибо!
А про сжатие массива и вектор кто-то понял как делать?
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
19.05.2012, 02:03 | 14 | |||||
Сообщение было отмечено Памирыч как решение
Решение
Вместе с сжатием
По поводу того что написал ранее. - В скобках массива указано ровно столько сколько создаю. Без всяких плюс нулевой элемент. taras atavin правильно говорил, я неправильно. Просто сделал я так, что этот мой минус один учитывается внутри всех функций в условиях циклов, поэтому код работает.
0
|
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
19.05.2012, 10:36 [ТС] | 15 |
Спасибо!
0
|
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
22.05.2012, 22:41 [ТС] | 16 |
Возникла проблема, после сжатия нули должны быть в конце массива, а не на местах удалённых элементов. Вот мучаю код, это функцию Print нужно изменить? Может подскажите что добавить?
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
22.05.2012, 23:27 | 17 |
Вы с моим кодом колдуете?
В написанном вам коде тут нули и добавляются в конец массива. Слова Print во всей теме нет, не понял о чем вы Вот скрин, разве нули не в конце массива??
0
|
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 21
|
|
22.05.2012, 23:38 [ТС] | 18 |
Точно, что-то я намудрил с кодом. Вернул всё назад, осталось в вектор как-то массив занести и вывести
0
|
22.05.2012, 23:38 | |
22.05.2012, 23:38 | |
Помогаю со студенческими работами здесь
18
Найти сумму элементов массива, расположенных до последнего положительного элемента Найти сумму элементов массива, расположенных до последнего положительного элемента Найти сумму элементов массива, расположенных до последнего положительного элемента Найти сумму элементов одномерного массива расположенных до последнего положительного элемента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |