Чтение и вывод данных с файла (решение квадратного уравнения) - C (СИ)
Формулировка задачи:
уважаемые программисты помогите найти ошибку...
прога должна считывать данные из файла...
#include <stdio.h>
#include <cmath>
#include <locale.h>
int main()
{
setlocale(LC_ALL,"Russian");
double a, b, c, x1, x2;
FILE *f;
f = fopen( "date.txt", "rt" );
if ( f == NULL )
{
printf ("данные не считаны\n");
return -1;
}
int retScan = fscanf ("%lf%lf%lf", &a, &b, &c); /ошибка здесь
if( retScan != 3 )
{
printf ("ошибка при чтении данных\n");
return -2;
}
if (a==0)
{
printf ("Ошибка! а=0! \n");
return -3;
}
if ((b*b-4*a*c)<0)
{
printf ("Ошибка! Дискриминант меньше 0!\n");
return -4;
}
printf ("%lf\n", (-b+sqrt(b*b-4*a*c))/(2*a));
printf ("%lf\n", (-b-sqrt(b*b-4*a*c))/(2*a));
return 0;
}Решение задачи: «Чтение и вывод данных с файла (решение квадратного уравнения)»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <locale.h>
int main(void)
{
double a, b, c, x1, x2;
int retScan;
FILE *f;
setlocale(LC_ALL,"Russian");
f = fopen( "date.txt", "rt" );
if ( f == NULL )
{
printf ("данные не считаны\n");
return -1;
}
retScan = fscanf (f, "%lf %lf %lf", &a, &b, &c);
fclose(f);
if( retScan != 3 )
{
printf ("ошибка при чтении данных\n");
return -2;
}
if (a==0)
{
printf ("Ошибка! а=0! \n");
return -3;
}
if ((b*b-4*a*c)<0)
{
printf ("Ошибка! Дискриминант меньше 0!\n");
return -4;
}
printf ("%lf\n", (-b+sqrt(b*b-4*a*c))/(2*a));
printf ("%lf\n", (-b-sqrt(b*b-4*a*c))/(2*a));
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются переменные a, b, c, x1, x2 типа double и переменная retScan типа int
- Устанавливается русскоязычная локаль с помощью функции setlocale
- Открывается файл
date.txtдля чтения с помощью функции fopen. Если файл не может быть открыт, выводится сообщение об ошибке и возвращается -1 - С помощью функции fscanf считываются значения переменных a, b, c из файла. Если что-то пошло не так, выводится сообщение об ошибке и возвращается -2
- Проверяется, равно ли значение переменной a нулю. Если это так, выводится сообщение об ошибке и возвращается -3
- Вычисляется дискриминант (значение под корнем) и проверяется его значение. Если оно отрицательное, выводится сообщение об ошибке и возвращается -4
- Вычисляются значения x1 и x2 с помощью формулы, которая использует значения переменных a, b и c
- Выводятся значения x1 и x2 на экран с помощью функции printf
- Завершается выполнение программы с возвратом значения 0