Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Учю Си :). Не понимаю, что делает оператор. Help.

Ответить
Настройки темы
Учю Си :). Не понимаю, что делает оператор. Help.

Аватара для Guest

Guest



Профиль | Цитировать


Код: Выделить весь код
#include <stdio.h>
/* подсчет цифр, символов-разделителей и прочих символов */
main()
{
    int с, i, nwhite, nother;
    int ndigit[10];
    nwhite = nother = 0;
    for (i = 0; i < 10, ++i)
        ndigit[i]= 0;
    while ((c = getchar()) != EOF)
        if (c >='0' && с <= '9')
            ++ndigit[c – '0'];
        else if (c == ' ' || c == '\n' || c == '\t')
            ++nwhite;
        else 
            ++nother;
    printf(“цифры =“);
    for (i = 0; i < 10; ++i)
        printf(“%d”, ndigit[i]);
    printf(“, символы-разделители =%d, прочие =%d\n”, nwhite, nother);
}
Что сие означатет " ++ndigit[c – '0'];" ?


[s]Исправлено: hasherfrog, 11:44 8-09-2004[/s]

Отправлено: 22:35, 07-09-2004

 
Pasechnik


Сообщения: n/a

Профиль | Цитировать


В переменной с - код введенного символа. Потом от неё отнимают код символа '0' (нуль), следовательно результатом будет сама введенная цифра (а не её ASCII-код). А потом увеличивают элемент массива с индексом, соответствующим введенной цифре, на единицу.

Отправлено: 00:44, 08-09-2004 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Guest

Guest


Профиль | Цитировать


То есть, как я понял, ascii значение переэтовает в двоичный код, пересылается в регистер, отнимается от туда 0, и на переменную с перезаписывается уже не ascii код цифры, а двоичный код этой цифры?
Никогда и нигде не происходит обратного преобразования в ascii?

Отправлено: 02:28, 08-09-2004 | #3


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Guest
(c – '0') - вычисление числа из ascii-кода цифры.
(ndigit[c – '0']) - обращение к ячейке массива, соответствующей цифре.
(++ndigit[c – '0'];) - увеличение этой ячейки на 1.
Т.о. идёт подсчёт количества встреченных ascii-кодов, соответствующих каждой цифре 0-9, т.е. для каждой цифры свой счётчик.

Отправлено: 12:07, 08-09-2004 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Учю Си :). Не понимаю, что делает оператор. Help.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Что делает служба Adobe LM Service? dascon Хочу все знать 2 10-09-2009 23:36
HDD - Что делает Vista SP1 Ultimate с HDD?!? Riw Накопители (SSD, HDD, USB Flash) 8 30-03-2009 18:17
что это за оператор +7916? alexandri Мобильные ОС, смартфоны и планшеты 7 25-07-2005 09:40
Что делает команда? Guest Программное обеспечение Linux и FreeBSD 19 03-06-2004 01:12
Я понимаю, что подобное было, но всё же: Guest Хочу все знать 4 12-05-2004 16:15




 
Переход