| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++]ошибка в коде программе |
| Автор: serg1L1 15.4.2010, 15:16 |
| Написать функцию печатанье таблицы (в виде аргумент - значение функции) на экран та в файл (имя задаётся пользователем), параметрами которой есть массив указателей на функцию, та количество елементов в этом массиве, что вычесляются: (cos(x)/sin(x))+(sin(x)/cos(x)); и (cos(x)/sin(x))+(sin(x)/cos(x)); Вот код программы: #include <stdio.h> #include <math.h> typedef double val_type; typedef val_type(func)(val_type); val_type math_func(double x) { val_type res=(cos(x)/sin(x))+(sin(x)/cos(x)); if (x==0 || x==1) throw(1); return res; } val_type math2_func(double x) { val_type res1=(cos(x)/sin(x))+(sin(x)/cos(x)); if (x==0 || x==1) throw(1); return res1; } void save (val_type start_x, val_type end_x,val_type step, func *f,int n,char *m1) { FILE*IN; IN=fopen(m1,"w"); for(int i=0;i<n;i++) { for (;start_x<=end_x;start_x+=step) try { fprintf(IN,"%6.4f->%6.4f\n",start_x,f[i](start_x)); // сдесь ошибка (наименование ошибки: индекс требует массив или тип указателя) printf("%6.4f->%6.4f\n",start_x,f[i](start_x)); } catch (int) { fprintf(IN,"%i->%i\n",start_x,"mathematics not know this"); printf("%i->%i\n",start_x,"mathematics not know this"); } } fclose(IN); } int main () { float start_x,end_x,step; char m1[256]; func *funcar[2]; funcar[0] = math_func; funcar[1] = math2_func; printf("Enter the start of x:\n"); scanf("%f",&start_x); printf("Enter the end of x:\n"); scanf("%f",&end_x); printf("Enter the step of x:\n"); scanf("%f",&step); printf ("Please enter a name of file\n"); scanf("%s",&m1); save(start_x, end_x, step, math_func,2,m1); save(start_x, end_x, step, math2_func,2,m1); return 0; } |
| Автор: smalcom 15.4.2010, 15:26 | ||
|
| Автор: serg1L1 15.4.2010, 15:28 | ||
fprintf(IN,"%6.4f->%6.4f\n",start_x,f[i](start_x)); // сдесь ошибка (наименование ошибки: индекс требует массив или тип указателя) а именно с этим ему что-то не нравитсяf[i](start_x) |
| Автор: smalcom 15.4.2010, 15:32 | ||
| блин. сорри. чета туплю. там же указатель на функцию? зачем тогда стоит [i]? Добавлено через 1 минуту и 27 секунд
и это зачем? |
| Автор: serg1L1 15.4.2010, 15:34 | ||||||||
спасибо. всё заработало))))) у тебя есть аська? Добавлено через 1 минуту и 35 секунд
в задании сказано. |
| Автор: smalcom 15.4.2010, 15:37 | ||
не пользуюсь. и лучше тут на форуме - може у кого еще похожие проблемы возникнут, а здесь можно посмотреть решение |
| Автор: serg1L1 15.4.2010, 15:42 |
| smalcom, я цикл убрал. задание выполнено так, как в условии? |
| Автор: smalcom 15.4.2010, 18:03 |
| угу, мне кажется цикл там лишний, как и параментр в функции. может это "солянка" и раньше там через вызов функции и указание номера в массиве созраняло результаты указаной функции из массива, а у тебя всеравно указатель прямой на функцию передается. так что все должно работать теперь |