#include
#include
using namespace std;
#define N 6// Размер массива
int main()
{
setlocale(LC_ALL, "ru");
int A[N]{};//инициализация массива
for (int i = 0; i < N; i++)
{
cout << "Введите элемент массива" << " " << i << endl;
cin >> A[i];
cout << "Элемент = " << A[i] << endl;
}
for (int i = 1; i < N; i++)
{
if ((A[i] < A[i - 1]) && (A[i] < A[i + 1]))//сравнение элемента с посл. и пред.
{
cout << endl << "min = " << A[i] << endl;
A[i] = A[i] * A[i];
cout << "Квадрат min равен = " << " " << A[i] << endl;
}
}
}
У меня странно считается квадрат локальных минимумов. Почему-то он считает квадрат, когда хотя бы одно условие выполняется, а не оба. В чем ошибка?
C/C++
С++. Помогите найти ошибку в коде.
1. Надо итерировать 1 < i < N - 1, иначе выход за пределы массива на последнем шаге.
2. Ты на каждом шаге обновляешь значение массива, из-за чего программа в дальнейшем сравнивает уже с ним, а не с оригиналом (A[i] = A[i] * A[i])
2. Ты на каждом шаге обновляешь значение массива, из-за чего программа в дальнейшем сравнивает уже с ним, а не с оригиналом (A[i] = A[i] * A[i])
Станислав Ростиславович Титков
да, квадрату нужно было другое имя присвоить. Теперь все корректно работает
А что именно ты пытаешься сделать? Какова задача?
Если я правильно понял то в
cout << endl << "min = " << A[i] << endl;
A[i] = A[i] * A[i];
cout << "Квадрат min равен = " << " " << A[i] << endl;
убери изменение массива:
cout << endl << "min = " << A[i] << endl;
cout << "Квадрат min равен = " << " " << A[i] * A[i] << endl;
Если я правильно понял то в
cout << endl << "min = " << A[i] << endl;
A[i] = A[i] * A[i];
cout << "Квадрат min равен = " << " " << A[i] << endl;
убери изменение массива:
cout << endl << "min = " << A[i] << endl;
cout << "Квадрат min равен = " << " " << A[i] * A[i] << endl;
// Так вот правильно работает, то есть выдаёт на экран только строгие локальные минимумы и их квадраты (если они есть, конечно !):
#include <iostream>
using namespace std;
#define N 6
int main()
{
setlocale(LC_ALL, "ru");
int A[N];
for (int i = 0; i < N; i++)
{
cout << "A[" << i + 1 << "] = ?\b";
cin >> A[i];
}
for (int i = 1; i < N; i++)
if ((A[i] < A[i - 1]) && (A[i] < A[i + 1]))
cout << "min = " << A[i] << '\n' <<
"Квадрат min равен = " << A[i] * A[i] << endl;
}
#include <iostream>
using namespace std;
#define N 6
int main()
{
setlocale(LC_ALL, "ru");
int A[N];
for (int i = 0; i < N; i++)
{
cout << "A[" << i + 1 << "] = ?\b";
cin >> A[i];
}
for (int i = 1; i < N; i++)
if ((A[i] < A[i - 1]) && (A[i] < A[i + 1]))
cout << "min = " << A[i] << '\n' <<
"Квадрат min равен = " << A[i] * A[i] << endl;
}
Похожие вопросы
- Помогите найти ошибку в коде
- Помогите найти ошибки в коде на C++, не выводится последняя строчка
- Помогите найти ошибку в коде
- Помогите найти ошибку в коде!!!
- Помогите найти ошибки в коде c++
- Помогите найти ошибку в коде
- Помогите найти ошибку.Где ошибка в коде не могу найти язык СИ
- Помогите с информатикой. не могу найти ошибку в коде
- Помогите исправить ошибку в коде, смотри внутри.
- С++ Win32 Api Помогите найти ошибку.