Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Chebyraw
1 / 1 / 0
Регистрация: 10.07.2015
Сообщений: 27
1

Читать входные символы до тех пор, пока не встречается символ #

23.08.2015, 17:13. Просмотров 357. Ответов 2
Метки нет (Все метки)

Здравствуйте! Выполнял упражнение из учебника С. Прата и столкнулся с одной проблемой.
Сама задача звучит так:
Кликните здесь для просмотра всего текста
Напишите программу, которая читает входные символы до тех пор, пока не встречается символ #. Программа должна печатать каждый символ и его ASCII код в десятичном представлении. Распечатайте выходные данные по восемь пар символ – код в строке. Совет: используйте счетчик символов и операцию деления по модулю (%) для печати символа новой строки для каждых восьми итераций цикла.

Вот код, который у меня получился:
Кликните здесь для просмотра всего текста
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
36
37
38
#include <windows.h>
#include <stdio.h>
#include <ctype.h>
#include <locale.h>
#define STOP '#'
 
int main (void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_CTYPE, "Russian_Russia.1251");
 
    char ch, letter;
    int num = 0;
 
    printf("Вводите символы: \n");
    while ((ch = getchar()) != STOP)
    {
        letter = ch;
        if (num <= 8)
        {
            if (isprint(letter))
            {
                num++;
                printf("%d) %c = %d\n", num, letter, letter);
 
                if (num == 8) //Пропуск строки
                    printf("\n");
 
                if (num > 8) //Сброс счётчика
                    num %= 8;
            }
        }
    }
 
    system ("pause");
    return 0;
}


Программа работает, но не совсем корректно. После сбрасывания счётчика число num становится равным 9, а не 1, а потом работает как надо до следующей итерации.
Вводите символы:
check program #
1) c = 99
2) h = 104
...
8) r = 114
9) o = 111
2) g = 103
...
Как это можно исправить? При любой попытке изменить значения программа читает только первые 8 символов и игнорирует последующие.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2015, 17:13
Ответы с готовыми решениями:

Напишите программу, которая читает входные символы до тех пор, пока не встретится символ #
Здравствуйте помогите решить задачу. Напишите программу ,которая читает входные символы до тех...

Вводить строки до тех пор пока не будет введена строка end
Не получается! #include &lt;stdio.h&gt; int main() { char s; int i; printf(&quot;Enter a string:&quot; );...

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

Начать просмотр слова слева направо до тех пор, пока не встретится повторяющиеся буквы
Порядок выполнения задания (общая схема алгоритма): 1. Запросить у пользователя максимально...

Вводить массив символов до тех пор, пока два последних введенных символа не будут равны двум первым
Вводить массив символов до тех пор, пока два последних введенных символа не будут равны двум первым...

2
ValeryS
Модератор
7483 / 5666 / 725
Регистрация: 14.02.2011
Сообщений: 19,368
Завершенные тесты: 1
23.08.2015, 17:25 2
вот здесь у тебя и ошибка в логике
когда num становится равным 8 то
Цитата Сообщение от Chebyraw Посмотреть сообщение
num++;
сделает её равной 9
а потом
9%8=1 вот у тебя и получится 2 на следующей итерации
далее
Цитата Сообщение от Chebyraw Посмотреть сообщение
if (num <= 8)
бесполезное условие num всегда меньше 8 об этом позаботится остаток от деления
Цитата Сообщение от Chebyraw Посмотреть сообщение
if (num > 8) //Сброс счётчика
тоже лишняя
тебе нужно было просто написать
Цитата Сообщение от Chebyraw Посмотреть сообщение
num %= 8;
1
Chebyraw
1 / 1 / 0
Регистрация: 10.07.2015
Сообщений: 27
23.08.2015, 17:39  [ТС] 3
ValeryS, и правда. Как только избавился от условия
Цитата Сообщение от Chebyraw Посмотреть сообщение
if (num <= 8)
так сразу же всё заработало как надо.
Спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2015, 17:39

Выводить на экран вводимые символы до тех пор, пока не введен символ <*>
Напишите программу, которая будет выводить на экран вводимые символы до тех пор, пока не введен...

Считывать с клавиатуры символы до тех пор, пока не введен символ "$"
Задача: Напишите программу, которая считывает с клавиатуры символы до тех пор, пока не будет...

Выводить строку, сокращая каждый раз на 1 символ до тех пор, пока в строке не останется 1 символ
Тема: Строки.Множества. 3.1. Напишите программу, которая вводит строку и выводит ее, сокращая...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru