Очистка массива (Необработанное исключение в "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++)