Одномерный массив: после ввода данных Visual Studio выбивает ошибку, остальные программы работают нормально - C (СИ)
Формулировка задачи:
Прошу помочь разобраться с ошибкой или ошибками.
Задача звучит так: в одномерном массиве, состоящем из N действительных элементов, вычислить: произведение элементов массива, расположенных между максимальным и минимальным элементами.
#include<stdio.h>
#include<conio.h>
#include "stdafx.h"
#define N 5
int _tmain(int argc, _TCHAR* argv[])
{
int mas[N], i, s, k, max, min, proz;
for(i=0; i<N; i++){
scanf("%i", &mas[i]);
}
max = mas[0];
min = mas[0];
for(i = 0; i < N; i++){
if(max < mas[i]){
max = mas[i];
s = i;
}
if(min > mas[i]){
min = mas[i];
k = i;
}
}
proz = 1;
if(s > k){
for(int i = k; i <= s ; i++){
proz *= mas[i];
}
}
else if(k > s){
for(int i = k; i <= s ; i++){
proz *= mas[i];
}
}
printf ("%d", proz);
return 0;
}Решение задачи: «Одномерный массив: после ввода данных Visual Studio выбивает ошибку, остальные программы работают нормально»
textual
Листинг программы
#include <stdio.h>
#define N 5
int main(void)
{
int mas[N];
for(int i=0; i<N; i++) {
scanf("%i", &mas[i]);
}
int max = mas[0];
int min = mas[0];
int imax = 0;
int imin = 0;
for(int i=1; i<N; i++) {
if (max < mas[i]) {
max = mas[i];
imax = i;
}
if (min > mas[i]) {
min = mas[i];
imin = i;
}
}
int beg = (imin<imax)?imin:imax;
int end = (imin>imax)?imin:imax;
int res = 1;
for(int i=beg; i<=end; i++)
res *= mas[i];
printf ("%d\n", res);
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с консолью и объявляем переменную N типа int, которая определяет размер массива.
- Создаем массив типа int с размером N и инициализируем его значениями по умолчанию.
- Задаем начальные значения переменных max, min, imax, imin равными первому элементу массива.
- Используя цикл for перебираем элементы массива с индексами от 1 до N-1.
- Сравниваем текущий элемент массива с текущим значением max и min. Если текущий элемент больше max, то обновляем max, imax и i. Если текущий элемент меньше min, то обновляем min, imin и i.
- Находим индекс минимального и максимального элемента массива, используя значения imin и imax.
- Используя цикл for, умножаем значения элементов массива, начиная с элемента с индексом beg и заканчивая элементом с индексом end.
- Выводим результат на экран.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.