Дан текстовый файл, содержащий коэффициенты квадратных уравнений
Все работает, но нужно сначала вывести количество уравнений N, а только потом корни. Понимаю, что нужно создать для этого временный файл, но как записать в него данные в нужном порядке из такого цикла?
Код:
#include <stdio.h>
#include <windows.h>
#include <math.h>
void main()
{
SetConsoleOutputCP(1251);
int end,N2=0,N1=0,N0=0;
float D,x1,x2;
float a,b,c;//коэффициенты
FILE *num=fopen("num.txt","r"), *rad=fopen("rad.txt","w"), *time=tmpfile();
if(num==NULL)
printf("Не удалось открыть файл");
if(rad==NULL)
printf("Не удалось открыть файл");
while ((end = fscanf(num, "%f %f %f", &a, &b, &c)) == 3)
{
printf("a = %f, b = %f, c = %fn", a, b, c);
D=(pow(b,2))-(4*(a*c));
if(D>0)
N2++;
if(D==0)
N1++;
if(D<0)
N0++;
x1=((-(b))-(sqrt(D)))/(2*a);
x2=((-(b))+(sqrt(D)))/(2*a);
fprintf(time,"x1=%f,x2=%fn",x1,x2);
printf("%f,%fn",x1,x2);
}
fprintf(time,"N2=%d,N1=%d,N0=%dnn",N2,N1,N0);
fclose(num);
fclose(rad);
system("pause");
}
#include <windows.h>
#include <math.h>
void main()
{
SetConsoleOutputCP(1251);
int end,N2=0,N1=0,N0=0;
float D,x1,x2;
float a,b,c;//коэффициенты
FILE *num=fopen("num.txt","r"), *rad=fopen("rad.txt","w"), *time=tmpfile();
if(num==NULL)
printf("Не удалось открыть файл");
if(rad==NULL)
printf("Не удалось открыть файл");
while ((end = fscanf(num, "%f %f %f", &a, &b, &c)) == 3)
{
printf("a = %f, b = %f, c = %fn", a, b, c);
D=(pow(b,2))-(4*(a*c));
if(D>0)
N2++;
if(D==0)
N1++;
if(D<0)
N0++;
x1=((-(b))-(sqrt(D)))/(2*a);
x2=((-(b))+(sqrt(D)))/(2*a);
fprintf(time,"x1=%f,x2=%fn",x1,x2);
printf("%f,%fn",x1,x2);
}
fprintf(time,"N2=%d,N1=%d,N0=%dnn",N2,N1,N0);
fclose(num);
fclose(rad);
system("pause");
}