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

Определение массива после работы функции - упростить код

26.06.2016, 07:10. Просмотров 330. Ответов 3
Метки нет (Все метки)

Надо переписать вот эту сроку проще. И без ++.
C
1
 for( ; ++c != b; ) *c = (*f)(*(c - 1));
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
34
35
#include <stdio.h>
#define N 5
 
int succ (int x)
{
return ++x;
}
 
int mply2 (int x)
{
return x*=2;
}
 
void iterateN (int *a, int n, int val, int (*f) (int x))
{
  
  int *b = a + n;
  int *c = a;
  *c = val;
  for( ; ++c != b; ) *c = (*f)(*(c - 1));
}
 
int main ( void )
{
  
  int d[N];
  iterateN(d, N, 2, succ);
  int i;
  printf("Значения массива после вызова функ. iterateN с одним из аргументов succ:\n");
  for(i = 0; i < N; i++)printf("%d ", d[i]);
  iterateN(d, N, 2, mply2);
  printf("\nЗначения массива после вызова функ. iterateN с одним из аргументов mply2:\n");
  for(i = 0; i < N; i++)printf("%d ", d[i]);
  return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2016, 07:10
Ответы с готовыми решениями:

Упростить код работы с потоками
Запускаю сервер в отдельном потоке, в котором запускаются еще потоки, при нажатии на кнопку стоп,...

Упростить код работы с потоками
Как можно упростить этот код. Public Class Form1 Dim Massiv() As String =...

Создать меню для работы с программой заполнения массива, используя функции. код прилагается
Реализовать программу меню: 1. Заполнить массив нулями 2. Заполнить массив с клавиатуры 3....

Нужно упростить/сократить код функции
&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt; &lt;script type=&quot;text/javascript&quot;&gt; //функция, принимающая текст и...

Упростить код функции вызывающая с вдумя парами скобок
Есть код который находит определенный интеграл: const splits = 500; function...

3
ingvarsson
2 / 2 / 2
Регистрация: 25.06.2016
Сообщений: 11
26.06.2016, 08:53 2
Цитата Сообщение от kingler1 Посмотреть сообщение
Надо переписать вот эту сроку проще. И без ++.
если только вот так:
C
1
2
3
4
5
6
7
void iterateN (int *a, int n, int val, int (*f) (int x))
{
    a[0] = val;
    int i;
    for(i = 1; i < n; i++)
        a[i] = f(a[i - 1]);
}
код там сам по себе не особо сложный же. проходим циклом по массиву, вызывая f() для каждого элемента.
0
Swifts422
0 / 0 / 0
Регистрация: 04.05.2016
Сообщений: 7
Завершенные тесты: 1
26.06.2016, 09:18 3
Тогда надо заменить один аргумент, у него ведь там не массив а указатель передается.

C
1
2
3
4
5
6
7
void iterateN (int a[], int n, int val, int (*f) (int x))
{
    a[0] = val;
    int i;
    for(i = 1; i < n; i++)
        a[i] = f(a[i - 1]);
}
0
ingvarsson
2 / 2 / 2
Регистрация: 25.06.2016
Сообщений: 11
26.06.2016, 09:30 4
Swifts422,

Не по теме:

масло масляное. передавая массив, ты передаёшь указатель на первый его элемент.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2016, 09:30

Нахождение центра массива (упростить код)
Есть небольшой код который находит центр массива. Можно ли как то вот этот код убыстрить? Дело в...

Определение функции работы со списком и числами
Добрый вечер) Помогите с заданием, пожалуйста: надо написать функцию двух трех аргументов L1, L2 и...

Открытые функции класса: ввод массива, вывод массива, определение длины вектора
Данные класса: массив N(10). Открытые функции класса: ввод массива, вывод массива, определение...


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

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

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