Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2015, 00:06   #1
Romchik1
 
Регистрация: 15.01.2015
Сообщений: 4
По умолчанию Программирование на С. Указатели на функцию

Доброго времени суток!
Не имею понятия как решать такие задания. Пожалуйста, подскажите как решить этот тип задания.
Заранее спасибо!)
Изображения
Тип файла: jpg 10.jpg (34.4 Кб, 71 просмотров)
Romchik1 вне форума Ответить с цитированием
Старый 10.02.2015, 02:21   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Пример простейшей программы с указателем на функцию
Код:
#include <stdio.h>

void f()
{
printf("a\n");
}

void main()
{
void (*p)() = &f;
p();
}
Задача
Код:
#include <stdio.h>
#include <malloc.h>
#include <math.h>

void f()
{
printf("example\n");
}

void f1(float* m)
{
//  Дан массив вещественных чисел
m[0]=0.15; m[1]=0.21; m[2]=0.17; m[3]=0.11; m[4]=0.12;
m[5]=0.31; m[6]=0.22; m[7]=0.24; m[8]=0.27; m[9]=0.19;
m[10]=0.05; m[11]=0.07; m[12]=0.09; m[13]=0.08; m[14]=0.06;
m[15]=0.11; m[16]=0.12; m[17]=0.13; m[18]=0.14; m[19]=0.15;
}

float f2(float* m, int n)
{
int i;
float _M;

_M = 0.0;

for(i=0;i<n;i++) _M += m[i];
_M /= n;

printf("%f\n", _M);

return _M;
}


void f3(float* fm, float* m, int n, float a, float b )
{
int i;
for(i=0;i<n;i++) 
fm[i] = sqrt((double)a + sin(b*m[i]));

}

void f4(float* fm, int n, float _M)
{
int i;
float st;
float t;
float _S;

st = 0.0;

for(i=0;i<n;i++)
{
t = (fm[i] - _M ) * (fm[i] - _M );
st += t;
}

_S = sqrt((double)1.0/(n -1.0) ) * st;

printf("%f\n", _S);
}

void main()
{
float* m;
float* fm;
int n;
float a;
float b;
int i;
float _M;

void (*p)() = &f;
void (*p1)(float*) = &f1;
float (*p2)(float*, int) = &f2;
void (*p3)(float*, float*, int, float, float) = &f3;
void (*p4)(float*, int, float) = &f4;

a = 0.5;
b = 0.7;
n = 20;
m = (float*)malloc(n*sizeof(float));
fm = (float*)malloc(n*sizeof(float));

p1(m);
_M =p2(m, n);
p3(fm, m, n, a, b);
p4(fm,n, _M);

p();


free(m);
free(fm);
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 15.02.2015, 14:17   #3
Romchik1
 
Регистрация: 15.01.2015
Сообщений: 4
По умолчанию

challengerr, спасибо большое)
Romchik1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Передача массива в функцию(указатели) Настя М Помощь студентам 0 22.05.2014 17:04
Указатели на функцию SteAlzzer Общие вопросы C/C++ 3 05.11.2011 15:16
Проблема с пепедачей аргументов в функцию (массивы + указатели) sekator Общие вопросы C/C++ 2 09.08.2010 13:03
Указатели на функцию. prikolist Общие вопросы C/C++ 9 05.06.2009 15:34
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39