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

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

Восстановить пароль Регистрация
 
 
Pendalfik
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 31
05.07.2013, 14:26     Передача символических имен функций #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
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();
}
Миниатюры
Передача символических имен функций  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 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
5282 / 4801 / 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
5282 / 4801 / 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++ Использование имен предопределенных объектов в качестве имен переменных
Передача массива в несколько функций, чтобы исходный массив не изменялся C++
C++ Не возникает ли коллизия имен, если использовать два пространства имен, и в каждом из них будут одноименные?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 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     Передача символических имен функций
Ответ Создать тему
Опции темы

Текущее время: 21:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru