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

Почему не работает код и выдает три бэкслеша вместо двух. Экспериментирую циклы

09.09.2015, 19:16. Показов 1980. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Так я понимаю код. Исправьте если не правильно

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
#include <stdio.h>
int main()
{
    long t, l, s; 
l =0; 
while ((t=getchar())!=EOF){ // поочередно читай каждый символ ( чтение присваиваю символу t )
if(t !='    '){              // если t не равно табуляции и это истина
    putchar(t);           //выведи t
    l=0;                  //повторяй со следующим таким же знаком
}
else if (l ==0){  // программа начнет этот цикл если t=' '. Поэтому в любом случае(Если l=0). Нам нужно условие
    printf("\\t"); //выведи \t
}
    if(t !='\b'){
    l=0;}
    else if (l==0){
    printf ("\b");
    }
    if(t !='\\'){l=0;
}
    else if(l==0){
    printf("\\\\");
    }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.09.2015, 19:16
Ответы с готовыми решениями:

Почему та не работает код, хотя ошибок не выдает
При вводе текста &quot;выход&quot; в TextBox должно ввестись в Label текст &quot;приняла&quot;. Но почему та ни чего не происходит. public class DECCES ...

Объясните, как работает код и почему выдает нелогичные результаты
Dim f, s As Integer f = 0 m: s = 1000 - f Write(f &amp; &quot; &quot; &amp; s &amp; &quot; &quot;) f = f + 1 If f &lt;= 1000...

Почему программа выдает ошибку при первом запуске, а дальше работает нормально? Код C
Подскажите почему программа выдает ошибку при первом запуске, а дальше работает нормально? #include &lt;iostream&gt; #include...

18
09.09.2015, 19:21

Не по теме:

Эх… нужно было ставить теги С и создавать тему в другом разделе

0
09.09.2015, 19:22

Не по теме:

удолено...

0
6 / 5 / 1
Регистрация: 06.09.2015
Сообщений: 176
09.09.2015, 19:25  [ТС]
Задание :
Напишите программу для копирования входного потока в выходной с заменой знаков табуляции на \t, символов возврата назад (Backspace) на \b, а обратных косых черт - на \\. Это сделает табуляции и символы возврата легко читаемыми в потоке.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
09.09.2015, 19:26
Программер, а зачем вам l, которая везде и всегда равна 0?
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
09.09.2015, 19:27
Программер,
C++
1
if(t !='    '){              // если t не равно табуляции и это истина
исправь на
C++
1
if(t !='\t'){              // если t не равно табуляции и это истина
0
6 / 5 / 1
Регистрация: 06.09.2015
Сообщений: 176
09.09.2015, 19:31  [ТС]
да я понимаю что он здесь лишний, я просто проверял что будет если... И кстати здесь int s тоже лишнее, это просто забыл стереть
Так почему код не работает?

Добавлено через 3 минуты
У меня это нормально работает, Просто когда я пишу \ мне выводит три \\\ а нужно два \\
0
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
09.09.2015, 19:34
Цитата Сообщение от Программер Посмотреть сообщение
Задание :
Напишите программу для копирования входного потока в выходной с заменой знаков табуляции на \t, символов возврата назад (Backspace) на \b, а обратных косых черт - на \\. Это сделает табуляции и символы возврата легко читаемыми в потоке.
Только я не знаю, что такое символ возврата назад. \b — это звонок.
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
    int ch;
 
    while ((ch = getchar()) != EOF) {
        if (ch == '\t') {          // введён символ табуляции
            printf("\\t");         // выводим \t
        } else if (ch == '\b') {   // ??
            printf("\\b");         // звонок
        } else if (ch == '\\') {   // введён обратный слеш
            printf("\\\\");        // выводим \\
        } else {
            putchar(ch);
        }
    }
 
    return 0;
}
0
6 / 5 / 1
Регистрация: 06.09.2015
Сообщений: 176
09.09.2015, 19:38  [ТС]
mymedia, я видел этот вариант, но не мог бы объяснить в чем ошибка у меня
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
09.09.2015, 19:39
Лучший ответ Сообщение было отмечено Программер как решение

Решение

Программер,
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
    long t, l, s;
    l = 0;
    while ((t = getchar()) != EOF)
    { // поочередно читай каждый символ ( чтение присваиваю символу t )
        if (t != '\t')
        {              // если t не равно табуляции и это истина
            putchar(t);           //выведи t
            l = 0;                  //повторяй со следующим таким же знаком
        }
        else if (l == 0)
        {  // программа начнет этот цикл если t='    '. Поэтому в любом случае(Если l=0). Нам нужно условие
            printf("\\t"); //выведи \t
        }
        if (t != '\b')
        {
            l = 0;
        }
        else if (l == 0)
        {
            printf("\b");
        }
        if (t != '\\')
        {
            l = 0;
        }
        else if (l == 0)
        {
            printf("\\");
        }
    }
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
09.09.2015, 19:39
Цитата Сообщение от mymedia Посмотреть сообщение
\b — это звонок.
как же сильно Вы заблуждаетесь - это забой, звонок когда-то был \a.
0
09.09.2015, 19:41

Не по теме:


Цитата Сообщение от Kerry_Jr Посмотреть сообщение
как же сильно Вы заблуждаетесь - это забой, звонок когда-то был \a.
Точно, точно. Глянул в справочнике. Все эти сокращения так сразу не запомнишь — не часто используются.
А не подскажете, как ввести с клавиатуры символ \b ?

0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
09.09.2015, 19:41
Лучший ответ Сообщение было отмечено Программер как решение

Решение

Цитата Сообщение от Программер Посмотреть сообщение
объяснить в чем ошибка у меня
Дело в том, что когда ты нажимаешь клавишу обр. косой черты, а следом за этой клавишей enter, то:
1) тот нажатый тобою бэк слэш выводится на экран (это называется ввод эхом, ты нажал - консоль отобразила этот символ)
2) вдобавок к этому выводятся еще 2 бэкслеша
Итого 3 бекслеша
1
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
09.09.2015, 19:45
Лучший ответ Сообщение было отмечено Программер как решение

Решение

Программер, у mymedia код хороший, но забой в нем не увидеть. А чтобы увидеть, добавьте заголовок <conio.h>, а вместо getchar() используйте _getch(), вместо putchar() - _putch()

Добавлено через 3 минуты
Цитата Сообщение от mymedia Посмотреть сообщение
с клавиатуры символ \b ?
Backspace
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <conio.h>
#include <stdio.h>
 
int main()
{
    char t;
    while ((t = _getch()) != EOF)
    {
        if (t == '\t')
            printf("\\t");
        else if(t == '\\')
            printf("\\\\");
        else if (t == '\b')
            printf("\\b");
        else
            _putch(t);
    }
}
0
6 / 5 / 1
Регистрация: 06.09.2015
Сообщений: 176
09.09.2015, 19:53  [ТС]
Ferrari F1, Я вижу вы исправили 4 бэкслеша на два, может я с ума схожу, но я это делал уже и у меня не получилось почему-то. В любом случае спасибо! Очень Помогли) можно начинать следующее
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
09.09.2015, 19:55
Цитата Сообщение от Программер Посмотреть сообщение
4 бэкслеша на два
C++
1
printf("\\\\");// выводит 2 бэкслеша
Если не понимаете почему так, почитайте про escape последовательности языка Си (Си++)
0
6 / 5 / 1
Регистрация: 06.09.2015
Сообщений: 176
09.09.2015, 20:10  [ТС]
у меня три и вы сами ответили почему)

Добавлено через 13 минут
Ferrari F1, подскажите а как здесь убрать здесь это эхо? и почему оно появляется или ссылочку, где можно узнать в чем здесь прикол
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
09.09.2015, 20:13
Программер, Kerry_Jr вам уже ответил
https://www.cyberforum.ru/post8056465.html
Попробуйте его код и увидете, что нажатая клавиша не будет отображена консолью.
1
6 / 5 / 1
Регистрация: 06.09.2015
Сообщений: 176
09.09.2015, 20:25  [ТС]
Всем большой рахмет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.09.2015, 20:25
Помогаю со студенческими работами здесь

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

Почему плата выдает 100 В вместо 220 В?
Здравствуйте, электронщики-форумчане! Я в радио-электронике &quot;ноль&quot;, поэтому сильно надеюсь на вашу помощь. Проблема в электронном...

Почему цикл выполняется три раза вместо одного
Программа выводит конструкцию циклов в языке C#. Задача сделать так , чтоб меню опроса выползало пока не будет введен нужный символ. Вроде...

Вместо десятичной представления числа выдает целое. Почему?
Написала в делфи программу нахождения корней квадратного уравнения. При тестировке программы и вводе значений а=4, b=4, c=1 вместо должного...

Задание codacademy в rand три параметра, вместо двух
$team = array(&quot;hoob&quot;, &quot;pont&quot;); array_push($team, &quot;bOtka&quot;); array_push($team, &quot;Al&quot;); array_push($team, &quot;Listten&quot;); ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
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