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