Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 31
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте,
Чтобы долго не объяснять, прилагаю условие задачи и мой код. Прошу Вашего совета по поводу вставки внутрь созданной функции указания на стандартную. Мне кажется, что моя запись ошибочна, но что именно не так, понять не могу. Вот код, задание ниже:
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();
}
Миниатюры
Передача символических имен функций  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2013, 14:26
Ответы с готовыми решениями:

Передача значений функций в главную программу, вызов функций
Здравствуйте! Скорее всего, неправильно передаю значения функциям и в главную программу. Помогите...

Пересечение имён функций
Например я включаю &lt;math.h&gt;, но при этом у меня у самого ещё определена функция например log. Какая...

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

Пространства имен и перегрузка функций
описание: есть библиотека. Пространство имен namespace1, в нем есть несколько перегруженных...

26
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.07.2013, 21:09 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Pendalfik Посмотреть сообщение
int main()
Где сделали?
0
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;
}
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.07.2013, 21:22 23
Насчёт ошибок. Первые пять это предупреждения (не ошибки), что переменные не используются и что значение n не задано. Нужно задать значение n. А ошибка одна. Попробуйте вместо abs ниписать fabs.
1
0 / 0 / 0
Регистрация: 18.05.2013
Сообщений: 31
05.07.2013, 21:27  [ТС] 24
Цитата Сообщение от alsav22 Посмотреть сообщение
Насчёт ошибок. Первые пять это предупреждения (не ошибки), что переменные не используются и что значение n не задано. Нужно задать значение n. А ошибка одна. Попробуйте вместо abs ниписать fabs.
Заменила, ошибки действительно пропали. Последний вопрос: как при моём задании мне задать значение n?

Добавлено через 2 минуты
А vvod так и не работает...
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.07.2013, 21:30 25
Цитата Сообщение от Pendalfik Посмотреть сообщение
А vvod так и не работает...
А где у вас реализации vvod()? Чему работать?
0
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;
}
0
5498 / 4893 / 831
Регистрация: 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)), потом результаты сложите.
1
05.07.2013, 21:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2013, 21:46
Помогаю со студенческими работами здесь

Регистр символов при записи имён функций
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; void Input(int Arr,int size); void...

Листинг MASMa выдает 15 символических имён, хотя в таблице их 11
Имеется вот такой листинг (не смотрите на программу, работать она не должна, главное скомпилить без...

Построить упорядоченную таблицу символических имен в конце первого просмотра
Ув. эксперты, в ассемб полный 0 подскажите , как реализовать(На Tasm). Задание: Для полученной...

Конфликт имен функций
Есть готовый код использующий jquery, в котором объявлена ф-ция autocomplete. После ее объявления и...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru