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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Shargrath
1 / 1 / 0
Регистрация: 18.01.2009
Сообщений: 87
#1

Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа - C++

19.05.2009, 22:23. Просмотров 1698. Ответов 15
Метки нет (Все метки)

При решении использовать масив в файле)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2009, 22:23     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа
Посмотрите здесь:

Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа - C++
Помогите пожалуйста. Нужно Объявить массив целых чисел и заполнить его случайными значениями. Размерность масссива: 100 Диапазон...

Заменить каждый элемент на среднее арифметическое его и его соседей слева и справа - C++
Помогите пожалуйста сделать лабораторную работу. Нужно объявить массив целых чисел и заполнить его случайными значениями. Размерность...

Заменить каждый элемент массива на среднее арифметическое элемента и его соседей - C++
Дан массив размера N. Заменить каждый элемент массива на среднее арифметическое этого элемента и его соседей.

Найти наименьший элемент 3-го столбца, заменить его на среднее арифметическое - C++
Матрица А(5,3) задать по формуле A=-cos(-4,3i-j). Создать новый одномерный массив, каждый элемент которого равен среднему арифметическому...

Заменить каждый элемент массива произведением его индексов - C++
Пожалуйста,кто-нибудь помогите с задачами по C++ 1)Дана прямоугольная таблица, которая содержит не более 10 строк и не более 10...

Каждый элемент массива, больший 10, заменить на его квадратный корень - C++
Дан массив вещественных чисел.Каждый элемент,больший 10,заменить на его квадратный корень.

Каждый равный нулю элемент массива заменить полусуммой его соседних элементов - C++
Нужна помощь в решении задачи: Каждый равный нулю элемент массива заменить полусуммой его соседних элементов. Полученный массив...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
20.05.2009, 00:08     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #2
Что значит массив в файле? Это из файла считывать?
Условие задачи не совсем корректно. Что делать с крайними элементами если у них только 1 сосед?
В общем случае так:
C++
1
2
3
4
for (i = 1; i < n - 1; i++)
{
    a[i] = (a[i-1]+a[i]+a[i+1])/3;
}
Сдесь не учитываются 2 крайних элеманта.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
20.05.2009, 00:18     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #3
думаю, такой вариант не покатит, т.к. заменяемый элемет в следующей итерации становится соседом, и влияет на следующее среднее.
хотя, поскольку аффтар с трудом объяснил чё ему надо, то наверное можно и так...
BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
20.05.2009, 05:13     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #4
Как-то так можно..
C++
1
2
3
4
5
6
7
for (i = 0; i < n; i++)
{
    if (i=0) b[i]=(a[i]+a[i+1])/2;        //a[] - исходный массив, b[] - временный..
    else if (i=n) b[i]=(a[i]+a[i-1])/2;
    else b[i] = (a[i-1]+a[i]+a[i+1])/3;
}
for (i=0; i<n; i++) a[i]=b[i];            //загоняем из временного в исходный..
Shargrath
1 / 1 / 0
Регистрация: 18.01.2009
Сообщений: 87
20.05.2009, 08:03  [ТС]     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #5
Ну...масив должен быть в файле)
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
20.05.2009, 15:13     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #6
Считывает данные из текстового файла в массив и считает среднее арифметическое трёх сосодних элементов за исключением крайних:
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
25
26
#include <iostream>
using namespace std;
int main ()
{
    FILE* f;
    int a[50];
    int n,i=0;
    if (!(f=fopen("file.txt","rt")))
    {
        cout<<"error\n";
        return 1;
    }
    while (!feof(f))
    {
        fscanf (f, "%d", &a [i]);
        i++;
    }
    n = i;
    for (i = 1; i < n - 1; i++)
    {
        a[i] = (a[i-1]+a[i]+a[i+1])/3;
    }
    for (i=0; i<n; i++)
        cout << a [i] << " ";
    return 0;
}
Shargrath
1 / 1 / 0
Регистрация: 18.01.2009
Сообщений: 87
20.05.2009, 19:55  [ТС]     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #7
о!)
пасибо!)
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
03.04.2010, 15:52     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #8
Помогите пожалуйста,задача та же: Заменить каждый элемент на среднее арифметическое его и его соседей слева и справа. С ПОМОЩЬЮ УКАЗАТЕЛЕЙ!!!
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
03.04.2010, 23:07     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #9
Вот такую запись:
Цитата Сообщение от qwert Посмотреть сообщение
C++
1
a[i] = (a[i-1]+a[i]+a[i+1])/3;
можно заменить на
C++
1
*(a + i) = (*(a + i - 1) + *(a + i) + *(a + i + 1))/3;
Это и будут указатели.
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
04.04.2010, 21:11     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #10
спс,но так не получается,уже пробовала..еще пыталась 1 заменить на size*sizeof(int),т.к.это объем памяти,а из-за сдвига выводятся неизвестные числа
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
04.04.2010, 22:56     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #11
Цитата Сообщение от Define Посмотреть сообщение
спс,но так не получается,уже пробовала..еще пыталась 1 заменить на size*sizeof(int),т.к.это объем памяти,а из-за сдвига выводятся неизвестные числа
Что именно не получается?
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
05.04.2010, 14:03     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #12
неизвестные числа появляются.вот сама программа,может быть ее будет легче исправить...
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
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <alloc.h>
#include <conio.h>
int main(void) {
int size;      /*razmer massiva */
int *Ar;       /*ukazatel na nachalo massiva */
int *Cr;       /*tekushij ukazatel */
int *Pr;       /*posleduyushee znachenie */
int *Fr;       /*predydushee znachenie */
clrscr();
randomize ();
size=random(11)+5;
printf("size=%d\n",size);
Ar=(int far *)malloc(size*sizeof(int)); /*vydelenie pamyati */
printf ("Nachalniy massiv:\n");
for (Cr=(Ar-sizeof(int)); Cr<Ar+(size*sizeof(int)-sizeof(int)); Cr+=(sizeof(int))) {
*Cr=random(10)+1;
printf(" %3d ",*Cr);
    }
putchar ('\n');
printf ("Srednee arifmeticheskoe:\n");
for (Cr=Ar-sizeof(int), Pr=Ar-size*sizeof(int)+sizeof(int), Fr=Ar-size*sizeof(int)-sizeof(int); Cr<Ar+(size*sizeof(int))-sizeof(int)-sizeof(int); Cr+=(sizeof(int)),Pr+=(sizeof(int)),Fr+=(sizeof(int))) {
  if (Cr==Ar-sizeof(int)) { *Cr=(*Cr+*Pr)/2; printf("%3d  ", *Cr);}
  if (Cr==Ar+(size*sizeof(int)-sizeof(int))-sizeof(int)) { *Cr=(*Fr+*Cr)/2; printf("%3d  ", *Cr); }
  else {*Cr=(*Fr+*Cr+*Pr)/3; printf("%3d  ", *Cr); }
 }
 putchar ('\n');
 free(Ar);  /*osvobozhdenie pamyati */
  getch ();
  return 0;
}
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.04.2010, 14:58     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #13
Зачем так всё путать?

Попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main ()
{
    int a[10];
    int n, i;
    n = 10;
 
    for (i = 0; i < n; i++)
        *(a + i) = i*(3 * i);
 
    for (i = 0; i < n; i++)
        printf ("%d ", *(a + i));
    printf("\n");
 
    for (i = 1; i < n - 1; i++)
        *(a + i) = (*(a + i - 1) + *(a + i) + *(a + i + 1))/3;
    
    for (i = 0; i < n; i++)
        printf ("%d ", *(a + i));
    printf("\n");
}
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
05.04.2010, 17:38     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #14
спс,но в тексте программы запрещается применять операцию индексации...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2010, 19:57     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа
Еще ссылки по теме:

Найти максимальный элемент одномерного массива и среднее арифметическое его положительных элементов - C++
Передача массивов в функцию (одномерные массивы) Дан одномерный массив, состоящий из N вещественных элементов. Найти максимальный...

Определить количество элементов матрицы у которых слева в его строке находятся элементы меньше его,а справа больше - C++
Задана матрица размером NxM. Определить количество элементов матрицы у которых слева в его строке находятся элементы меньше его,а справа...

Каждый элемент массива, кроме первого, заменить суммой всех его предыдущих элементов - C++
Дан массив А. Каждый его элемент, кроме первого, заменить суммой всех его предыдущих элементов. Создавайте темы с осмысленными и...

В прямоугольной матрице заменить каждый нулевой элемент на среднее арифметическое строки - C++
В прямоугольной матрице заменить каждый нулевой элемент на среднее арифметическое строки, в которой находится нулевой элемент. если таковых...

Необходимо каждый элемент массива сравнить с его 8 соседями и если он больше, чем любой из элементов с которыми сравнивается, его распечатать. - C++
Всем привет, помогите решить следующую задачу, есть массив: 3 4 5 6 7 8 9 4 2 10 44 2 2 3 4 5 6 1 2 9 2 2 42 0 1 4 5 8 7 2 9 1 2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.04.2010, 19:57     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа #15
Выделите память динамически через malloc.
Yandex
Объявления
05.04.2010, 19:57     Заменить каждый элемент массива на среднее арифметическое его и его соседей слева и справа
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru