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

Как что бы при команде cin текст не переходил на другую строчку?

08.12.2018, 21:57. Показов 1644. Ответов 6

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//Пример
int a,b;
char c;
cin >> a >> c >> b;
if (c == '+')
{
  cout << " = " << a+b; 
}
/* Желаемый результат что бы вывело:
 2 + 2 = 4
Выводит:
2 + 2
= 4
Как избежать такого перехода?
\n ведь есть, может существует что то аналогичное?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2018, 21:57
Ответы с готовыми решениями:

Как сделать, что когда результатом поиска становится false, чтоб действие перешло да другую строчку?
ищу на листе некую переменную, пока find находит их, то все в порядке, но как только он пытается найти значение переменной которой нет,...

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

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

6
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
08.12.2018, 22:17
Цитата Сообщение от Danyoka Посмотреть сообщение
Как избежать такого перехода?
Предположу, что никак. Это у вас результат выглядит так. А если пользователь будет давить на клавиши в такой последовательности: <2> <enter> <+> <enter> <2> <enter> ? Полагаю, получим уже такой вывод:

Code
1
2
3
4
2
+
2
 = 4
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
08.12.2018, 23:10
Впрочем, как говорил один умный человек, "нет ничего невозможного". Под спойлером программа, вывод которой может выглядеть так, как вам нужно. Но предупреждаю: код чисто для ознакомления в развлекательных целях, в реальных программах повторять не рекомендую. Вычисление происходит после ввода символа "=".

Ввод данных производится в "raw" режиме (подробнее в документации, High-Level Console Modes).



Осторожно! Отвратительный код
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
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <sstream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main() {
    SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), 0);
 
    unsigned char c = 0;
    string input;
    while ((c = cin.get()) != '=') {
        if (c == '\x08') {
            cout << c << ' ' << c;
            if (input.length() > 0) {
                input.erase(input.length() - 1, 1);
            }
        }
        else if (c >= ' ') {
            cout << c;
            input += c;
        }
    }
 
    int a, b;
    istringstream s_in(input);
    s_in >> a >> c >> b;
 
    if (c == '+') {
        cout << "= " << (a + b) << endl;
    }
 
    system("pause");
    return 0;
}
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
09.12.2018, 00:05
Строка 25 будет более правильной, если написать так:
C++
1
int a = 0, b = 0;
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
09.12.2018, 00:10
Цитата Сообщение от valen10 Посмотреть сообщение
Строка 25 будет более правильной, если написать так
А смысл? если дальше ожидается ввод в эти переменные?
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
09.12.2018, 00:23
Цитата Сообщение от Avaddon74 Посмотреть сообщение
А смысл?
Не уточнил, этот комментарий к моему коду относится. Ввод из stringstream не блокируется, если в строке закончились данные, поэтому если ввести 2+=, то без инициализации b=0 получится чушь.

По правилам написания хорошего кода любые переменные должны быть инициализированы. Если на момент создания переменной значение еще не готово, в переменную записывается 0 или его аналог для конкретного типа данных. Смысл наглядно показан в примере выше.
0
 Аватар для Avaddon74
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
09.12.2018, 00:37
Цитата Сообщение от valen10 Посмотреть сообщение
поэтому если ввести 2+=, то без инициализации b=0 получится чушь.
Мое мнение: "сам дурак" если так ввел, что ввел, то и получил
А проверка на корректный ввод делается иначе.
Инициализация при объявлении нужна лишь тогда, когда эта переменная будет использована позже по коду и в том случае, если в итоге может получится исходя из управляющих конструкций, что она не инициализируется.
например:
C++
1
2
int a;
if (b == 12) a = 3;
т.е. здесь может получится, что a не инициализируется, тогда лучше это сделать при объявлении.
Нет, конечно это не ошибка и может даже хорошая привычка, но если в следующей же строке ожидается ввод, то мне кажется это бессмысленным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2018, 00:37
Помогаю со студенческими работами здесь

Нужно что бы текст при определенном колличестве символов переносился на другую строку
У меня есть скрипт, который сам прописывает в таблице строки и вводит в каждую строку нужный текст. Проблема в чем: мне нужно что бы...

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже использую вещи, которые мне не понятны, и прошу объяснить, как...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get()...

Как настроить, что бы он не переходил в ждущий/спящий режим
На ноуте стоит убунту. стол Кеды. Как настроить, что бы он не переходил в ждущий/спящий режим, экран не выключался, и не выходил из...

Не вводятся данные по команде cin
Привет всем! Пишу простейшую прогу в NetBeans 8.1 ,компилятор MinGW. Ничего не выводится на экран при запросе на ввод данных cin. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru