C/C++

Указатель, массив, bool

Напишите функцию bool tripleUp(int *a, int size) которая принимает массив как указатель и size массива. Функция должна возвращать true если массив содержит 3 возрастающих элемента, в противном случае возвращает false.

input:
3
7 8 9
output:
Yes
-------------------
input:
7
1 6 9 5 9 10 2
output:
No
-------------------------------------------
есть такой код, но криво работает

#include
using namespace std;
bool tripleUp(int *a, int *size) {
cin >> *size;
for (int i = 0; i<*size; i++) {
cin >> a[i];
for (int i = 0; i < *size -2; i++) {
if ((a[i] < a[i+1]) || (a[i+1] < a[i+2]))
return true;
else
return false;
}
}
}
int main() {
int a, b;
if (tripleUp(&a, &b) == true)
cout << "Yes";
else
cout << "No";
}
#include <iostream>
#include <iomanip>
using namespace std;
bool tripleUp(int* a, int size) {
for (int i = 2; i < size; ++i) {
if (a[i - 2] < a[i - 1] && a[i - 1] < a[i]) return true;
}
return false;
}
int main() {
int size;
cin >> size;
int* a = new int[size];
for (int i = 0; i < size; ++i) cin >> a[i];
puts(tripleUp(a, size) ? "Yes" : "No");
delete[] a;
}
Алексей Кузнецов
Алексей Кузнецов
94 617
Лучший ответ
bool tripleUp(int *a, int *size) { // Какого лешего передаем размер указателем? Собираемся его менять в функции, что ли?
cin >> *size;
for (int i = 0; i<*size; i++) { // Задача не предусматривает заполнение массива в функции
// это нужно делать до вызова в основной программе
cin >> a[i]; // И вот тут мы переписываем сторонние данные, ибо массив никто не инициализировал. Ок, ладно, ввели значения массива, почему не закрываем for здесь? Вместо этого, на первом проходе, в следующем блоке будем сравнивать первый введёный элемент с двумя случайными значениями, потом все скатывается в какие-то проверки между случайными значениями в памяти
for (int i = 0; i < *size -2; i++) {
if ((a[i] < a[i+1]) || (a[i+1] < a[i+2])) //Условие будет истинно, если либо a[i], либо a[i+1] меньше следующего, но никак не то, что написано в условии
return true;
else // Дальше одной-единственной проверки, впрочем не сдвинемся.
return false;
}
}
}
int main() {
int a, b; // По вашему, int a - это массив? Инициализировать b кто будет, Пушкин?
if (tripleUp(&a, &b) == true)
cout << "Yes";
else
cout << "No";
}
КK
Колян Kolyn
30 155
При указании размера "7" должно быть 7 элементов возрастающих подряд?
Юрий Марковец 3 элемента