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

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

Войти
Регистрация
Восстановить пароль
 
 
Pendalfik
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 31
#1

Передача символических имен функций - C++

05.07.2013, 14:26. Просмотров 717. Ответов 26
Метки нет (Все метки)

Здравствуйте,
Чтобы долго не объяснять, прилагаю условие задачи и мой код. Прошу Вашего совета по поводу вставки внутрь созданной функции указания на стандартную. Мне кажется, что моя запись ошибочна, но что именно не так, понять не могу. Вот код, задание ниже:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <windows.h>
#define Nx  4
#define Ny  5
#define Nz  6
void vvod(float x[ ], int n, char q);
double brackets(float x[ ], int n, double a, double b, char f1, char f2);
{
double series = (f1(a*x[i])+ f2(b*x[i]));
return series;
}
main()
{
char str[50];
textbackground(2);
textcolor(15);
clrscr();
double x[Nx], y[Ny], z[Nz], w, a, b, c, g, r, q;
CharToOem("\nÂâåäèòå ýëåìåГ*ГІГ» Г¬Г*ññèâîâ x, y, z:\n", str);
printf(str);
vvod(x, Nx, 'x');
vvod(y, Ny, 'y');
vvod(z, Nz, 'z');
CharToOem("\nÂâåäèòå a:\n", str);
printf(str);
scanf("%lf",&x);
CharToOem("\n\nÂâåäèòå b:\n", str);
printf(str);
scanf("%lf",&y);
CharToOem("\n\nÂâåäèòå c:\n", str);
printf(str);
scanf("%lf",&z);
CharToOem("\n\nÂâåäèòå  g:\n", str);
printf(str);
scanf("%lf",&a);
CharToOem("\n\nÂâåäèòå  r:\n", str);
printf(str);
scanf("%lf",&b);
CharToOem("\n\nÂâåäèòå  q:\n", str);
printf(str);
scanf("%lf",&c);
w=sum(x, Nx)/znam+sum(z, Nz);
printf("w=%f\n",w);
{
int i;
float w=0;
for (i=0; i<n; i++)
w+=brackets(x[i]),Nx,a,b,sin(),cos())+brackets(y[i]),Ny,c,g,tan(),abc())+brackets(z[i]),Nz,r,q,cos(), sin());
printf("\nw = %f",w);
 
CharToOem("\nÄëÿ âûõîäГ* Г*Г*æìèòå ГЄГ«Г*ГўГЁГёГі Enter", str);
printf(str);
getch();
}
Миниатюры
Передача символических имен функций  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2013, 14:26     Передача символических имен функций
Посмотрите здесь:

Перегрузка имен функций - C++
Благодаря чему в С++ разрешена перегрузка имен функций?

Пространства имен и перегрузка функций - C++
описание: есть библиотека. Пространство имен namespace1, в нем есть несколько перегруженных функций func(). // header.h #ifndef...

"Автозаполнение" имен типов/функций/переменных - C++
Собственно вопрос в названии. Чтобы понимать, что за &quot;автозаполнение&quot; : когда вписываешь экземпляр класса/структуры, выдается окошко выбора...

Передача в "свойской" функции флагов и имен контейнеров - C++
Добрый день! Пишу значит функцию, что она конкретно делает не важно в данном контексте: void GetDIR(const char *Target, ??????? )...

Задачи из книги Прата (представить значения с помощью символических констант) - C++
Только начал изучать книгу Прата &quot;Язык программирования С++&quot;,столкнулся с такой задачей: Напишите программу, которая запрашивает широту в...

Передача значений функций - C++
извините конечно за дурацкий вопрос, не нашёл, думаю, может вы поможете... задача такова: мне надо например сделать 3 разных функции...

Передача параметров указателями при написании функций - C++
Как написать вот такую программу : Вычислить и запомнить суммы положительных элементов каждой строки матрицы a(10,20), b(15,10)....

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.07.2013, 21:09     Передача символических имен функций #21
Цитата Сообщение от Pendalfik Посмотреть сообщение
int main()
Где сделали?
Pendalfik
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 31
05.07.2013, 21:14  [ТС]     Передача символических имен функций #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Где сделали?
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <windows.h>
#define Nx  4
#define Ny  5
#define Nz  6
void vvod(double x[ ], int n, char q)
{}
double brackets(double x, int n, double a, double b, double f1(double), double f2(double))
{
    double series = (f1(a * x)+ f2(b * x));
    return series;
}
 
