Чтение и вывод данных с файла (решение квадратного уравнения) - 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;
}

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

  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
Похожие ответы