Чтение и вывод данных с файла (решение квадратного уравнения) - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д