Одномерный массив: после ввода данных 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, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д