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