https://pastebin.com/SPJ75g1J
Последовательности до средины массива находит, а в конце нет. В чем ошибка?
Другие языки программирования и технологии
Найти в массиве наибольшую последовательность четных чисел. С++
#include <utility>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
pair<size_t, vector<int>> even(const int* box, const size_t n) {
vector<vector<int>> seq;
for (auto i = 0U; i < n; ++i) {
if (box[i] & 1) continue;
vector<int> item;
while (~box[i] & 1) {
item.push_back(box[i]);
++i;
if (i == n) break;
}
seq.emplace_back(item);
}
if (seq.empty()) return { 0U, {} };
const auto lambda = [](const vector<int>& a, const vector<int>& b) {
return a.size() > b.size();
};
sort(seq.begin(), seq.end(), lambda);
const auto content = seq.front();
const auto length = content.size();
return { length, content };
}
int main() {
int box[] = { 2, 4, 7, 8, 4, 6, 1, 2, 2, 4, 4 };
auto[length, content] = even(box, size(box));
cout << "length: " << length << "\ncontent:";
if (length) for (const auto value : content) cout << ' ' << value;
else cout << " empty";
cout.put('\n');
system("pause");
}
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
pair<size_t, vector<int>> even(const int* box, const size_t n) {
vector<vector<int>> seq;
for (auto i = 0U; i < n; ++i) {
if (box[i] & 1) continue;
vector<int> item;
while (~box[i] & 1) {
item.push_back(box[i]);
++i;
if (i == n) break;
}
seq.emplace_back(item);
}
if (seq.empty()) return { 0U, {} };
const auto lambda = [](const vector<int>& a, const vector<int>& b) {
return a.size() > b.size();
};
sort(seq.begin(), seq.end(), lambda);
const auto content = seq.front();
const auto length = content.size();
return { length, content };
}
int main() {
int box[] = { 2, 4, 7, 8, 4, 6, 1, 2, 2, 4, 4 };
auto[length, content] = even(box, size(box));
cout << "length: " << length << "\ncontent:";
if (length) for (const auto value : content) cout << ' ' << value;
else cout << " empty";
cout.put('\n');
system("pause");
}
Тебе еще остальное надо в порядок привести.
В C++ используют std::vector. Массивы для Си. Да и память у тебя не очищается.
srand(time - тоже пахнет Си.
system - вместо этого в C++ есть std::cin.get()
В C++ используют std::vector. Массивы для Си. Да и память у тебя не очищается.
srand(time - тоже пахнет Си.
system - вместо этого в C++ есть std::cin.get()
Тлеукабыл Каков
Векторы ещё не учили
Зигфрид Из Амбера
Вот нахрена такой "ответчик", который только умничает и ни строчки не помогает!? Второй ответ такой от вас вижу сегодня.
int k, maxStart = -1, maxLen = 0;
int A[ASize] = { ...};
for ( int i = 0 ; i < ASize ; i++ ) {
k = 0 ;
for ( int j = i ; j < ASize ; j++ ) {
if ( A[j] % 2 == 0 ) k++; else break;
}
if ( k > maxLen ) { // > - первая последовательность ; >= - последняя последовательность
maxLen = k;
maxStart = i;
}
// i += k; // - не по фэншую, если раскомментировать, но большей последовательности не будет, т. к. дальше подпоследовательность из k.
}
// вывод части массива от maxStart длинной maxLen
int A[ASize] = { ...};
for ( int i = 0 ; i < ASize ; i++ ) {
k = 0 ;
for ( int j = i ; j < ASize ; j++ ) {
if ( A[j] % 2 == 0 ) k++; else break;
}
if ( k > maxLen ) { // > - первая последовательность ; >= - последняя последовательность
maxLen = k;
maxStart = i;
}
// i += k; // - не по фэншую, если раскомментировать, но большей последовательности не будет, т. к. дальше подпоследовательность из k.
}
// вывод части массива от maxStart длинной maxLen
Похожие вопросы
- Вводится последовательность чисел. Посчитать в ней количество четных чисел, стоящих на четных местах.
- Найти сумму чисел, заканчивающихся цифрой 4, наибольшее из таких чисел, и номер этого числа в последовательности.
- Помогите решить на ПАСКАЛЕ!Увеличить четные числа массива размера N,на исходное значение первого четного числа.
- Из массива JJ(100) в массив NN(100) перенести числа(элементы массива): сначала нечетные, а затем четные.
- Составьте программу, отыскивающую наибольший элемент массива A(N) из числа принадлежащим интервалу {min,(min+max\2))
- Задан массив m на n. Числа m и n вводятся вручную. Заполнить массив случайным образом. Найти произведение чисел от 10 до
- Дано вещественное число R и массив размера N. Найти элемент массива, который наименее близок к данному числу
- помогите пожалуйста с массивом А- массив из 10 целых чисел найти число больше 10 сообщить его номер.
- Написать в С++. Задан одномерный массив А из 10 чисел.
- Помогите :) Дан массив из n целых чисел. Найти количество встречающихся равных чисел.