![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Shmaniche |
![]() ![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
Есть одна программа на Паксале позволяющая это делать. Переписать на С++, но не моу найти где допустил ошибку. Мин. и макс. элементы ищет, а дальше нет.
![]() На Pascal:
На С++:
Помогите пжста найти ошибку! |
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата if (mass[j]=i) /* Проверяеть есть ли среди элементов данного массива элемент, |
Shmaniche |
![]() ![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
"=" - это не проверка, а присваивание в Сях. Используй "==". Там еще в нескольких местах нужно то же самое исправить... Это я после Паскаля еще путаюсь. Спасибо, исправил. Еще в "for(j=1; j<N; j++)" букву N заменил на 2, чтобы найденые числа не повторялись N раз. НО, когда я ввожу в массив 1, 3, 5, 7, 9 среди чисел не найденных в массиве оказывается 7, т.е. 2, 4, 5, 6, 7, что является ошибкой. А когда 1, 2, 3, 4, 5, то вылазит 3 - тоже ошибка. ![]()
Сообщение отредактировано: Shmaniche - 27.05.2012 5:32 |
Shmaniche |
![]()
Сообщение
#4
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дан массив: 1, 3, 5, 7, 9. Надо чтобы результат был 2, 4, 6, 8, т.е. все числа не входящие в данным массив и не выходящие за него границы! У меня же получается 2, 4, 5, 6, 7, то есть цифры 5 и 7 лишние, а 8 вообще не находит
![]() Сообщение отредактировано: Shmaniche - 28.05.2012 7:50 |
IUnknown |
![]()
Сообщение
#5
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тебе достаточно сделать так:
printf("\n \n Min element = %d.", mass[min]); // Выводим минимальный элемент., чтобы получить все целые из интервала mass[min] .. mass[max], не присутствующие в массиве mass. Не усложняй код. ![]() |
Shmaniche |
![]() ![]()
Сообщение
#6
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
IUnknown
Я предпологал еще использовать следующий код:
Но ты меня опередил. Ради спортивного интереса хотелось бы найти ошибку в коде выше, там строка выводящее сообщение, что целых чисел между мин. и макс и не входящих в массив нет выплывает даже после того, когда числа не входящие в массив найдены. Кстати, ты забыл добавить проверку, что выводить, если числа между элементами массива не найдены (например, если дан массив 1, 2, 3, 4, 5). Вот так наверное лучше:
Хотя при массиве {1, 3, 5, 7, 8} эта проверка не работает ![]() ![]() Сообщение отредактировано: Shmaniche - 28.05.2012 15:11 |
IUnknown |
![]()
Сообщение
#7
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Вот так лучше: Нет, не лучше! Не "улучшай" то, в чем не разобрался. Твой код будет врать, что не нашел чисел, после того, как напечатает часть из них (если не будет найдено ПОСЛЕДНЕЕ число в интервале - выведется сообщение. Запусти на данных: mass[N]={1, 3, 5, 8, 9}; и убедись), чтобы сделать диагностику "нет чисел, входящих в интервал" надо считать напечатанные числа.Цитата Ради спортивного интереса хотелось бы найти ошибку в коде выше Это без меня, я не копаюсь в чужих кодах. Запускай отладчик и ищи, где начинает работать не так, как положено. Если уж ты берешься править чужое - значит, в работе отладчика точно сможешь разобраться ![]() |
Shmaniche |
![]() ![]()
Сообщение
#8
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 79 Пол: Мужской Репутация: ![]() ![]() ![]() |
Нет, не лучше! Не "улучшай" то, в чем не разобрался. Твой код будет врать, что не нашел чисел, после того, как напечатает часть из них (если не будет найдено ПОСЛЕДНЕЕ число в интервале - выведется сообщение. Запусти на данных: mass[N]={1, 3, 5, 8, 9}; и убедись) Ввел 1, 3, 5, 8, 9. Вывелось 2, 4, 6, 7. Что не так? , чтобы сделать диагностику "нет чисел, входящих в интервал" надо считать напечатанные числа. Пока не знаю как это сделать. Надо подумать. Это без меня, я не копаюсь в чужих кодах. Запускай отладчик и ищи, где начинает работать не так, как положено. Как вариант подсказали:
Кажется правильно работает ![]() Сообщение отредактировано: Shmaniche - 28.05.2012 15:24 |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 19:17 |