Ошибка в коде - C (СИ) (70341)
Формулировка задачи:
Подскажите пожалуйста, почему после прохождения цикла for в input выдаёт ошибку: "Необратотанное исключение"?
#include"stdafx.h"
#include <stdio.h>
#include <tchar.h>
#include<stdio.h>
#include<windows.h>
#include <iostream>
#include <locale.h>
#define MAX_N 100
int N;
struct proizvodstvo{
char *vid_produkccii;
char *edinicci_izmerenia;
float year_1913;
float year_1928;
float year_1940;
float year_1959;
};
bool sizeArr()
{
printf("Введите количество поле таблицы:\n");
if(!(scanf("%d", &N)))
return false;
if (N<=0 || N>MAX_N)
return false;
else
return true;
};
void input( proizvodstvo a[], int N)
{
for(int i=0; i<N; i++)
{
printf("Введите вид продукции:");
scanf("%s", &a[i].vid_produkccii);
printf("Введите единицы измерения:");
scanf("%s", &a[i].edinicci_izmerenia);
printf("Введите объем производства за 1913 год:");
while(!(scanf("%f", &a[i].year_1913)))
{
fflush(stdin); //очистка потока//
printf("Некорректное значение! Повторите ввод :\n");
}
printf("Введите объем производства за 1928 год:");
while(!(scanf("%f", &a[i].year_1928)))
{
fflush(stdin); //очистка потока//
printf("Некорректное значение! Повторите ввод :\n");
}
printf("Введите объем производства за 1940 год:");
while(!(scanf("%f", &a[i].year_1940)))
{
fflush(stdin); //очистка потока//
printf("Некорректное значение! Повторите ввод :\n");
}
printf("Введите объем производства за 1959 год:");
while(!(scanf("%f", &a[i].year_1959)))
{
fflush(stdin); //очистка потока//
printf("Некорректное значение! Повторите ввод :\n");
}
}
}
void output(const proizvodstvo a[], int N)
{
printf("Основные показатели развития промышленности Украины:\n");
printf("|Вид продукции|Единицы измерения|1913|1928|1940|1959|\n");
printf("-----------------------------------------------------\n");
for(int i=0; i<N; i++)
{
printf("|%s |", a[i].vid_produkccii);
printf(" %s |", a[i].edinicci_izmerenia);
printf(" %f |", a[i].year_1913);
printf(" %f |", a[i].year_1928);
printf(" %f |", a[i].year_1940);
printf(" %f |", a[i].year_1959);
}
}
void maxproizvodstvo_1928(const proizvodstvo a[], int N)
{
int min=a[0].year_1928;
int i;
int index=0;
for(i=0; i<N; i++)
{
if(a[i].year_1928<min)
{
min=a[i].year_1928;
index=i;
}
}
printf("\n\В 1928 году производство %s было максимальным и составляло %f объема %s ед.изм.\n", a[index].vid_produkccii, a[index].year_1928,a[index].edinicci_izmerenia);
}
int main()
{
system("color F0");
setlocale(LC_ALL, "Russian");
while(!(sizeArr()));
proizvodstvo pr_1[MAX_N];
input(pr_1, N);
output(pr_1, N);
maxproizvodstvo_1928(pr_1, N);
system("pause");
return 0;
}Решение задачи: «Ошибка в коде»
textual
Листинг программы
char vid_produkccii[какое максимальное количество букофф в продукции вашей будет + 1]; char edinicci_izmerenia[и тут по такому же принципу + 1];
Объяснение кода листинга программы
- В коде объявлены две переменные типа char: vid_produkccii и edinicci_izmerenia.
- Размер массива vid_produkccii определяется как максимальное количество букофф в продукции вашей будет + 1.
- Размер массива edinicci_izmerenia определяется по такому же принципу.