Одномерный массив: после ввода данных 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с консолью и объявляем переменную N типа int, которая определяет размер массива.
  2. Создаем массив типа int с размером N и инициализируем его значениями по умолчанию.
  3. Задаем начальные значения переменных max, min, imax, imin равными первому элементу массива.
  4. Используя цикл for перебираем элементы массива с индексами от 1 до N-1.
  5. Сравниваем текущий элемент массива с текущим значением max и min. Если текущий элемент больше max, то обновляем max, imax и i. Если текущий элемент меньше min, то обновляем min, imin и i.
  6. Находим индекс минимального и максимального элемента массива, используя значения imin и imax.
  7. Используя цикл for, умножаем значения элементов массива, начиная с элемента с индексом beg и заканчивая элементом с индексом end.
  8. Выводим результат на экран.
  9. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.273 из 5
Похожие ответы