Очистка массива (Необработанное исключение в "0x7c93402a") - C (СИ)
Формулировка задачи:
Всем добрый день.
Суть проблемы такова. Есть такая простая программа:
Первые четыре функции работают нормально, а вот в трех остальных... . Расчеты проходят без ошибок (рис. 1), но при попытке затереть массив нулями получаю вот это (рис. 2). Вопрос, что с этим делать? Или можно ли еще как-нибудь зачистить массивы от промежуточных данных?
#include <stdio.h> #include <conio.h> #include <locale.h> #include <iostream> using namespace std; #define SIZE 100 #define END system ("pause"); fprintf (outfile, "#######################################################################\n"); goto loop; break; void description (); void menu (); void mas_rezult_delete (float mas [SIZE], int number_elements); void mas_delete (float mas[SIZE][SIZE], int number_elements); int main () { setlocale(LC_ALL, "Russian"); int var; int num_det, time_det; int i, j, l; /*Промежуточеые для массивов*/ float n_t, N, d_n_t, d_t; /*Исходные данные*/ float sum = 0; /*Массив под данные*/ float mas[SIZE] [SIZE]; /*Массив под результаты*/ float mas_rezult [SIZE]; FILE *outfile; FILE *infile_stat_work; FILE *infile_stat_rep; FILE *infile_stat_zero; outfile = fopen("C:\\result.txt", "w"); infile_stat_work = fopen("C:\\StatWork.txt", "r"); infile_stat_rep = fopen("C:\\StatRep.txt", "r"); infile_stat_zero = fopen("C:\\StatZero.txt", "r"); description (); /*автор, дисциплина*/ loop: menu (); /*Меню программы*/ scanf ("%d", &var); switch (var) { case 1 : printf ("Введите число изделий, не отказавших к моменту времени t: \n"); scanf ("%f", &n_t); printf ("Введите число изделий, поставленных на испытания: \n"); scanf ("%f", &N); printf ("Статистическая оценка вероятности безотказной работы изделия: %0.3f \n", n_t / N); fprintf (outfile, "Число изделий, не отказавших к моменту времени t: %f, Число изделий, поставленных на испытания: %f, Статистическая оценка вероятности безотказной работы изделия: %f \n", n_t, N, n_t / N); END case 2 : printf ("Введите число изделий, не отказавших к моменту времени t: \n"); scanf ("%f", &n_t); printf ("Введите число изделий, поставленных на испытания: \n"); scanf ("%f", &N); printf ("Статистическая оценка вероятности отказа изделия: %0.3f \n",(N - n_t) / N); fprintf (outfile, "Число изделий, не отказавших к моменту времени t: %f, Число изделий, поставленных на испытания: %f, Статистическая оценка вероятности отказа изделия: %f \n", n_t, N, (N - n_t) / N); END case 3 : printf ("Введите число отказавших изделий на участке времени (t, t+d_t): \n"); scanf ("%f", &d_n_t); printf ("Введите интервал времени: \n"); scanf ("%f", &d_t); printf ("Введите число изделий, поставленных на испытания: \n"); scanf ("%f", &N); printf ("Статистическая оценка частоты отказов изделия: %0.3f \n", d_n_t / (N * d_t)); fprintf (outfile, "Число отказавших изделий на участке времени (t, t+d_t): %f, интервал времени: %f, Число изделий, поставленных на испытания: %f, Статистическая оценка частоты отказов изделия: %f \n", d_n_t,d_t, N, d_n_t / (N * d_t)); END case 4 : printf ("Введите число отказавших изделий на участке времени (t, t+d_t): \n"); scanf ("%f", &d_n_t); printf ("Введите интервал времени: \n"); scanf ("%f", &d_t); printf ("Введите число изделий, не отказавших к моменту времени t: \n"); scanf ("%f", &n_t); printf ("Статистическая оценка интенсивности отказов изделия: %0.3f \n", d_n_t / (d_t * n_t)); fprintf (outfile, "Число отказавших изделий на участке времени (t, t+d_t): %f, интервал времени: %f, Число изделий, не отказавших к моменту времени t: %f, Статистическая оценка интенсивности отказов изделия: %f \n", d_n_t, d_t, n_t, d_n_t / (d_t * n_t)); END case 5 : printf ("Введите количество испытанных изделий: \n"); scanf ("%d", &num_det); for (i = 0; i < num_det; i++ ) { for (j = 0; j < 2; j++ ) { fscanf(infile_stat_work ,"%f", & mas[i] [j] ); } } /*вывод массива на экран*/ printf( "Результаты испытаний:\n" ); for (i = 0, j = 1; i < num_det; i++ ) printf( "Деталь %d: %0.3f \n",i + 1, mas[i] [j] ); printf( "\n" ); /*Суммирование результатов*/ for (i = 0, j = 1; i < num_det; i++ ) sum+=mas[i][j]; printf( "Статистическая оценка среднего времени безотказной работы изделия: %0.3f \n",sum/num_det); for (i = 0, j = 1; i < num_det; i++ ) fprintf (outfile,"Деталь %d: %0.3f \n",i + 1, mas[i] [j] ); fprintf (outfile,"Статистическая оценка среднего времени безотказной работы изделия: %0.3f \n",sum/num_det); mas_delete (mas, SIZE); END case 6 : printf ("Введите количество испытанных изделий: \n"); scanf ("%d", &num_det); for (i = 0; i < num_det; i++ ) { for (j = 0; j < 2; j++ ) { fscanf(infile_stat_rep ,"%f", & mas[i] [j] ); } } /*Вывод массива на экран*/ printf( "Результаты испытаний:\n" ); for (i = 0, j = 1; i < num_det; i++ ) printf( "Деталь %d: %0.3f \n",i + 1, mas[i] [j] ); printf( "\n" ); /*Суммирование результатов */ for (i = 0, j = 1; i < num_det; i++ ) sum+=mas[i][j]; printf( "Статистическая оценка среднего времени восстановления аппаратуры: %0.3f \n",sum/num_det); for (i = 0, j = 1; i < num_det; i++ ) fprintf (outfile,"Деталь %d: %0.3f \n",i + 1, mas[i] [j] ); fprintf (outfile,"Статистическая оценка среднего времени восстановления аппаратуры: %0.3f \n",sum/num_det); mas_delete (mas, SIZE); END case 7 : printf ("Введите количество временных промежутков: \n"); scanf ("%d", &time_det); printf ("Введите число изделий, поставленных на испытания: \n"); scanf ("%f", &N); for (i = 0; i < time_det; i++ ) { for (j = 0; j < 3; j++ ) { fscanf(infile_stat_zero ,"%f", & mas[i] [j] ); } } printf ("Результаты испытаний:\n t1: \t t2: \t ni: \t\n"); fprintf (outfile, "Результаты испытаний:\n t1: \t t2: \t ni: \t\n"); for (i = 0; i < time_det; i++ ) { for (j = 0; j < 3; j++ ) { printf ("%.0f \t", mas[i][j]); fprintf (outfile, "%.0f \t", mas[i][j]); } printf ("\n"); fprintf (outfile, "\n"); } for (i = 0, l = 0; i < time_det, l < time_det; i++ , l++) mas_rezult[l] = ((mas[i][0] + mas [i][1])/2.0)*mas[i][2]; for (l = 0; l < time_det; l++) sum+=mas_rezult[l]; printf ("Статистическая оценка среднего времени безотказной работы изделия: %0.3f\n", sum/N); fprintf (outfile, "Статистическая оценка среднего времени безотказной работы изделия: %0.3f\n", sum/N); mas_delete (mas, SIZE); mas_rezult_delete (mas_rezult, SIZE); END case 8 : system ("pause"); break; } } void description () { printf ("Практическая работа №1 по дисциплине надежность систем управления\n"); printf ("Выполнил студент группы КИ 08-05 Дрозд Олег Владимирович.\n"); } void menu () { printf ("Выберите требуюмую сторону надежности: \n"); printf ("1 - Статистическая оценка вероятности безотказной работы изделия \n"); printf ("2 - Статистическая оценка вероятности отказа изделия \n"); printf ("3 - Статистическая оценка частоты отказов изделия \n"); printf ("4 - Статистическая оценка интенсивности отказов изделия \n"); printf ("5 - Статистическая оценка среднего времени безотказной работы изделия \n"); printf ("6 - Статистическая оценка среднего времени восстановления изделия \n"); printf ("7 - Статистическая оценка безотказной работы изделия\nпо результатм наблюдения\n"); printf ("8 - Выход из программы \n"); } void mas_delete (float mas[SIZE][SIZE], int number_elements) { int i, j; for (i = 0; i < number_elements + 1; i++) for (j = 0; j < SIZE +1; j++) mas[i][j] = 0; } void mas_rezult_delete (float mas [SIZE], int number_elements) { int i; for (i = 0; i < number_elements + 1; i++) mas [i] = 0; }
Решение задачи: «Очистка массива (Необработанное исключение в "0x7c93402a")»
textual
Листинг программы
for (i = 0; i < number_elements; i++)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д