Не записывается в файл. Ошибка Floating point error: Domain - C (СИ)
Формулировка задачи:
При попытке записать данные в таблицу выводит сообщение:
Floating point error: Domain.
Abnormal program termination
Что сделать, чтобы данные записывались в файл? Код программы ниже.
#include<stdio.h>
FILE*l;
//FILE*s;
main()
{int i,j=10; //j- shirina iacheek
float y,a,b,x;
l=fopen("tab.rtf","w");
//s=fopen("znaki.rtf","w");
//fprintf(s,"179 %c\t180 %c\t191 %c\t192 %c\t 193 %c\t 194 %c\t 195 %c\t196 %c\t197 %c\t217 %c\t 218 %c\t",179,180,191,192,193,194,195,196,197,217,218);
puts("vvedite b");
scanf("%f",&b);
clrscr();
fprintf(l,"b=%6.2f\n",b);
//risuem shapku
fprintf(l,"%c",218);
for(i=0;i<j;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",194);
for(i=0;i<j;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",194);
for(i=0;i<j;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",191);
fprintf(l,"\n%c%10s%c%10s%c%10s%c",179,"y",179,"x",179,"c",179);
//risum telo kagdii cicl odnu polosku
for(x=2,a=1;x>=2&&x<=3.2&&a>=1&&a<=2.8;x=x+0.2,a=a+0.3)
{
if ((a-b)!=0)
{
y=((pow(a,2)-3)/(a-b))*x+(pow(a,2)-pow(b,2))/a;
}
fprintf(l,"\n%c",195);
for(i=0;i<10;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",197);
for(i=0;i<10;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",197);
for(i=0;i<10;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",180);
fprintf(l,"\n%c%10.2f%c%10.2f%c%10.2f%c",179,y,179,a,179,x,179);
}
fprintf(l,"\n%c",192);
for(i=0;i<j;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",193);
for(i=0;i<j;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",193);
for(i=0;i<j;i++)
fprintf(l,"%c",196);
fprintf(l,"%c",217);
getch();
}Решение задачи: «Не записывается в файл. Ошибка Floating point error: Domain»
textual
Листинг программы
if ((a-b)!=0)
{
y=((pow(a,2)-3)/(a-b))*x+(pow(a,2)-pow(b,2))/a;
}
Объяснение кода листинга программы
- Проверка условия:
(a-b)!=0 - Вычисление значения переменной
y:pow(a,2)- возведение в квадрат числаa(pow(a,2)-3)- вычитание числа 3 из результата возведения в квадрат числаa(a-b)- вычитание числаbиз числаa(pow(a,2)-pow(b,2))/a- деление разности результатов возведения в квадрат чиселaиbна числоa(pow(a,2)-3)/(a-b)- деление результата вычитания числа 3 из результата возведения в квадрат числаaна результат вычитания числаbиз числаax+(pow(a,2)-pow(b,2))/a- сложение результата вычитания числаbиз числаaи результата деления разности результатов возведения в квадрат чиселaиbна числоa