int main()
{
char str[50];
//textbackground(2);
//textcolor(15);
//clrscr();
double x[Nx], y[Ny], z[Nz], w, a, b, c, g, r, q;
CharToOem("\nÂâåäèòå ýëåìåГ*ГІГ» Г¬Г*ññèâîâ x, y, z:\n", str);
printf(str);
vvod(x, Nx, 'x');
vvod(y, Ny, 'y');
vvod(z, Nz, 'z');
CharToOem("\nÂâåäèòå a:\n", str);
printf(str);
scanf("%lf",&a);
CharToOem("\n\nÂâåäèòå b:\n", str);
printf(str);
scanf("%lf",&b);
CharToOem("\n\nÂâåäèòå c:\n", str);
printf(str);
scanf("%lf",&c);
CharToOem("\n\nÂâåäèòå  g:\n", str);
printf(str);
scanf("%lf",&g);
CharToOem("\n\nÂâåäèòå  r:\n", str);
printf(str);
scanf("%lf",&r);
CharToOem("\n\nÂâåäèòå  q:\n", str);
printf(str);
scanf("%lf",&q);
 
int i;
int n;
w = 0;
for (i=0; i<n; i++)
 w += brackets(x[i], Nx, a, b, sin, cos) + brackets(y[i], Ny, c, g, tan, abs) + brackets(z[i], Nz, r, q, cos, sin);
printf("\nw = %f",w);
 
CharToOem("\nÄëÿ âûõîäГ* Г*Г*æìèòå Enter", str);
printf(str);
getch();
return 0;
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.07.2013, 21:22     Передача символических имен функций #23
Насчёт ошибок. Первые пять это предупреждения (не ошибки), что переменные не используются и что значение n не задано. Нужно задать значение n. А ошибка одна. Попробуйте вместо abs ниписать fabs.
Pendalfik
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 31
05.07.2013, 21:27  [ТС]     Передача символических имен функций #24
Цитата Сообщение от alsav22 Посмотреть сообщение
Насчёт ошибок. Первые пять это предупреждения (не ошибки), что переменные не используются и что значение n не задано. Нужно задать значение n. А ошибка одна. Попробуйте вместо abs ниписать fabs.
Заменила, ошибки действительно пропали. Последний вопрос: как при моём задании мне задать значение n?

Добавлено через 2 минуты
А vvod так и не работает...
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.07.2013, 21:30     Передача символических имен функций #25
Цитата Сообщение от Pendalfik Посмотреть сообщение
А vvod так и не работает...
А где у вас реализации vvod()? Чему работать?
Pendalfik
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 31
05.07.2013, 21:38  [ТС]     Передача символических имен функций #26
Цитата Сообщение от alsav22 Посмотреть сообщение
А где у вас реализации vvod()? Чему работать?
а вот это:
C
1
2
3
vvod(x, Nx, 'x');
vvod(y, Ny, 'y');
vvod(z, Nz, 'z');
Просто в предыдущем задании (там была одна функция и было проще) vvod работал
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
36
37
38
39
40
#include<stdio.h>
#include<math.h>
#define Nx  6
#define Ny 10
#define Nz  9
void vvod(float x[], int n, char q);
float sum(float x[], int n, double f1(double));
void main()
{
float x[Nx], y[Ny], z[Nz], w, znam;
vvod(x, Nx, 'x');
vvod(y, Ny, 'y');
vvod(z, Nz, 'z');
znam=sum(y, Ny, cos);
if(znam)
{
w=sum(x, Nx, sin)/znam+sum(z, Nz, tan);
printf("w=%f\n",w);
}
else
puts("Деление на 0");
}
void vvod(float x[], int n, char q)
{
int i;
for (i=0; i<n; i++)
{
printf("Введите %c[%i]=\n",q, i+1);
scanf("%f",&x[i]);
}
return;
 }
float sum(float x[], int n, double f1(double))
{
float s=0;
int i;
for(i=0; i<n; i++)
s+=x[i] * f1(x[i]);
return s;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2013, 21:46     Передача символических имен функций
Еще ссылки по теме:

Передача функций обратного вызова как членов некоторого класса - C++
Пытаюсь понемногу изучать OpenGL, и вот сейчас столкнулся с такой проблемой: Имеется некоторый класс, содержащий вектор и пару...

Указатели, адресная арифметика и передача аргументов функций по значению и по ссылке - C++
Подскажите, пожалуйста, как решить такую задачу вручную. На экзамене предложат задание такого типа НА БУМАГЕ, и надо будет написать, что...

Передача массива в несколько функций, чтобы исходный массив не изменялся - C++
Привет! Возник такой вопрос: Как передать исходный массив в несколько функции, так, чтобы исходный массив не изменялся ?

Объясните, пожалуйста, как работает передача переменных при вызове функций? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void z(int *a,int lenght){ int *p; for...

Шаблоны имен - C++
Добрый вечер! Пожалуйста помогите разобраться с этими шаблонами имен, а то дело дальше не движется. В указанной директории (видимость...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.07.2013, 21:46     Передача символических имен функций #27
Цитата Сообщение от Pendalfik Посмотреть сообщение
а вот это:
Это вызов функции, у которой нет реализации.

Добавлено через 1 минуту
Цитата Сообщение от Pendalfik Посмотреть сообщение
vvod работал
Потому что там реализация написана.

Добавлено через 2 минуты
Специально для вас:
C++
1
2
3
4
5
6
7
8
9
void vvod(double x[ ], int n, char q)
{
    int i;
    for (i = 0; i < n; i++)
    {
        printf("Введите %c[%i]=\n", q, i + 1);
        scanf("%f",&x[i]);
    }
}
Добавлено через 3 минуты
Вот это в одном цикле не получится подсчитать, потому что размеры массивов разные:
C++
1
w += brackets(x[i], Nx, a, b, sin, cos) + brackets(y[i], Ny, c, g, tan, fabs) + brackets(z[i], Nz, r, q, cos, sin);
Для каждого массива сделайте свой цикл (для вычисления brackets(x[i], Nx, a, b, sin, cos)), потом результаты сложите.
Yandex
Объявления
05.07.2013, 21:46     Передача символических имен функций
Ответ Создать тему
Опции темы

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