Мне нужно найти максимальный и минимальный элемент, поменять местами максимум с минимумом и вычислить сумму и произведение всех элементов.
Моя попытка выполняется без ошибок, но ответы суммы, произведения и изменения неверны. Пожалуйста, если бы вы могли мне помочь.
#include <stdio.h>
#include <conio.h>
int main()
{
int m[8];
printf("\nInput the elements of the array: ");
for (int i=0; i<8; i++) {
scanf("%d", &m[i]); }
int max=m[0], min=m[0];
for(int i=0; i<8; i++) {
if(max < m[i]) {
max=m[i]; }
if(min > m[i]) {
min=m[i]; } }
for(int i=0; i<8; i++) {
if(m[i] == min) {
m[i] = max; } }
for(int i=0; i<8; i++) {
if(m[i] == max) {
m[i] = min; } }
int sum=0, x=0;
for(int i=0; i<8; i++) {
sum += m[i];
x = m[i]*m[i]; }
printf("\n Maximum element: %d", max);
printf("\n Minimum element: %d", min);
printf("\n Sum of all elements: %d", sum);
printf("\n Product of all elements: %d", x);
printf("\n\n Array with the maximum and minimum elements changed:\n");
for(int i=0; i<8; i++) {
printf("%d", m[i]);
printf(" "); }
_getch();
}
Проблема в паре циклов, которые меняют минимальное и максимальное значения.
Второй for выше, наступает на то, что установил первый, так как max находится 2 раза в массиве в начале второго for, поэтому в конце значение max теряется, а значение min остается 2 раза в конечном массиве .
Предложение решения:
Затем вы просто меняете местами значения с индексами.
И он удаляет те циклы, которые меняют минимальное и максимальное значения.
Наконец, в продукте я вижу ошибку, возможно, вам следует сделать что-то подобное, потому что то, что у вас сейчас есть в вашем коде, является мощностью, и вы получите только значение последнего элемента массива.
Вы можете попробовать объявить переменные max и min и сравнить их друг с другом с помощью for, в конце концов значение, которое хранят эти переменные, будет максимальным или минимальным.