ВОПРОС: не проходит тест, ПОЧЕМУ И КАК ИСПРАВИТЬ?
5
2 4 6 8 10
ПИШЕТ: Segmentation fault (core dumped)
Выведите значение наименьшего нечетного элемента списка, а если в списке нет нечетных элементов - выведите число 0.
Формат входных данных
В первой строке вводится количество элементов в массиве. Во второй строке вводятся элементы массива.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n = 0, x = 0;
cin >> n;
vector <long double> a;
for (double i = 0; i < n; i++) {
long int oy = 0;
cin >> oy;
if (oy % 2 != 0) {
a.push_back(oy);
}
}
for (long double j = 1; j < a.size(); j++) {
for (long double u = 0; u < (a.size()) - 1; u++) {
if (a[u] > a[u + 1]) {
swap(a[u], a[u + 1]);
}
}
}
if (a[0] != NULL) {
cout << a[0];
}
else {
cout << "0";
}
return 0;
}
C/C++
С++ массивы. Программа не проходит тест
Зачем вектор? Зачем сортировка? Всё делается намного проще.
int n, t, min = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> t;
if (t % 2 && (t < min || min == 0)) { min = t; }
}
cout << min;
int n, t, min = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> t;
if (t % 2 && (t < min || min == 0)) { min = t; }
}
cout << min;
Индексы всегда целые, поэтому НЕ используйте тип double для итераций по индексам из за возникающих ошибок округления.
Если вы отсеиваете элементы уже на этапе их ввода, то массив и вовсе не нужен.
Если массив заполняется по какому-то условию, то прежде чем его использовать следует убедиться, что это условие вообще было выполнено и массив не пуст.
Пустой массив не содержит элементов вообще, поэтому и обращаться к ним нельзя.
NULL - это пафосная форма записи цифры 0. Она вовсе не означает "пустоту" или отсутствие чего-то.
Если вы отсеиваете элементы уже на этапе их ввода, то массив и вовсе не нужен.
Если массив заполняется по какому-то условию, то прежде чем его использовать следует убедиться, что это условие вообще было выполнено и массив не пуст.
Пустой массив не содержит элементов вообще, поэтому и обращаться к ним нельзя.
NULL - это пафосная форма записи цифры 0. Она вовсе не означает "пустоту" или отсутствие чего-то.
#include
using namespace std;
int main()
{
int n, x;
int min = numeric_limits::max();
//первоначальное значение min должно быть таким, чтобы гарантированно измениться
//в ходе программы, если условие на нечет хоть один раз будет выполнено. Можно задать
//его максимально возможной величиной хранимой в инт, как здесь. Но даже в этом случае
//существует вероятность неправильной работы, так как это число - нечетное.
//cout > n;
//bool flag = false;
for (int i = 0; i < n; i++)
{
cin >> x;
x & 1 && x < min ? min = x : NULL;
//if(x&1)
// if(!flag) {flag = true; min = x;} else if (min>x) min = x;
}
cout
Kamran Meherremov
А если исходный список содержит единственное нечётное число, равное numeric_limits<int>::max()?
Если в списке все элементы чётны, вектор a будет совсем пустым без элементов, и в сравнении a[0] != NULL получается обращение к несуществующему элементу.
А в целом - зачем вся эта возня с перестановками, минимум за один проход ищется, не за a.size(); можно совсем без векторов обойтись, при вводе все проверки сразу делать.
А в целом - зачем вся эта возня с перестановками, минимум за один проход ищется, не за a.size(); можно совсем без векторов обойтись, при вводе все проверки сразу делать.
Денис Пигарев
#include
using namespace std;
int main() {
int n, min = 0;
cin >> n;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
if (1 == x % 2 && (0 == min || x < min)) {
min = x;
}
}
cout
Дархан Досымбеков
Понятно, просто эта мысль первой пришла в голову. А можно как-то изменить проверку if (a[0] != NULL) {
cout << a[0];
}
чтобы код работал?
cout << a[0];
}
чтобы код работал?
Похожие вопросы
- Задачка помогите с решением не проходит тест 2
- Программа не выполняет условия задания, исходный массив меняет сам себя, помогите найти ошибку
- Помогите исправить и дописать программу с массивами на языке C++. Буду благодарен, т. к. самому уже не понятно.
- Написать программу на С++ с применением одномерных массивов, используя указатели.
- Написать программу «справочник». Создать два одномерных массива. Один массив хранит номера мобильных телефонов, второй
- Составить программу на c++ УСПОЛЬЗУЯ МАССИВ!!!
- Помогите написать программу по обработке двухмерного массива в с++
- Одномерный массив нужна программа срочно)
- Программа на С. Массивы
- Массивы c++, нужно написать программу