не могу справиться с задачей по С++ |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6706-й день
![]() |
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
не могу справиться с задачей по С++ |
maxdam |
Пост
#1
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 154 С нами с: 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 |
![]() ![]() |
Like |
Пост
#21
|
Репутация: ![]() ![]() ultra active user ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 16 837 С нами с: 5-April 11 ![]() |
К тому же, здесь в коде сравниваются пары чисел, а не их последовательность.
Насколько я понял, мы забиваем ряд чисел и счетчик должен показать сколько раз числа совпали, а цикл быть бесконечным. Тут же программа отрабатывает два ввода значений и завершается. Причем не закциклишь наскоком в мейн, поскольку за счет инициализации второй переменной значением первой мы каждый раз в цикл будем встревать, а счётчик от этого тикать. Недавно попадалась задачка похожего плана, если склероз не подкачает попробую вспомнить. Но не ночь глядя. Сообщение отредактировал Like - Jan 16 2016, 1:46 |
Pylorama |
Пост
#22
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 158 С нами с: 29-January 10 ![]() |
В общем виде для N элементной последовательности без ограничений на данные O(N) решения нет 1. Можна припустити, що на початку є декілька послідовно розташованих однакових елементів і потрібно порахувати їх кількість. Тоді достатньо пройтись по послідовності до зустрічі з першим інакшим елементом. Кількість ітерацій у найгіршому випадку (усі елементи однакові) становитиме N. 2. Можна припустити, що на початку є декілька послідовно розташованих однакових елементів і потрібно порахувати кількість елементів рівних першому у всій послідовності. Якщо послідовність: 3 3 2 1 3 5, як сортування допоможе ![]() А можна не парити собі мізки. |
Like |
Пост
#23
|
Репутация: ![]() ![]() ultra active user ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 16 837 С нами с: 5-April 11 ![]() |
Цикл бесконечный, счетчик реагирует на все случаи, когда новое введенное число равно предыдущему.
Для выхода из цикла по совпадению адаптируйте под себя. » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « ЗЫ Хотя задачка и позволяет разобраться с функционалом отдельного инструмента, но все-равно из категории "у вас есть 5 передач и 4 колеса, но пользоваться вам можно только передачей заднего хода и только одной парой из колес по вашему усмотрению". Это при всех то возможностях с++ на минуточку. Сообщение отредактировал Like - Jan 16 2016, 18:22 |
dimich |
Пост
#24
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 222 С нами с: 4-April 06 ![]() |
int n = 0, t = 0, i = 0, k = 0; while (i == t) { cin >> n; i = n; t = n; k++; } cout << "Количество попыток: " << k << endl; Подсказка: переменные i и t должны вводиться в цикле с клавиатуры. А n тебе вообще не нужна. Под спойлером решение. » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Сообщение отредактировал dimich - Jan 16 2016, 10:49 |
maxdam |
Пост
#25
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 154 С нами с: 20-March 06 ![]() |
Подсказка: переменные i и t должны вводиться в цикле с клавиатуры. А n тебе вообще не нужна. Под спойлером решение. » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Мысля крутилась в приблизительно правильном направлении... два ввода.. сравнение - правда - ввод - сравнение... Сообщение отредактировал maxdam - Jan 16 2016, 15:30 |
Carnifex |
Пост
#26
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 179 С нами с: 5-July 09 ![]() |
while (true && i !=0) Не делай так больше ![]() Сообщение отредактировал Carnifex - Jan 16 2016, 18:06 |
Like |
Пост
#27
|
Репутация: ![]() ![]() ultra active user ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 16 837 С нами с: 5-April 11 ![]() |
Спасибо, поправил.
Оно хоть и не мешает, но там лишнее. |
Pylorama |
Пост
#28
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 158 С нами с: 29-January 10 ![]() |
|
maxdam |
Пост
#29
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 154 С нами с: 20-March 06 ![]() |
|
Pylorama |
Пост
#30
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 158 С нами с: 29-January 10 ![]() |
|
maxdam |
Пост
#31
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 154 С нами с: 20-March 06 ![]() |
Я думал у тебя код не запускается..
Кстати да .... Сообщение отредактировал maxdam - Jan 17 2016, 13:10 |
Carnifex |
Пост
#32
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 179 С нами с: 5-July 09 ![]() |
шось зовсім не працює. абсолютно Просто старые значения не сохраняются. Цепочки нет. Сравнивается каждое первое с каждым вторым и все. Пока не попадешь в пару разных чисел - цикл не закончится. Как по мне, так внутри цикла стоит делать только одну оперцию считывания из консоли. Все останое вынести в начальное заполнение. Сообщение отредактировал Carnifex - Jan 17 2016, 19:02 |
Phaust |
Пост
#33
|
Репутация: ![]() ![]() сам себе авторитет ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 14 114 С нами с: 9-July 07 ![]() |
Я не могу это читать.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Сообщение отредактировал Phaust - Jan 17 2016, 22:11 |
Pylorama |
Пост
#34
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 158 С нами с: 29-January 10 ![]() |
![]() |
dimich |
Пост
#35
|
Репутация: ![]() ![]() Активист ![]() Группа: Пользователи Сообщений: 222 С нами с: 4-April 06 ![]() |
|
Garry89 |
Пост
#36
|
Репутация: ![]() ![]() Дух Группа: Пользователи Сообщений: 87 С нами с: 24-June 08 ![]() |
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « |
Bartimeus |
Пост
#37
|
Репутация: ![]() ![]() Активист ![]() Группа: - Пользователи - Сообщений: 455 С нами с: 27-June 09 ![]() |
Коллеги, читайте внимательно условие задачи.
Оригинал задачи: Дана последовательность целых чисел a1, a2, a3 ,..., an, в начале которой записано несколько равных между собой элементов. Определить количество таких элементов последовательности. Условный оператор не использовать. Тоесть у нас на вход есть масив, все что нам нухно это узнать количество одинаковых элементов в начале последовалельности. Тоесть по факту у нас есть случай 1111134967, и я должен почитать количество единиц в начале и вывести его. Если даже заморочится вводом для проверки то будет что-то вроде отдельной функции int arraySize = 0; int counter = 0; cout<<"Input array size" cin>>arraySize; int inputedArray[arraySize]; while(counter<arraySize) { cin>>inputedArray[couner] } Это даст нам начально заполненый масив в соответствии с условием, далее нам необходимо проверить сколько начальных элементов из него иквалы, тоесть int firstElement = inputedArray[0]; int result = 1; //так как один элемент у нас точно есть начальным while((result<inputedArray.size)&&(firstElement==inputedArray[result])) { result++; } return result; Можно сделать отдельных 2 метода, но где то так, как итог на выходе будем видеть количество елементов что задваиваются в начале, так же генерацию масива можно сделать рендомайзом. Сори если ошибки в синтаксисе, компилятора нет под рукой а на С писал очень давно..) Сообщение отредактировал Bartimeus - Feb 10 2016, 16:12 |
maxdam |
Пост
#38
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 154 С нами с: 20-March 06 ![]() |
Вот новая задачка...
В зрительном зале 25 рядов, в каждом из которых 36 мест (кресел). Информация о проданных билетах хранится в двумерном массиве, номера строк которого соответствуют номерам рядов, а номера столбцов - номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае - 0. Составить программу, определяющую число проданных билетов на места в 12-м ряду. Вопрос: Как правильно сравнить значение в элементе if ((i == zapros) && (a[i][j] == 1))? » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Сообщение отредактировал maxdam - Feb 12 2016, 21:49 |
Like |
Пост
#39
|
Репутация: ![]() ![]() ultra active user ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 16 837 С нами с: 5-April 11 ![]() |
Два сообщения, одно с практическим аспектом и побуждает интерес разбираться, второе - желание послать тему куда подальше. Это ж занятие какое интересное, в цифрах сухих копаться...
|
maxdam |
Пост
#40
|
Репутация: ![]() ![]() Постоялец ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 154 С нами с: 20-March 06 ![]() |
a[i][j] = rand() % 2;
Найдена ошибка, снимаю вопрос (( |
![]() ![]() |
![]() |
Упрощённая версия | Сейчас: 25th July 2024 - 4:45 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |