Форум программистов, компьютерный форум CyberForum.ru

Объясните код пожалуйста - C++

Восстановить пароль Регистрация
 
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
13.12.2012, 23:27     Объясните код пожалуйста #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 FILE* fp = NULL;
    char* filename = "m:\\2.txt";
 
    if ((fp = fopen(filename,"r")) == NULL)
        cout<<"Unable to open file"<<filename;
    
    
    static char ch;
    static char* digits[] = { "zero", "one", "two" ,"three", "four","five", "six", "seven", "eight", "nine" };
 
  while ((ch = fgetc(fp)) != EOF)
 
        if (isdigit(ch))
            cout<<digits[ch - '0'];
Не понимаю код. особенно вот это
C++
1
[ch - '0']
Разъясните пожалуйста, доходчиво.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vladimir616
110 / 110 / 3
Регистрация: 05.07.2009
Сообщений: 224
14.12.2012, 00:34     Объясните код пожалуйста #2
banda, программа последовательно считывает числа из файла и выводит на экран их названия (чисел, в смысле). " ch - '0' " - это разность между числом в ch и нулём, для ch = '0' она будет равна нулю, а для ch = '6' - шести. А в нулевом и шестом элементах массива digits записаны, соответственно, слова "zero" и "six".
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
14.12.2012, 00:45  [ТС]     Объясните код пожалуйста #3
Vladimir616, Тогда почему если убрать '0' программа не работает.
Vladimir616
110 / 110 / 3
Регистрация: 05.07.2009
Сообщений: 224
14.12.2012, 00:49     Объясните код пожалуйста #4
banda, потому, что '0' != 0. '0' - это лишь символ, каждый символ имеет свой код, код '0' = 48, код '6' = 54, соответственно '6' - '0' = 54 - 48 = 6.
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
14.12.2012, 00:58  [ТС]     Объясните код пожалуйста #5
Тоесть если цикл нашел в тексте "7" с кодом = 55, то ему надо как-то указать индекс с seven, и делает он это такой вот логично-интересной зависимостью.
Я не знал что если вычитать переменные char то на выходе будет их код

Я верно говорю?
Не запутался еще больше?
Vladimir616
110 / 110 / 3
Регистрация: 05.07.2009
Сообщений: 224
14.12.2012, 01:02     Объясните код пожалуйста #6
banda, верно говорите .
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
14.12.2012, 01:07  [ТС]     Объясните код пожалуйста #7
Vladimir616, Осталось теперь до конца с указателями разобраться, а то они так мозг выносят. Посоветуете что-нибудь ?)
Vladimir616
110 / 110 / 3
Регистрация: 05.07.2009
Сообщений: 224
14.12.2012, 01:11     Объясните код пожалуйста #8
banda, ничего не могу порекомендовать, такую штуку, как указатели, лучше осваивать на практике, пару программ напишете - понимание придёт, ничего там особого нет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2012, 01:13     Объясните код пожалуйста
Еще ссылки по теме:

C++ Объясните, пожалуйста, код
C++ Объясните код, пожалуйста, файловый поток
Класс Вектор. объясните пожалуйста код! C++

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

Или воспользуйтесь поиском по форуму:
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
14.12.2012, 01:13  [ТС]     Объясните код пожалуйста #9
Большое спасибо)
Yandex
Объявления
14.12.2012, 01:13     Объясните код пожалуйста
Ответ Создать тему
Опции темы

Текущее время: 02:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru