Ошибка "Call of nonfunction" - C (СИ)
Формулировка задачи:
Всем привет выдает ошибку Call of nonfunction в прокоментированной строчке...ПОдскажите пожалуйсто как ее исправить..
#include <stdio.h>
#include <conio.h>
float cel (float des, float q) {
float p;
p=des*q;
return p;
}
void main()
{
clrscr();
int mas[10];
float q=2;
int n;
int N=3;
int mas2[10];
int cel,cel2,i,s,e;
float dq,des,num;
for (i=0;i<=11;i++) mas[i]=0;
for (n=0;n<=3;n++) mas2[n]=0;
num=46.625;
cel=num/1;
cel2=num/1;
for (i=0;cel!=0;i++)
{
if (cel==q) mas[i]=cel;
mas[i]=cel%(int)q;
cel=cel/q;
}
des=num-cel2;
printf("des= %f, q= %f " ,des,q);
for (n=0;n<=N;n++)
{
dq=cel(des,q); // Выдает ошибку тут...
printf("dq=%f ",dq);
mas2[n]=(int)dq;
des=dq-(int)dq;
printf("des = %f ",des);
if (des-(int)des==0) break;
}
printf ("\n");
for (i=9;i>=0;i--) printf ("%d",mas[i]);
printf ("\n");
for (n=0;n>=9;n++) printf ("%d",mas2[n]);
getch();
}
исправил всем спасибо)))
исправил всем спасибо)))
Решение задачи: «Ошибка "Call of nonfunction"»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
float cel(float des, float q)
{
return des*q;
}
void main()
{
clrscr();
int mas[10];
float q=2;
int n;
int N=3;
int mas2[10];
int celi//Не нужно давать одно и тоже имя переменной и функции
,cel2,i,s,e;
float dq,des,num;
for (i=0; i<=11; i++) mas[i]=0;
for (n=0; n<=3; n++) mas2[n]=0;
num=46.625;
celi=num/1;
cel2=num/1;
for (i=0; celi!=0; i++)
{
if (celi==q) mas[i]=celi;
mas[i]=celi%(int)q;
celi=celi/q;
}
des=num-cel2;
printf("des= %f, q= %f " ,des,q);
for (n=0; n<=N; n++)
{
dq=cel(des,q); // Выдает ошибку тут...
printf("dq=%f ",dq);
mas2[n]=(int)dq;
des=dq-(int)dq;
printf("des = %f ",des);
if (des-(int)des==0) break;
}
printf ("\n");
for (i=9; i>=0; i--) printf ("%d",mas[i]);
printf ("\n");
for (n=0; n>=9; n++) printf ("%d",mas2[n]);
getch();
}
Объяснение кода листинга программы
- Объединение
и в начале кода для ввода и вывода данных. - Функция float cel(float des, float q) принимает два аргумента типа float и возвращает des*q.
- Функция void main() инициализирует экран и массив из 10 целых чисел mas[10].
- Инициализация переменных: q=2, n=0, N=3, celi=0, cel2=0, i=0, s=0, e=0, dq=0, des=0, num=46.625.
- Цикл for (i=0; i<=11; i++) инициализирует первые 11 элементов массива mas[10] нулями.
- Цикл for (n=0; n<=3; n++) инициализирует первые 3 элемента массива mas2[10] нулями.
- Переменная num=46.625 инициализирует значение переменной des.
- Цикл for (i=0; celi!=0; i++) выполняет следующие действия:
- Проверяет, является ли celi равным q. Если это так, то присваивает i-ый элемент массива mas[10] значение celi.
- Присваивает i-ый элемент массива mas[10] значение celi%(int)q.
- Делит celi на q и присваивает результат переменной celi.
- Переменная des=num-cel2 инициализирует значение переменной des.
- Вывод на экран значений переменных des и q с помощью функции printf().
- Цикл for (n=0; n<=N; n++) выполняет следующие действия:
- Вызывает функцию cel(des,q) и присваивает результат переменной dq.
- Выводит значение переменной dq на экран.
- Присваивает n-ый элемент массива mas2[10] значение (int)dq.
- Вычисляет разницу между dq и (int)dq и присваивает результат переменной des.
- Выводит значение переменной des на экран.
- Проверяет, равно ли des-(int)des нулю. Если это так, то прерывает цикл.
- Вывод на экран всех элементов массива mas[10] с помощью цикла for и функции printf().
- Вывод на экран всех элементов массива mas2[10] с помощью цикла for и функции printf().
- Функция getch() используется для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.