Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 1
Регистрация: 27.10.2024
Сообщений: 59

Ввод нескольких значений через operator>>

21.07.2025, 17:28. Показов 3282. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
  int counter = 0;
  for (int i = 0; i < 6; i++)
  {
    int x, y;
    cin >> x, y;
    if (sqrt(pow(x - 0, 2) - pow(y - 0, 2)) <= 10 ||
        sqrt(pow(x - 25, 2) - pow(y - 0, 2)) <= 10||
        sqrt(pow(x - 50, 2) - pow(y - 0, 2)) <= 10||
        sqrt(pow(x - 75, 2) - pow(y - 0, 2)) <= 10||
        sqrt(pow(x - 100, 2) - pow(y - 0, 2) <= 10)
       )
    {
      counter++;
    }
  }
  cout << counter;
}
В этом коде в этой строке
C++
1
cin >> x, y;
иногда происходит так, что когда я задаю значение x и y, то после того как 1 проход цикла кончился, у меня не требует повторного ввода, а просто у x и y остаются значения с прошлого ввода.
Например:
1 проход
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i = 0; i < 6; i++)
  {
    int x, y; 
    cin >> x, y; #ввели, что например значения x и y это 0 и 0
    if (sqrt(pow(x - 0, 2) - pow(y - 0, 2)) <= 10 || #прошла проверка 
        sqrt(pow(x - 25, 2) - pow(y - 0, 2)) <= 10|| 
        sqrt(pow(x - 50, 2) - pow(y - 0, 2)) <= 10||
        sqrt(pow(x - 75, 2) - pow(y - 0, 2)) <= 10||
        sqrt(pow(x - 100, 2) - pow(y - 0, 2) <= 10)
       )
    {
      counter++; #повысили значение переменной в зависимости от выполнения if
    }
x = 0
y = 0
2 проход
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i = 0; i < 6; i++)
  {
    int x, y; 
    cin >> x, y; #здесь нам не требует ввода, т.е. x и y остались 0 и 0
    if (sqrt(pow(x - 0, 2) - pow(y - 0, 2)) <= 10 || #прошла проверка (опять с теми же числами, что и были введены в 1 проходе) 
        sqrt(pow(x - 25, 2) - pow(y - 0, 2)) <= 10|| 
        sqrt(pow(x - 50, 2) - pow(y - 0, 2)) <= 10||
        sqrt(pow(x - 75, 2) - pow(y - 0, 2)) <= 10||
        sqrt(pow(x - 100, 2) - pow(y - 0, 2) <= 10)
       )
    {
      counter++; #повысили значение переменной в зависимости от выполнения if (также)
    }
и на 3 проходе уже требует ввод.
Что за магия с++?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.07.2025, 17:28
Ответы с готовыми решениями:

Реализация operator + через operator +=
внутри следующей темы возник вопрос, ответ на который так и не был получен:...

Вызов operator[] через operator[] const
Перелистывал Майерса, наткнулся на код, подскажите пожалуйста почему он советует закомментированный...

Operator +, operator += — какой через какой реализовывать?
Для class Fraction { // ... public: Fraction operator + ( const Fraction&amp; right ) const;...

22
228 / 169 / 71
Регистрация: 14.06.2024
Сообщений: 458
21.07.2025, 17:34
Лучший ответ Сообщение было отмечено long399 как решение

Решение

Цитата Сообщение от RomanKolyasev Посмотреть сообщение
cin >> x, y;
C++
1
cin >> x >> y;//кстати это ветка чистого С
0
0 / 0 / 1
Регистрация: 27.10.2024
Сообщений: 59
21.07.2025, 17:38  [ТС]
А ну не заметил
0
фрилансер
 Аватар для Алексей1153
6435 / 5630 / 1126
Регистрация: 11.10.2019
Сообщений: 14,970
21.07.2025, 17:42
---удалено----

хотя нет, там же минус
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
21.07.2025, 20:57
Цитата Сообщение от RomanKolyasev Посмотреть сообщение
Что за магия с++?
Так а откуда вы вообще взяли, что cin >> x, y; имеет какое-то отношение к "вводу нескольких значений"? Где вы такое видели, чтобы после >> кто-то перечислял переменные через запятую?
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,739
Записей в блоге: 2
23.07.2025, 03:23
Кстати, а как работает оператор >> (в смысле форматированный ввод)? Кто видел нормальное описание - плиз "ткните носиком". Напр
C++
1
2
int x, y;
input >> x >> y;
Что прочитается из строки/файла
12ж 13
Заглотит ли он невалидный символ "ж"? Когда установит флаг ошибки: после первого чтения или начиная второе?

Спасибо
0
фрилансер
 Аватар для Алексей1153
6435 / 5630 / 1126
Регистрация: 11.10.2019
Сообщений: 14,970
23.07.2025, 05:56
Igor3D,

C++
1
2
int x, y, z;
input >> x >> y >> z;
если подать символы
12ж 13
то
в x будет считано 12,
в y запишется 0, а поток будет переведён в состояние ошибки
z не будет меняться (и останется неинициализированным)

а в потоке так и останется
ж 13
0
Заблокирован
23.07.2025, 12:02
Цитата Сообщение от Igor3D Посмотреть сообщение
как работает оператор >>
Цитата Сообщение от Igor3D Посмотреть сообщение
Кто видел нормальное описание - плиз "ткните носиком"
Первый раз в первый класс >> std::basic_istream<CharT,Traits>::operator>>

И дальше по ссылочкам, тыц-тыц :
https://en.cppreference.com/w/... ction.html
https://en.cppreference.com/w/... t/get.html
0
0 / 0 / 1
Регистрация: 27.10.2024
Сообщений: 59
23.07.2025, 14:23  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Так а откуда вы вообще взяли, что cin >> x, y; имеет какое-то отношение к "вводу нескольких значений"? Где вы такое видели, чтобы после >> кто-то перечислял переменные через запятую?
Я на с++ очень давно не писал, а до этого на питоне много строчил. И я уже по привычке ввод через пробел пишу.
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,739
Записей в блоге: 2
23.07.2025, 23:04
Цитата Сообщение от Алексей1153 Посмотреть сообщение
в x будет считано 12,
в y запишется 0, а поток будет переведён в состояние ошибки
z не будет меняться (и останется неинициализированным)
а в потоке так и останется
ж 13
Получается так

- пропускает стартовые whitespace (можно отключить)

- кушает символ за символом до тех пор пока перевод прочитанного в число возможен. Останавливается на первом символе с которым этот перевод невозможен (подобно сишным ф-циям типа strtol и др). Этот символ не извлекается. Если удался хоть какой-то перевод - считается что прочитали без ошибки (в примере первое чтение удачно, стоим на "ж" без ошибок). И только если ничего не удалось перевести (второе чтение начинается с "ж") - ошибка

Все так?
0
фрилансер
 Аватар для Алексей1153
6435 / 5630 / 1126
Регистрация: 11.10.2019
Сообщений: 14,970
24.07.2025, 11:33
Igor3D, да. Только при первом натыкании на "ошибку" (точнее - если нет ни одного символа для парса в int) - переменная всё же будет обнулена, а потом поток перейдёт в состояние ошибки
0
0 / 0 / 1
Регистрация: 27.10.2024
Сообщений: 59
24.07.2025, 11:45  [ТС]
В с++ есть 4 варианта вывода:
Неправильный вывод
Правильный вывод
Ошибка
Полная ересь, которая не может быть ответом ни к одному примеру
0
фрилансер
 Аватар для Алексей1153
6435 / 5630 / 1126
Регистрация: 11.10.2019
Сообщений: 14,970
24.07.2025, 11:47
Цитата Сообщение от RomanKolyasev Посмотреть сообщение
Ошибка
Полная ересь, которая не может быть ответом ни к одному примеру
это лишние строки
0
0 / 0 / 1
Регистрация: 27.10.2024
Сообщений: 59
24.07.2025, 11:57  [ТС]
Ошибка - это не вывод, а ересь можно отнести к неправильному ответу.
Поэтому это скорее 4 возможных варианта, а не вывод
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,739
Записей в блоге: 2
27.07.2025, 14:26
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Только при первом натыкании на "ошибку" (точнее - если нет ни одного символа для парса в int) - переменная всё же будет обнулена, а потом поток перейдёт в состояние ошибки
Хорошо, такая ситуевина, пытаемся читать int
ж
(пробелы и ж) Как мне "восстановиться" после неудачной попытки прочитать int и прочитать символ "ж" ?
0
фрилансер
 Аватар для Алексей1153
6435 / 5630 / 1126
Регистрация: 11.10.2019
Сообщений: 14,970
27.07.2025, 18:23
Igor3D, сбросить флаги ошибок ( clear() ). Почистить поток от кривых символов ( например, ignore() ). И продолжить разбор, если вообще смысл есть
0
27.07.2025, 18:26

Не по теме:

Когда я вижу одну букву,
у меня сразу выскакивают ассоциированные слова.
Вот на букву ж вылетает сразу слово жопа...
Иногда печатаешь латиницей, и путаешь регистр, и видишь букву жж.
Зачем вы выбрали такую букву?
Это нехорошая буква...

0
 Аватар для Наталья8
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,865
27.07.2025, 18:37
final_file(1).mp4
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,739
Записей в блоге: 2
27.07.2025, 20:21
Цитата Сообщение от Алексей1153 Посмотреть сообщение
если вообще смысл есть
Пример (3 варианта)
12
12 ; comments
12 ж
Во всех 3 случаях успешно прочитано 12 и ошибка потока на попытке следующего чтения. Но в первых 2 случаях все норм (кончилась строка или начались примечания), а в последнем - калечный символ, файл невалиден. Как это грамотно разрулить?
0
фрилансер
 Аватар для Алексей1153
6435 / 5630 / 1126
Регистрация: 11.10.2019
Сообщений: 14,970
27.07.2025, 20:41
Цитата Сообщение от Igor3D Посмотреть сообщение
файл невалиден. Как это грамотно разрулить?
перестать читать файл. Ведь он невалиден
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.07.2025, 20:41
Помогаю со студенческими работами здесь

Чем "operator *=" отличается от "operator *"?
снова застряла, не могу понять, чем этот оператор должен отличаться от оператора*.....? вот он, но...

operator char() или operator int()
Здорова госпдо! Снова ничо не ясно как всегда. Разбираю программку из книги Страуструпа, там он...

Expected init-declarator before "operator".expected `,' or `;' before "operator"
Пример не мой. Пытаюсь у себя запустить и чтото неполучается. Ошибка на строке 24 Expected...

Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число"
Здравствуйте. Предлагаю заняться арифметикой. Создал прослейший класс, перегрузил операторы...

Class & operator's |Error: undefined reference to operator
Компилирует нормально, но когда хочу использовать оператор выдает ошибку:undefined reference to...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru