тофик атакишиев
1

Каждый элемент массива заменить на полусумму соседних элементов

24.09.2013, 21:29. Показов 5907. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Требуется написать функцию, обязательными аргументами которой являются длина N массива A и массив A[N]. Использовать дополнительные массивы и глобальные переменные нельзя. В основной программе осуществляется ввод–вывод и выделение памяти под массив.
Если в процессе выполнения программы массив меняет свою длину, функция должна вернуть новую длину массива.

Каждый элемент массива (кроме первого и последнего) требуется заменить на полусумму соседних элементов.

базироваться надо на этой программе:

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
#include <stdio.h>
#include <stdlib.h>
void abs_mas(double*, int);
int main(void)
{
    FILE *fp=NULL; int n,i;
    double *mas=NULL;
    fp=fopen("individualka-2.txt","r");
    if( !fp ){printf("file not open\n"); return -1;}
    if( fscanf(fp,"%d",&n) !=1) {printf("n not read\n"); return -2;}
    printf("n=%d\n",n);
    if( n<=0 ){ printf("n<0\n"); return -3;}
    mas=(double*)malloc(n*sizeof(double));
    if( !mas ){printf("mas[] not created\n"); return -4;}
    for(i=0; i<n; i++) if( fscanf(fp,"%lf",&mas[i]) !=1)break;
    if( i<n ){ printf("i<n !!! i=%d\n",i); return -5;}
    printf("получим входной массив;\n");
    for(i=0; i<n; i++) printf("%d %lg\n",i,mas[i]);
    printf("начало работы функции\n");
    abs_mas(mas, n);
    printf("результат работы функциип:\n");
    for(i=0; i<n; i++) printf("%d %lg\n",i,mas[i]);
    return 0;
}
void abs_mas(double *a, int k)
{int j;
for(j=0;j<k;j++)if(a[j]<0)a[j]=-a[j];
}
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2013, 21:29
Ответы с готовыми решениями:

В массиве C (m) каждый третий элемент заменить на полусумму двух предыдущих элементов
Что не так? #include&lt;conio.h&gt; #include&lt;windows.h&gt; #include&lt;stdlib.h&gt; #include&lt;stdio.h&gt; int...

В массиве C (m) каждый третий элемент заменить полусумму двух предыдущих
Реализовать программу вычисления суммы элементов матрицы: В массиве C (m) каждый третий элемент...

Заменить каждый нулевой элемент массива А суммой элементов массива В
Даны целочисленные массивы А и В. Заменить каждый нулевой элемент массива А суммой элементов...

Каждый i-ый элемент массива заменить минимальным среди первых i элементов
Каждый из элементов ti массива T(m) заменить минимальным среди первых i элементов этого массива....

4
23 / 23 / 10
Регистрация: 20.06.2013
Сообщений: 83
25.09.2013, 02:30 2
Во-первых, в таком коде вообще ничего не понятно. Есть специальные теги кода.
Во-вторых, длина массива не может изменяться, если функция изменяет только существующие элементы.
Функция предельно проста
C
1
2
3
4
5
void func (int A[], int N)
{
    for (int i = 1; i < N - 1; i ++)
        A[i] = (A[i - 1] + A[i + 1]) / 2;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
26.09.2013, 01:59 3
Цитата Сообщение от Сонца Посмотреть сообщение
Функция предельно проста
Есть нюанс: после первой же итерации значение а[1] изменится, что повлияет на вычисление a[2]. То, что у топикстартера этот момент никак не оговорен, не значит, что вычисление новых значений не должно основываться на исходных. При такой, как есть, постановке задачи ответ зачётный, но всё может оказаться чуть сложнее...
2
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
26.09.2013, 10:40 4
C
1
2
3
4
5
6
7
8
func(int *A, int N)
{ int i, tmp, tmp2;
  for(i=1, tmp=A[0]; i<N-1; i++) {
    tmp2 = A[i];
    A[i] = (tmp+A[i+1])/2;
    tmp = tmp2;
  }
}
0
23 / 23 / 10
Регистрация: 20.06.2013
Сообщений: 83
26.09.2013, 11:01 5
Байт, тоже об этом подумала после замечания, но не было времени написать

easybudda, благодарю за наводящий вопрос.
0
26.09.2013, 11:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2013, 11:01
Помогаю со студенческими работами здесь

Дан числовой массив A размера N. Каждый элемент массива A[k] заменить средним значением первых k элементов
Помогите написать задачку, вот у меня есть динамический массив , что делать дальше? #include...

Каждый элемент массива заменить на ближайший следующий за ним элемент за один просмотр
В масcиве А размера N за один просмотр необходимо каждый элемент заменить на ближайший следующий...

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

Для заданного числа x заменить элементы каждого x-отрезка на полусумму элементов
Назовем x-отрезком группу подряд идущих элементов массива, каждый из ко- торых равен x. Для...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru