Форум программистов, компьютерный форум CyberForum.ru

Замена всех элементов массива, кроме крайних на полусумму соседей - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Lollipo
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 36
03.10.2010, 20:06     Замена всех элементов массива, кроме крайних на полусумму соседей #1
9.Напишите программу, которая вводит с клавиатуры непустой массив целых чисел, заменяет все элементы массива, кроме крайних на полусумму соседей, и печатает результат.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2010, 20:06     Замена всех элементов массива, кроме крайних на полусумму соседей
Посмотрите здесь:

Найти число элементов массива, которые больше своих “соседей” C++
найти среднее арифметическое всех элементов массива, кроме элементов... C++
Получить числа b1, …, b20, где bi - среднее арифметическое всех членов массива А, кроме аi C++
Вывести количество элементов массива, которые строго больше обоих своих соседей (исправить) C++
Из массива случайных чисел найти позиции крайних отрицательных элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IchMors
96 / 92 / 4
Регистрация: 16.05.2010
Сообщений: 307
04.10.2010, 13:41     Замена всех элементов массива, кроме крайних на полусумму соседей #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int main()
{
    int i, temp = 0;
    cout << "Enter size massiv: ";
    cin >> temp;
    int *mass = new int [temp];
    cout << "zapolnite massiv: \n";
    for(i=0; i<temp; i++)
        cin >> mass[i];
    int a = 1;
    int *mas2 = new int [temp-2];
    for(i = 0; (i<temp-2);i++, a++)
        mas2[i] = (mass[a-1]+mass[a+1])/2;
    for(i = 0; i<(temp-2);i++)
        mass[i+1] = mas2[i];
    cout <<endl;
    for(i = 0; i<temp;i++)
        cout <<mass[i]<< " ";
 
    delete [] mas2;
    delete [] mass;
    _getch();
    return 0;
}
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
04.10.2010, 13:50     Замена всех элементов массива, кроме крайних на полусумму соседей #3
Можно обойтись без вспомогательного массива mas2
C
1
2
3
4
5
6
7
int x, y;
for(i=1; i<temp-1;i++) {
   x = (mass[i-1]+mass[i+1]) / 2;
   if (i>1) mass[i-1] = y;
   y = x;
}
mass[temp-2] = y;
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
04.10.2010, 13:54     Замена всех элементов массива, кроме крайних на полусумму соседей #4
Цитата Сообщение от Day Посмотреть сообщение
Можно обойтись без вспомогательного массива mas2
Ну допустим вы посчитаете второй элемент так, но как вы после этого посчитаете 3 элемент, если второй у вас будет отличаться от исходного?
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
04.10.2010, 14:23     Замена всех элементов массива, кроме крайних на полусумму соседей #5
Цитата Сообщение от M128K145 Посмотреть сообщение
Ну допустим вы посчитаете второй элемент так, но как вы после этого посчитаете 3 элемент, если второй у вас будет отличаться от исходного?
Чегой-то не понял.
Я ж не сразу его заменяю, а сохраняю до той поры, когда он уже быдет не нужен.
Как ты думаешь -зачем я ввел x, y?
Ладно, попробуем прокрутить.
Массив 1 2 5 8 16
i = 1, x = 3, y= x = 3
i = 2, x = 5, m[1] = y = 3, y=x=5
i = 3, x = 10(16+5)/2, m[2] = y = 5, y =x = 10
i = 4, break, m[3] = y = 10
Как-будто все получается?
Иль на меня затмение нашло какое ?
Yandex
Объявления
04.10.2010, 14:23     Замена всех элементов массива, кроме крайних на полусумму соседей
Ответ Создать тему
Опции темы

Текущее время: 19:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru