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 строк из каждого файла.
- fclose(file1); — закрывает файл file1.
- fclose(file2); — закрывает файл file2.
- fclose(file3); — закрывает файл file3.
- file1 = fopen(
file1.txt
,rb
); — открывает файл file1.txt в режиме чтения (rb). - for (i=0; i < N; ++i) — начинается цикл for для считывания N строк.
- fread(&a, sizeof(double), 1, file1); — считывает из файла одну строку (double) в переменную a.
- printf(
%lf\n
,a); — выводит содержимое переменной a на экран. - fclose(file1); — закрывает файл file1.
- file2 = fopen(
file2.txt
,rb
); — открывает файл file2.txt в режиме чтения (rb). - for (i=0; i < N; ++i) — начинается цикл for для считывания N строк.
- fread(&a, sizeof(double), 1, file2); — считывает из файла одну строку (double) в переменную a.
- printf(
%lf\n
,a); — выводит содержимое переменной a на экран. - fclose(file2); — закрывает файл file2.
- file3 = fopen(
file3.txt
,rb
); — открывает файл file3.txt в режиме чтения (rb). - for (i=0; i < N; ++i) — начинается цикл for для считывания N строк.
- fread(&a, sizeof(double), 1, file3); — считывает из файла одну строку (double) в переменную a.
- printf(
%lf\n
,a); — выводит содержимое переменной a на экран. - fclose(file3); — закрывает файл file3. Данный код вполне корректен, если все три файла существуют, открываются без ошибок и содержат по N строк с double. Если какое-то из этих условий не выполняется, код может выдавать ошибки. Также возможно, что код может выдавать ошибку Debug assertion failed!, если в процессе выполнения программы не были выполнены какие-то проверки на правильность работы кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д