не могу справиться с задачей по С++ |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 7164-й день
![]() |
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
![]() ![]() |
не могу справиться с задачей по С++ |
| maxdam |
Пост
#1
|
|
Репутация: 86 ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 157 С нами с: 20-March 06 |
Нужно вводить с клавиатуры числа до тех пор, пока они равны предыдущему введенному, если число уже не равно, цикл завершается.
Определить количество таких элементов последовательности. - считаем счетчиком. Условный оператор не использовать. - if не использовать. -- конструкция... int n = 0, t = 0, i = 0, k = 0; while (i == t) { cin >> n; i = n; t = n; k++; } cout << "Количество попыток: " << k << endl; -- мозг сломал уже себе на этой задаче, она и последняя из всех заданных! Натолкните где поток мысли пошел в неправильное направление. Сообщение отредактировал maxdam - Jan 15 2016, 18:29 |
| Криса |
Пост
#2
|
|
Репутация: 8 ![]() Дух Группа: Пользователи Сообщений: 25 С нами с: 6-May 11 |
cin >> n; i = n; убыточная последовательность действий - можно обойтись без лишней переменной "i" и записать 1 строкой. int n = 0, t = 0, i = 0, k = 0; while (i == t) { cin >> n; i = n; t = n; k++; } cout << "Количество попыток: " << k << endl; Так, думаю, выхода из цикла не будет никогда. |
| грик |
Пост
#3
|
|
Репутация: 2 ![]() Активист ![]() Группа: Пользователи Сообщений: 267 С нами с: 20-October 13 |
int n = 0, i = 0, k = -1; cin >> n; do { k++; i = n; cin >> n; } while (i == n) cout << "Количество попыток: " << k << endl; |
| Carnifex |
Пост
#4
|
|
Репутация: 16 ![]() Дух Группа: Пользователи Сообщений: 179 С нами с: 5-July 09 |
int i = 0;
int n = 0; int k = 1; i = Console.ReadKey().KeyChar; n = Console.ReadKey().KeyChar; while (i == n) { i = n; n= Console.ReadKey().KeyChar; k++; } Console.WriteLine("Попытки {0}", k); Console.ReadLine(); Сообщение отредактировал Carnifex - Jan 15 2016, 21:38 |
| Phaust |
Пост
#5
|
|
Репутация: 1176 ![]() сам себе авторитет ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 14 117 С нами с: 9-July 07 |
Скопируй текст задачи как он в оригинале
|
| maxdam |
Пост
#6
|
|
Репутация: 86 ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 157 С нами с: 20-March 06 |
Оригинал задачи:
Дана последовательность целых чисел a1, a2, a3 ,..., an, в начале которой записано несколько равных между собой элементов. Определить количество таких элементов последовательности. Условный оператор не использовать. только while и логика... Сообщение отредактировал maxdam - Jan 15 2016, 22:09 |
| грик |
Пост
#7
|
|
Репутация: 2 ![]() Активист ![]() Группа: Пользователи Сообщений: 267 С нами с: 20-October 13 |
Оригинал задачи: Дана последовательность целых чисел a1, a2, a3 ,..., an, в начале которой записано несколько равных между собой элементов. Определить количество таких элементов последовательности. Условный оператор не использовать. Это совсем другая задача, чем написано в первом посте. |
| maxdam |
Пост
#8
|
|
Репутация: 86 ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 157 С нами с: 20-March 06 |
|
| грик |
Пост
#9
|
|
Репутация: 2 ![]() Активист ![]() Группа: Пользователи Сообщений: 267 С нами с: 20-October 13 |
Мне сегодня преподаватель так объяснил эту задачу! Ну я рад, но про ввод там ничего не написано, а написано про массив целых чисел, который дан. Если так, как в первом посте, то решение я написал выше. Только while{} использовать.. do.. while и for еще нельзя.. Тогда так, как написал человек после меня, но переделай на плюсы. |
| maxdam |
Пост
#10
|
|
Репутация: 86 ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 157 С нами с: 20-March 06 |
Console.ReadKey().KeyChar; - это я так понимаю cin >> ?
|
| грик |
Пост
#11
|
|
Репутация: 2 ![]() Активист ![]() Группа: Пользователи Сообщений: 267 С нами с: 20-October 13 |
|
| maxdam |
Пост
#12
|
|
Репутация: 86 ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 157 С нами с: 20-March 06 |
int i = 0; int n = 0; int k = 1; cin >> i; cin >> n; while (i == n) { i = n; cin >> n; k++; } cout << "Количество попыток: " << k << endl; пошел разбирать что я накосячил.. Сообщение отредактировал maxdam - Jan 15 2016, 22:21 |
| Carnifex |
Пост
#13
|
|
Репутация: 16 ![]() Дух Группа: Пользователи Сообщений: 179 С нами с: 5-July 09 |
Console.ReadKey().KeyChar; - это я так понимаю cin >> ? Сорри что язык не твой. Аналогию ты понял правильно. Просто создавать проект под 10 строчек я не хотел, написал там где было открыто... |
| Pylorama |
Пост
#14
|
|
Репутация: 54 ![]() Дух Группа: Пользователи Сообщений: 158 С нами с: 29-January 10 |
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « |
| Like |
Пост
#15
|
|
Репутация: 1156 ![]() ultra active user ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 16 837 С нами с: 5-April 11 |
|
| Phaust |
Пост
#16
|
|
Репутация: 1176 ![]() сам себе авторитет ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 14 117 С нами с: 9-July 07 |
С вводом с клавиатуры то ересь какая то. Или преподаватель задачу придумал не сам, но стырил и сам толком не понял.
Моя идея такая: 1. Отсортрировать(например через std::qsort или подобное) 2. Один проход по упорядоченому масиву найти элементы попадающиеся более одного раза Итого сложность будет n*log(n) всего лишь |
| maxdam |
Пост
#17
|
|
Репутация: 86 ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 157 С нами с: 20-March 06 |
А предыдущие какие? вот например писавши эту задачу я написал непроизвольно на условие: вводишь подряд 2 значения и завершается ... int n = 1, i = 0, k = 0; while (!(n == i)) { i = n; cin >> n; k++; } cout << "Количество попыток: " << k << endl; Сообщение отредактировал maxdam - Jan 16 2016, 0:57 |
| Pylorama |
Пост
#18
|
|
Репутация: 54 ![]() Дух Группа: Пользователи Сообщений: 158 С нами с: 29-January 10 |
С вводом с клавиатуры то ересь какая то. Или преподаватель задачу придумал не сам, но стырил и сам толком не понял. Моя идея такая: 1. Отсортрировать(например через std::qsort или подобное) 2. Один проход по упорядоченому масиву найти элементы попадающиеся более одного раза Итого сложность будет n*log(n) всего лишь Насправді це всього лиш проста як двері задача 6.5 для вивчення азів роботи з циклами. The Evolution of a Programmer PS: сортувати не треба. Максимум один прохід - складність N. Сообщение отредактировал Pylorama - Jan 16 2016, 1:14 |
| Like |
Пост
#19
|
|
Репутация: 1156 ![]() ultra active user ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 16 837 С нами с: 5-April 11 |
Код выше после первого ввода заходит в цикл, ждёт ещё один ввод цифры и выходит, гордо выставляя счетчик на 1, типо, совпало.
Цифры могут быть одинаковыми или разными. |
| Phaust |
Пост
#20
|
|
Репутация: 1176 ![]() сам себе авторитет ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 14 117 С нами с: 9-July 07 |
В общем виде для N элементной последовательности без ограничений на данные O(N) решения нет
|
![]() ![]() |
|
Упрощённая версия | Сейчас: 25th October 2025 - 19:49 |
| Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |