Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 5257-й день

Тут також може бути i Ваша реклама

 не могу справиться с задачей по С++

maxdam
Jan 15 2016, 18:27
  
Пост #1



Репутация:   85  
Постоялец
***

Группа: Пользователи
Сообщений: 1 141
С нами с: 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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
3 Страницы  < 1 2 3 >  
Reply to this topicStart new topic
Ответов(20 - 39)
Like
Jan 16 2016, 1:45
  
Пост #21



Репутация:   937  
ultra active user
******

Группа: VIP
Сообщений: 12 068
С нами с: 5-April 11


К тому же, здесь в коде сравниваются пары чисел, а не их последовательность.
Насколько я понял, мы забиваем ряд чисел и счетчик должен показать сколько раз числа совпали, а цикл быть бесконечным. Тут же программа отрабатывает два ввода значений и завершается.
Причем не закциклишь наскоком в мейн, поскольку за счет инициализации второй переменной значением первой мы каждый раз в цикл будем встревать, а счётчик от этого тикать.

Недавно попадалась задачка похожего плана, если склероз не подкачает попробую вспомнить.
Но не ночь глядя.

Сообщение отредактировал Like - Jan 16 2016, 1:46
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pylorama
Jan 16 2016, 4:13
  
Пост #22



Репутация:   54  
Дух


Группа: Пользователи
Сообщений: 158
С нами с: 29-January 10


(Phaust @ Jan 16 2016, 1:35) Перейти к цитате

В общем виде для N элементной последовательности без ограничений на данные O(N) решения нет

1. Можна припустити, що на початку є декілька послідовно розташованих однакових елементів і потрібно порахувати їх кількість. Тоді достатньо пройтись по послідовності до зустрічі з першим інакшим елементом. Кількість ітерацій у найгіршому випадку (усі елементи однакові) становитиме N.
2. Можна припустити, що на початку є декілька послідовно розташованих однакових елементів і потрібно порахувати кількість елементів рівних першому у всій послідовності. Якщо послідовність: 3 3 2 1 3 5, як сортування допоможе O_o.gif Без умовного оператора то буде страшний монстр Франкенштейна.

А можна не парити собі мізки.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Like
Jan 16 2016, 10:39
  
Пост #23



Репутация:   937  
ultra active user
******

Группа: VIP
Сообщений: 12 068
С нами с: 5-April 11


Цикл бесконечный, счетчик реагирует на все случаи, когда новое введенное число равно предыдущему.
Для выхода из цикла по совпадению адаптируйте под себя.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «

ЗЫ Хотя задачка и позволяет разобраться с функционалом отдельного инструмента, но все-равно из категории "у вас есть 5 передач и 4 колеса, но пользоваться вам можно только передачей заднего хода и только одной парой из колес по вашему усмотрению". Это при всех то возможностях с++ на минуточку.

Сообщение отредактировал Like - Jan 16 2016, 18:22
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimich
Jan 16 2016, 10:46
  
Пост #24



Репутация:   24  
Активист
*

Группа: Пользователи
Сообщений: 218
С нами с: 4-April 06


(maxdam @ Jan 15 2016, 18:27) Перейти к цитате

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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
maxdam
Jan 16 2016, 13:45
  
Пост #25



Репутация:   85  
Постоялец
***

Группа: Пользователи
Сообщений: 1 141
С нами с: 20-March 06


(dimich @ Jan 16 2016, 10:46) Перейти к цитате

Подсказка: переменные i и t должны вводиться в цикле с клавиатуры. А n тебе вообще не нужна. Под спойлером решение.
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «



Мысля крутилась в приблизительно правильном направлении...
два ввода.. сравнение - правда - ввод - сравнение...

Сообщение отредактировал maxdam - Jan 16 2016, 15:30
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Carnifex
Jan 16 2016, 17:58
  
Пост #26



Репутация:   16  
Дух


Группа: Пользователи
Сообщений: 179
С нами с: 5-July 09


while (true && i !=0)

Не делай так больше wink.gif Это все равно что написать: ПОКА(true ИЛИ true ИЛИ false) - зачем два раза писать true...

Сообщение отредактировал Carnifex - Jan 16 2016, 18:06
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Like
Jan 16 2016, 18:23
  
Пост #27



Репутация:   937  
ultra active user
******

Группа: VIP
Сообщений: 12 068
С нами с: 5-April 11


Спасибо, поправил.
Оно хоть и не мешает, но там лишнее.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pylorama
Jan 16 2016, 21:24
  
Пост #28



Репутация:   54  
Дух


Группа: Пользователи
Сообщений: 158
С нами с: 29-January 10


(dimich @ Jan 16 2016, 10:46) Перейти к цитате

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


шось зовсім не працює. абсолютно
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
maxdam
Jan 17 2016, 1:32
  
Пост #29



Репутация:   85  
Постоялец
***

Группа: Пользователи
Сообщений: 1 141
С нами с: 20-March 06


(Pylorama @ Jan 16 2016, 21:24) Перейти к цитате

шось зовсім не працює. абсолютно


працює
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pylorama
Jan 17 2016, 12:57
  
Пост #30



Репутация:   54  
Дух


Группа: Пользователи
Сообщений: 158
С нами с: 29-January 10


(maxdam @ Jan 17 2016, 1:32) Перейти к цитате

працює

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
maxdam
Jan 17 2016, 13:08
  
Пост #31



Репутация:   85  
Постоялец
***

Группа: Пользователи
Сообщений: 1 141
С нами с: 20-March 06


Я думал у тебя код не запускается..

Кстати да ....

Сообщение отредактировал maxdam - Jan 17 2016, 13:10
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Carnifex
Jan 17 2016, 19:01
  
Пост #32



Репутация:   16  
Дух


Группа: Пользователи
Сообщений: 179
С нами с: 5-July 09


шось зовсім не працює. абсолютно

Просто старые значения не сохраняются. Цепочки нет. Сравнивается каждое первое с каждым вторым и все. Пока не попадешь в пару разных чисел - цикл не закончится. Как по мне, так внутри цикла стоит делать только одну оперцию считывания из консоли. Все останое вынести в начальное заполнение.

Сообщение отредактировал Carnifex - Jan 17 2016, 19:02
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Phaust
Jan 17 2016, 22:09
  
Пост #33



Репутация:   1175  
сам себе авторитет
******

Группа: Пользователи
Сообщений: 14 107
С нами с: 9-July 07


Я не могу это читать.

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


Сообщение отредактировал Phaust - Jan 17 2016, 22:11
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pylorama
Jan 18 2016, 0:40
  
Пост #34



Репутация:   54  
Дух


Группа: Пользователи
Сообщений: 158
С нами с: 29-January 10


Open in new window
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
dimich
Jan 18 2016, 8:26
  
Пост #35



Репутация:   24  
Активист
*

Группа: Пользователи
Сообщений: 218
С нами с: 4-April 06


(maxdam @ Jan 17 2016, 13:08) Перейти к цитате

Я думал у тебя код не запускается..

Кстати да ....


Под этим "Определить количество таких элементов" я понял определить количество одинаковых пар чисел.

Сообщение отредактировал dimich - Jan 18 2016, 8:27
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Garry89
Jan 28 2016, 21:23
  
Пост #36



Репутация:   7  
Дух


Группа: Пользователи
Сообщений: 87
С нами с: 24-June 08


» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Bartimeus
Feb 10 2016, 16:11
  
Пост #37



Репутация:   217  
Активист
*

Группа: - Пользователи -
Сообщений: 452
С нами с: 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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
maxdam
Feb 12 2016, 21:49
  
Пост #38



Репутация:   85  
Постоялец
***

Группа: Пользователи
Сообщений: 1 141
С нами с: 20-March 06


Вот новая задачка...
В зрительном зале 25 рядов, в каждом из которых 36 мест (кресел).
Информация о проданных билетах хранится в двумерном массиве, номера строк которого соответствуют номерам рядов, а номера столбцов - номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае - 0. Составить программу, определяющую число проданных билетов на места в 12-м ряду.

Вопрос: Как правильно сравнить значение в элементе if ((i == zapros) && (a[i][j] == 1))?

» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «


Сообщение отредактировал maxdam - Feb 12 2016, 21:49
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Like
Feb 12 2016, 23:40
  
Пост #39



Репутация:   937  
ultra active user
******

Группа: VIP
Сообщений: 12 068
С нами с: 5-April 11


Два сообщения, одно с практическим аспектом и побуждает интерес разбираться, второе - желание послать тему куда подальше. Это ж занятие какое интересное, в цифрах сухих копаться...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
maxdam
Feb 13 2016, 0:40
  
Пост #40



Репутация:   85  
Постоялец
***

Группа: Пользователи
Сообщений: 1 141
С нами с: 20-March 06


a[i][j] = rand() % 2;

Найдена ошибка, снимаю вопрос ((
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

3 Страницы  < 1 2 3 >
Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 5th August 2020 - 20:53
Сайт не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами и мы удалим её. Файлы для обмена предоставлены пользователями сайта.