Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
тофик атакишиев
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 1
1

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

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

Требуется написать функцию, обязательными аргументами которой являются длина 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];
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 21:29
Ответы с готовыми решениями:

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

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

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

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

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

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
easybudda
Модератор
Эксперт CЭксперт С++
10147 / 6054 / 1521
Регистрация: 25.07.2009
Сообщений: 11,476
26.09.2013, 01:59 3
Цитата Сообщение от Сонца Посмотреть сообщение
Функция предельно проста
Есть нюанс: после первой же итерации значение а[1] изменится, что повлияет на вычисление a[2]. То, что у топикстартера этот момент никак не оговорен, не значит, что вычисление новых значений не должно основываться на исходных. При такой, как есть, постановке задачи ответ зачётный, но всё может оказаться чуть сложнее...
2
Байт
Эксперт C
18999 / 12203 / 2552
Регистрация: 24.12.2010
Сообщений: 24,914
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2013, 11:01

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

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

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


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

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

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