Одномерный массив: после ввода данных Visual Studio выбивает ошибку, остальные программы работают нормально - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Прошу помочь разобраться с ошибкой или ошибками. Задача звучит так: в одномерном массиве, состоящем из N действительных элементов, вычислить: произведение элементов массива, расположенных между максимальным и минимальным элементами.
Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include "stdafx.h"
  4. #define N 5
  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7. int mas[N], i, s, k, max, min, proz;
  8. for(i=0; i<N; i++){
  9. scanf("%i", &mas[i]);
  10. }
  11. max = mas[0];
  12. min = mas[0];
  13. for(i = 0; i < N; i++){
  14. if(max < mas[i]){
  15. max = mas[i];
  16. s = i;
  17. }
  18. if(min > mas[i]){
  19. min = mas[i];
  20. k = i;
  21. }
  22. }
  23. proz = 1;
  24. if(s > k){
  25. for(int i = k; i <= s ; i++){
  26. proz *= mas[i];
  27. }
  28. }
  29. else if(k > s){
  30. for(int i = k; i <= s ; i++){
  31. proz *= mas[i];
  32. }
  33. }
  34. printf ("%d", proz);
  35. return 0;
  36. }

Решение задачи: «Одномерный массив: после ввода данных Visual Studio выбивает ошибку, остальные программы работают нормально»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. #define N 5
  4.  
  5. int main(void)
  6. {
  7.     int mas[N];
  8.     for(int i=0; i<N; i++) {
  9.         scanf("%i", &mas[i]);
  10.     }
  11.     int max = mas[0];
  12.     int min = mas[0];
  13.     int imax = 0;
  14.     int imin = 0;
  15.     for(int i=1; i<N; i++) {
  16.         if (max < mas[i]) {
  17.             max = mas[i];
  18.             imax = i;
  19.         }
  20.         if (min > mas[i]) {
  21.             min = mas[i];
  22.             imin = i;
  23.         }
  24.     }
  25.     int beg = (imin<imax)?imin:imax;
  26.     int end = (imin>imax)?imin:imax;
  27.     int res = 1;
  28.     for(int i=beg; i<=end; i++)
  29.         res *= mas[i];
  30.  
  31.     printf ("%d\n", res);
  32.  
  33.     return 0;
  34. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы