Чтение и вывод данных с файла (решение квадратного уравнения) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

уважаемые программисты помогите найти ошибку... прога должна считывать данные из файла...
Листинг программы
  1. #include <stdio.h>
  2. #include <cmath>
  3. #include <locale.h>
  4. int main()
  5. {
  6. setlocale(LC_ALL,"Russian");
  7. double a, b, c, x1, x2;
  8. FILE *f;
  9. f = fopen( "date.txt", "rt" );
  10. if ( f == NULL )
  11. {
  12. printf ("данные не считаны\n");
  13. return -1;
  14. }
  15. int retScan = fscanf ("%lf%lf%lf", &a, &b, &c); /ошибка здесь
  16. if( retScan != 3 )
  17. {
  18. printf ("ошибка при чтении данных\n");
  19. return -2;
  20. }
  21. if (a==0)
  22. {
  23. printf ("Ошибка! а=0! \n");
  24. return -3;
  25. }
  26. if ((b*b-4*a*c)<0)
  27. {
  28. printf ("Ошибка! Дискриминант меньше 0!\n");
  29. return -4;
  30. }
  31. printf ("%lf\n", (-b+sqrt(b*b-4*a*c))/(2*a));
  32. printf ("%lf\n", (-b-sqrt(b*b-4*a*c))/(2*a));
  33. return 0;
  34. }

Решение задачи: «Чтение и вывод данных с файла (решение квадратного уравнения)»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <locale.h>
  4. int main(void)
  5. {
  6.         double a, b, c, x1, x2;
  7.         int retScan;
  8.         FILE *f;
  9.         setlocale(LC_ALL,"Russian");
  10.         f = fopen( "date.txt", "rt" );
  11.         if ( f == NULL )
  12.         {
  13.                 printf ("данные не считаны\n");
  14.                 return -1;
  15.         }
  16.         retScan = fscanf (f, "%lf %lf %lf", &a, &b, &c);
  17.         fclose(f);
  18.         if( retScan != 3 )
  19.         {
  20.                 printf ("ошибка при чтении данных\n");
  21.                 return -2;
  22.         }
  23.         if (a==0)
  24.         {
  25.                 printf ("Ошибка! а=0! \n");
  26.                 return -3;
  27.         }
  28.         if ((b*b-4*a*c)<0)
  29.         {
  30.                 printf ("Ошибка! Дискриминант меньше 0!\n");
  31.                 return -4;
  32.         }
  33.         printf ("%lf\n", (-b+sqrt(b*b-4*a*c))/(2*a));
  34.         printf ("%lf\n", (-b-sqrt(b*b-4*a*c))/(2*a));
  35.         return 0;
  36. }

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяются переменные a, b, c, x1, x2 типа double и переменная retScan типа int
  3. Устанавливается русскоязычная локаль с помощью функции setlocale
  4. Открывается файл date.txt для чтения с помощью функции fopen. Если файл не может быть открыт, выводится сообщение об ошибке и возвращается -1
  5. С помощью функции fscanf считываются значения переменных a, b, c из файла. Если что-то пошло не так, выводится сообщение об ошибке и возвращается -2
  6. Проверяется, равно ли значение переменной a нулю. Если это так, выводится сообщение об ошибке и возвращается -3
  7. Вычисляется дискриминант (значение под корнем) и проверяется его значение. Если оно отрицательное, выводится сообщение об ошибке и возвращается -4
  8. Вычисляются значения x1 и x2 с помощью формулы, которая использует значения переменных a, b и c
  9. Выводятся значения x1 и x2 на экран с помощью функции printf
  10. Завершается выполнение программы с возвратом значения 0

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы