hansas Опубликовано 11 марта, 2005 Жалоба Поделиться Опубликовано 11 марта, 2005 1.Нарастающий итог. В массиве А(n) каждый элемент, кроме первого, заменить суммой всех предыдущих элементов. 2.Разделить массив на две части, поместив в первую элементы, большие среднего арифметического их суммы, а во вторую - меньшие (части не сортировать). Добавлено : [mergetime]1110573205[/mergetime] Microsoft Visual C++ 6.0 Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 12 марта, 2005 Автор Жалоба Поделиться Опубликовано 12 марта, 2005 А точнее алгоритм решения. (в win 32 console aplication)! Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 12 марта, 2005 Жалоба Поделиться Опубликовано 12 марта, 2005 (изменено) 1: for (i=1; i<n; i++){A[i]+=A[i-1];} Второй вопрос не понял. Надо среднего арифметического первоначальних чисел или среднего арифметического нового массива, созданний в 1) Изменено 12 марта, 2005 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 13 марта, 2005 Автор Жалоба Поделиться Опубликовано 13 марта, 2005 Второе действие выполняется по массиву полученному в первом. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 13 марта, 2005 Жалоба Поделиться Опубликовано 13 марта, 2005 hansas элементы, большие среднего арифметического их суммыЭто кто такую дивную формулировку придумал? :) Среднее арифметическое элементов массива - это их сумма, деленная на количество элементов. А вот среднее арифметическое суммы - сама эта сумма. По условию получается, что в первую часть массива нужно поместить элементы, бОльшие, чем сумма всех элементов массива. Или имелось в виду все-таки среднее арифметическое самих элементов? Кстати, а что делать с элементами, которые равны этому среднему арифметическому? Они не должны находиться ни в первой, ни во второй части массива :) И, наконец, что значит "разделить массив на две части". На два отдельных массива или просто переупорядочить исходный массив? P.S. Если считать, что среднее арифметическое все же элементов массива, равные среднему арифметическому элементы массива не трогаем, массив не делим, как червяка, а переупорядочиваем так, чтобы сначала в нем стояли элементы, большие или равные среднему арифметическому, а потом меньшие или равные ему же, то получим, например, следующее (навскидку): S=0; for(i=0;i<N;i++)S+=A(i); S/=N;for(i=0,j=N-1;i<j;i++) if(A(i)<S) then for(;i<j;j--) if(A(j)>S) then {p=A(j);A(j)=A(i);A(i)=p}; Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 14 марта, 2005 Автор Жалоба Поделиться Опубликовано 14 марта, 2005 Именно это и имелось ввиду :( ! Я уточнил! Большое спасибо!!!!!!!!!!!!!!!!! :) (THEen)- ЭТО ЧЕ? И еще однО: если вам не трудно, можете сделать задачу полностью! (чтобы откомпилить можно было :) ) Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 15 марта, 2005 Автор Жалоба Поделиться Опубликовано 15 марта, 2005 ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 15 марта, 2005 Жалоба Поделиться Опубликовано 15 марта, 2005 hansas Форум - это место где тебе помогут решить проблему, если ты не знаешь как ее решить. Тебе подскажут КАК ее решить. Но если ты показываешь, что тебе ЛЕНЬ что-то делать, и говоришь, "а сделайте-ка это вместо меня" - никто не будет за тебя этого делать. Когда ты написал, что НЕ ЗНАЕШЬ как реализовать то или иное действие - тебе помогли. А теперь ты говоришь: "мне лень напрягаться, допишите остальную программу за меня, а я пока в кваку погоняю". Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 15 марта, 2005 Автор Жалоба Поделиться Опубликовано 15 марта, 2005 Ты не прав! Во первых я в кваку не играю!!!!!!!!!!!!!!!!! А прграммировать только начинаю! Моя проблема состоит в том что я не могу соединить эти условия в одно целое! Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 hansas Проблема в том, что ты просишь чтобы это сделали за тебя. Ты спрашиваешь не "как мне это сделать?", а "кто это сделает?". Ответ на вопрос "как это сделать?" поможет тебе понять как это делать, как это работает. А если тебе дадут кусок кода - это тебе поможет его сдать и забыть, но абсолютно не поможет понять как это делать. Как тебе их надо обьединить в одно целое? Тебе надо последовательно выполнить эти операции над одним и тем же массивом? Тогда поставь их последовательно. Тебе нужно выполнять эти операции по нажатию соответствующих кнопок? Тогда помести каждую операцию в обработчик нажатия нужной кнопки. Я же говорю, если ты не знаешь КАК что-то сделать - спрашивай, и если это выходит за пределы элементарной логики, или прописных истин, написанных в каждой книге - тебе ответят. А вот это: И еще однО: если вам не трудно, можете сделать задачу полностью! (чтобы откомпилить можно было ) делать врядли кто-то будет. Более того, даже если бы кто-то захотел это сделать - абсолютно непонятно что конкретно тебе надо, понимаешь? Ты задал абстрактную задачу, провести операции над массивом. Все что можно по этому поводу - тебе уже сказали. Сделать готовую программу? Откуда брать исходный массив? Куда девать полученный? Я не призываю тебя изложить здесь всю задачу и просить чтобы тебе ее сделали - просто определись, что конкретно у тебя не получается, опиши как ты это пытаешься делать - и тебе, возможно, помогут. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 hansas (THEen)- ЭТО ЧЕ?Действительно, ниче... Точнее, синтаксическая ошибка. Это я перед этим что-то на Pascal писал. И по инерции записал if в стиле if .. then, как в Pascal. Выкинь then, будто их и не было. В остальном должно быть нормально. Ссылка на комментарий Поделиться на другие сайты Поделиться
yuriks Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 код for (i=1; i<n; i++){ A+=A[i-1]; } неверный, так как будет учитыватся значение текущего елемента, а не как написано "...суммой всех предыдущих элементов." Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 код for (i=1; i<n; i++){ A+=A[i-1]; } неверный, так как будет учитыватся значение текущего елемента, а не как написано "...суммой всех предыдущих элементов." ето добавит к текущого елемента всех предедущих Но сейчаш задумался: так в сумму включается и текущий елемент. Без него код будет: int sum = 0;int temp = 0;for (int i=1; i<n; i++){temp = A[i];A[i]=sum+A[i-1];sum = temp;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 (изменено) yuriks Точно подметил. Когда идем по массиву, каждый элемент его меняется на сумму всех предыдущих плюс текущий. В A[i-1] содержится сумма всех предыдущих элементов исходного массива. Darhazer Действительно, надо подкорректировать. Я тоже не заметил. Изменено 16 марта, 2005 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 Darhazer ето добавит к текущого елемента всех предедущихНо сейчаш задумался: так в сумму включается и текущий елемент Это не соответствует тому, что написал hansas, но я подозреваю, что так и надо. Во всяком случае это - именно "нарастающий итог". В случаеВ массиве А(n) каждый элемент, кроме первого, заменить суммой всех предыдущих элементовтеряет значение последний элемент массива, а это врядли требуется. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 Darhazer Для первого элемента надо было сделать по условию исключение... Наверно, Shurr прав. Условие было очень небрежно сформулировано. Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 Тролль первий елемент А[0] Я начинаю с A[1] Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 16 марта, 2005 Автор Жалоба Поделиться Опубликовано 16 марта, 2005 #include <iostream.h> void main() { int i; int sum = 0; int temp = 0; cin >> i; for (int i=1; i<100; i++) { temp = A; A=sum+A[i-1]; sum = temp; } cout <<"Summa pediduschih clenov ravna-->"<<temp<<endl; } Что яделаю не так? Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 hansas 1. Не объявлен массив A[] 2. Не инициализирован массив A, т.е. не заданы начальные значения его элементов. Это так, навскидку. Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 16 марта, 2005 Автор Жалоба Поделиться Опубликовано 16 марта, 2005 #include <iostream.h> void main() { int i; int A[100]; int sum = 0; int temp = 0; for (i=1; i<100; i++) { cin >> i; temp = A; A=sum+A[i-1]; sum = temp; cout <<"Summa pediduschih clenov ravna-->"<<temp<<endl; } } А почему выдает всегда :) одно и тоже отрицательное число? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 16 марта, 2005 Жалоба Поделиться Опубликовано 16 марта, 2005 Может бит: for (i=1; i<100; i++){cin >> A[i];temp = A[i];A[i]=sum+A[i-1];sum = temp;cout <<"Summa pediduschih clenov ravna-->"<<temp<<endl;} Добавлено : [mergetime]1111006269[/mergetime] П.С. но сначало надо присвоит стойност A[0] Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 17 марта, 2005 Автор Жалоба Поделиться Опубликовано 17 марта, 2005 #include <iostream.h> void main() { int i; int A[100]; int sum = 0; int temp = 0; for (i=1; i<100; i++) A=1; { cin >> A; temp = A; A=sum+A[i-1]; sum = temp; cout <<"Summa prediduschih clenov ravna-->"<<temp<<endl; } } Ну а теперь в чем проблема? Ссылка на комментарий Поделиться на другие сайты Поделиться
Shurr Опубликовано 17 марта, 2005 Жалоба Поделиться Опубликовано 17 марта, 2005 В том, что ты перемутил со скобками в цикле. Вот это: for (i=1; i<100; i++)A=1; вполнится сто раз, и действительно заполнит массив единицами.А вот это: {cin >> A; temp = A; A=sum+A[i-1]; sum = temp; cout <<"Summa prediduschih clenov ravna-->"<<temp<<endl; } Выполнится только 1 разP.S. Ты хоть пиши что у тебя выходит (не компилится; при работе вылетает с ошибкой, если да - то какой; работает, но неверный результат, и если да, то какой). А то компилятор под рукой не у всех есть, а с учетом того, что я на сях в жизни не писал - совсем туго. Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 17 марта, 2005 Жалоба Поделиться Опубликовано 17 марта, 2005 hansas Ти опят не присвоил стойност A[0]... Массив начинает с нуля, не с 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
hansas Опубликовано 17 марта, 2005 Автор Жалоба Поделиться Опубликовано 17 марта, 2005 Как правильно и где задается стойност? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти