已知文件Coefficient.txt中存有多个方程ax2+bx+c=0中系数a,b,c的值,数据按行排列编写程序求出方程的解,并将结果写入到result.txt文件中,要求考虑a,b,c各种取值情况
Coefficient.txt内容举例
5 25 3
0 2 6
0 0 0
1 1 8
(1)读Coefficient.txt
(2)求出方程的解
(3)写到文件result.txt
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
void Fun(float *a);
FILE * fp;
float a[3] = {0};
int n = 0;
char ch, ch2 = '0';
int sign = 1, dot = 1, flag = 0;
if((fp=fopen("D:\\Coefficient.txt", "r"))!=NULL){
while(!feof(fp))
{
ch = getc(fp);
if(ch >= '0' && ch <= '9')
{
a[n] = a[n] * 10 + ch - 48;
flag = 0;
}else
{
if(ch == '-'){
sign = -1;
}
else if(ch == '.'){
dot = 10;
}
else if((ch == '\n' || ch == EOF) && (n + 1)%3 == 0 )
{
if(flag == 0)
{
a[n] = sign * a[n]/dot;
flag = 1;
}
sign = 1;
dot = 1;
Fun(a);
n = 0;
memset(a, 0, sizeof(a)); //清空数组
}
else if(ch != '\n')
{
if(flag == 0)
{
a[n] = sign * a[n]/dot;
flag = 1;
}
sign = 1;
dot = 1;
n++;
}
}
}
fclose(fp);
}else{
printf("文件打开失败!");
return 0;
}
return 0;
}
void Fun(float *a){
FILE * fp;
float diat = (float)(a[1]*a[1] - 4 * a[0]* a[2]);
printf("%.2f %.2f %.2f %.2f\n", diat, a[0], a[1], a[2]);
if((fp = fopen("D:\\result.txt", "a+")) == NULL){
printf("result.txt打开失败\n");
return ;
}
if(a[0] == 0){
if(a[1] != 0){
fprintf(fp, "%.2fx^2 + %.2fx + %.2f = 0的解为:x=%f\n", a[0],a[1],a[2],a[2]/a[1]);
}else{
if(a[2] == 0)
fprintf(fp ,"%.2fx^2 + %.2fx + %.2f = 0的解为:任意实数\n", a[0], a[1], a[2]);
else{
fprintf(fp, "%.2fx^2 + %.2fx + %.2f = 0的解为:无解\n", a[0], a[1], a[2]);
}
}
}else{
if(diat < 0)
fprintf(fp, "%.2fx^2 + %.2fx + %.2f = 0的解为:无解\n", a[0], a[1], a[2]);
else
fprintf(fp, "%.2fx^2 + %.2fx + %.2f = 0的解为:x1 = %.2f, x2 = %.2f\n", a[0], a[1], a[2],(-a[1] + sqrt(diat))/2*a[0],(-a[1]-sqrt(diat))/2*a[0]);
}
fclose(fp);
}
``
*简单的测了一下,有什么问题欢迎评论*