Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Помогите решить задачу!!!


Рекомендуемые сообщения

1.Нарастающий итог. В массиве А(n) каждый элемент, кроме первого, заменить суммой всех предыдущих элементов.

2.Разделить массив на две части, поместив в первую элементы, большие среднего арифметического их суммы, а во вторую - меньшие (части не сортировать).

Добавлено : [mergetime]1110573205[/mergetime]

Microsoft Visual C++ 6.0

Ссылка на комментарий
Поделиться на другие сайты

1:

for (i=1; i<n; i++){A[i]+=A[i-1];}

Второй вопрос не понял. Надо среднего арифметического первоначальних чисел или среднего арифметического нового массива, созданний в 1)

Изменено пользователем Darhazer
Ссылка на комментарий
Поделиться на другие сайты

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}; 
Ссылка на комментарий
Поделиться на другие сайты

Именно это и имелось ввиду :( ! Я уточнил!

Большое спасибо!!!!!!!!!!!!!!!!! :)

(THEen)- ЭТО ЧЕ?

И еще однО: если вам не трудно, можете сделать задачу полностью! (чтобы откомпилить можно было :) )

Ссылка на комментарий
Поделиться на другие сайты

hansas

Форум - это место где тебе помогут решить проблему, если ты не знаешь как ее решить. Тебе подскажут КАК ее решить. Но если ты показываешь, что тебе ЛЕНЬ что-то делать, и говоришь, "а сделайте-ка это вместо меня" - никто не будет за тебя этого делать.

Когда ты написал, что НЕ ЗНАЕШЬ как реализовать то или иное действие - тебе помогли. А теперь ты говоришь: "мне лень напрягаться, допишите остальную программу за меня, а я пока в кваку погоняю".

Ссылка на комментарий
Поделиться на другие сайты

Ты не прав!

Во первых я в кваку не играю!!!!!!!!!!!!!!!!!

А прграммировать только начинаю!

Моя проблема состоит в том что я не могу соединить эти условия в одно целое!

Ссылка на комментарий
Поделиться на другие сайты

hansas

Проблема в том, что ты просишь чтобы это сделали за тебя. Ты спрашиваешь не "как мне это сделать?", а "кто это сделает?". Ответ на вопрос "как это сделать?" поможет тебе понять как это делать, как это работает. А если тебе дадут кусок кода - это тебе поможет его сдать и забыть, но абсолютно не поможет понять как это делать.

Как тебе их надо обьединить в одно целое? Тебе надо последовательно выполнить эти операции над одним и тем же массивом? Тогда поставь их последовательно. Тебе нужно выполнять эти операции по нажатию соответствующих кнопок? Тогда помести каждую операцию в обработчик нажатия нужной кнопки. Я же говорю, если ты не знаешь КАК что-то сделать - спрашивай, и если это выходит за пределы элементарной логики, или прописных истин, написанных в каждой книге - тебе ответят.

А вот это:

И еще однО: если вам не трудно, можете сделать задачу полностью! (чтобы откомпилить можно было  )
делать врядли кто-то будет. Более того, даже если бы кто-то захотел это сделать - абсолютно непонятно что конкретно тебе надо, понимаешь? Ты задал абстрактную задачу, провести операции над массивом. Все что можно по этому поводу - тебе уже сказали. Сделать готовую программу? Откуда брать исходный массив? Куда девать полученный? Я не призываю тебя изложить здесь всю задачу и просить чтобы тебе ее сделали - просто определись, что конкретно у тебя не получается, опиши как ты это пытаешься делать - и тебе, возможно, помогут.
Ссылка на комментарий
Поделиться на другие сайты

hansas

(THEen)- ЭТО ЧЕ?
Действительно, ниче... Точнее, синтаксическая ошибка. Это я перед этим что-то на Pascal писал. И по инерции записал if в стиле if .. then, как в Pascal. Выкинь then, будто их и не было. В остальном должно быть нормально.
Ссылка на комментарий
Поделиться на другие сайты

код

for (i=1; i<n; i++){

A+=A[i-1];

}

неверный, так как будет учитыватся значение текущего елемента,

а не как написано "...суммой всех предыдущих элементов."

Ссылка на комментарий
Поделиться на другие сайты

код

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;}
Ссылка на комментарий
Поделиться на другие сайты

yuriks

Точно подметил. Когда идем по массиву, каждый элемент его меняется на сумму всех предыдущих плюс текущий. В A[i-1] содержится сумма всех предыдущих элементов исходного массива.

Darhazer Действительно, надо подкорректировать. Я тоже не заметил.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Darhazer

ето добавит к текущого елемента всех предедущих

Но сейчаш задумался: так в сумму включается и текущий елемент

Это не соответствует тому, что написал hansas, но я подозреваю, что так и надо. Во всяком случае это - именно "нарастающий итог". В случае
В массиве А(n) каждый элемент, кроме первого, заменить суммой всех предыдущих элементов
теряет значение последний элемент массива, а это врядли требуется.
Ссылка на комментарий
Поделиться на другие сайты

Darhazer

Для первого элемента надо было сделать по условию исключение...

Наверно, Shurr прав. Условие было очень небрежно сформулировано.

Ссылка на комментарий
Поделиться на другие сайты

#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;

}

Что яделаю не так?

Ссылка на комментарий
Поделиться на другие сайты

hansas

1. Не объявлен массив A[]

2. Не инициализирован массив A, т.е. не заданы начальные значения его элементов.

Это так, навскидку.

Ссылка на комментарий
Поделиться на другие сайты

#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;

}

}

А почему выдает всегда :) одно и тоже отрицательное число?

Ссылка на комментарий
Поделиться на другие сайты

Может бит:

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]

Ссылка на комментарий
Поделиться на другие сайты

#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;

}

}

Ну а теперь в чем проблема?

Ссылка на комментарий
Поделиться на другие сайты

В том, что ты перемутил со скобками в цикле.

Вот это:

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. Ты хоть пиши что у тебя выходит (не компилится; при работе вылетает с ошибкой, если да - то какой; работает, но неверный результат, и если да, то какой). А то компилятор под рукой не у всех есть, а с учетом того, что я на сях в жизни не писал - совсем туго.

Ссылка на комментарий
Поделиться на другие сайты

hansas

Ти опят не присвоил стойност A[0]... Массив начинает с нуля, не с 1

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...