Debug assertion failed! - C (СИ)

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

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

Здравствуйте, такая проблема. Пишу программу: Для двух файлов А и В, которые состоят из 20 элементов: А={ai}, B={bi} i=[1,20] необходимо рассчитать значение сi=((ai+bi)+56)/(ai+5)2 и записать его в файл С={ci}.
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <ctime>
#include <cstdio>
#include <conio.h>
 
#define N 20
 
int main()
{
    void view_file(FILE* file);
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    FILE *file1, *file2, *file3;
 
    file1 = fopen("file1.txt", "rt");
    file2 = fopen("file2.txt", "rt");
    file3 = fopen("file3.txt", "rt");
    double random;
    for (int i(0); i < N; ++i);
    {
        random = rand() % 100 + 101;
        fwrite(&random, sizeof(double), 1, file1);
        random = rand() % 100 + 1;
        fwrite(&random, sizeof(double), 1, file2);
 
    }
    rewind(file1);
    rewind(file2);
 
    int a, b, c;
    for (int i(0); i < N; ++i);
    {
        fwrite(&a, sizeof(double), 1, file1);
        fwrite(&b, sizeof(double), 1, file2);
        c = ((a / b) + 56) / (a + 5) ^ 2;
        fwrite(&c, sizeof(double), 1, file3);
    }
    rewind(file1);
    rewind(file2);
    rewind(file3);
 
    //std :: cout << std::endl << "First file: ";
    //view_file(file1); std::cout << std::endl;
    //std:: cout << std::endl << "Cesond file: ";
    //view_file(file2); std::cout << std::endl;
    //cout << endl << "Third file: ";

    _getch();
    return 0;
}

Решение задачи: «Debug assertion failed!»

textual
Листинг программы
    fclose(file1);
    fclose(file2);
    fclose(file3);
 
    file1 = fopen("file1.txt", "rb");
    for (i=0; i < N; ++i)
    {
        fread(&a, sizeof(double), 1, file1);
        printf(" %lf\n",a);
    }
    fclose(file1);
    file2 = fopen("file2.txt", "rb");
    for (i=0; i < N; ++i)
    {
        fread(&a, sizeof(double), 1, file2);
        printf(" %lf\n",a);
    }
    fclose(file2);
    file3 = fopen("file3.txt", "rb");
    for (i=0; i < N; ++i)
    {
        fread(&a, sizeof(double), 1, file3);
        printf(" %lf\n",a);
    }
    fclose(file3);

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

В данном коде происходит чтение из трёх файлов (file1.txt, file2.txt, file3.txt) и вывод содержимого на экран. Код открывает каждый файл в режиме чтения (rb), считывает из него один double и выводит его на экран. При этом используется цикл for для считывания всех N строк из каждого файла.

  1. fclose(file1); — закрывает файл file1.
  2. fclose(file2); — закрывает файл file2.
  3. fclose(file3); — закрывает файл file3.
  4. file1 = fopen(file1.txt, rb); — открывает файл file1.txt в режиме чтения (rb).
  5. for (i=0; i < N; ++i) — начинается цикл for для считывания N строк.
  6. fread(&a, sizeof(double), 1, file1); — считывает из файла одну строку (double) в переменную a.
  7. printf(%lf\n,a); — выводит содержимое переменной a на экран.
  8. fclose(file1); — закрывает файл file1.
  9. file2 = fopen(file2.txt, rb); — открывает файл file2.txt в режиме чтения (rb).
  10. for (i=0; i < N; ++i) — начинается цикл for для считывания N строк.
  11. fread(&a, sizeof(double), 1, file2); — считывает из файла одну строку (double) в переменную a.
  12. printf(%lf\n,a); — выводит содержимое переменной a на экран.
  13. fclose(file2); — закрывает файл file2.
  14. file3 = fopen(file3.txt, rb); — открывает файл file3.txt в режиме чтения (rb).
  15. for (i=0; i < N; ++i) — начинается цикл for для считывания N строк.
  16. fread(&a, sizeof(double), 1, file3); — считывает из файла одну строку (double) в переменную a.
  17. printf(%lf\n,a); — выводит содержимое переменной a на экран.
  18. fclose(file3); — закрывает файл file3. Данный код вполне корректен, если все три файла существуют, открываются без ошибок и содержат по N строк с double. Если какое-то из этих условий не выполняется, код может выдавать ошибки. Также возможно, что код может выдавать ошибку Debug assertion failed!, если в процессе выполнения программы не были выполнены какие-то проверки на правильность работы кода.

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


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

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

6   голосов , оценка 4 из 5