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

Стивен Прата Язык программирования C++ лекции и упражнения (6-е издание). Листинг 6.8 - странная штука

16.05.2014, 19:33. Показов 13537. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Извиняюсь заранее, если было уже где-то - я не нашел(
Штудирую Прату 6-е издание.

Полностью перекопировал Листинг 6.8.:
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
39
40
41
#include <iostream>
#include <cctype>
 
int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
    
    cout << "Введите произвольный текст для анализа, в конце введите символ \"@\"\n";
 
    char ch;
    int whitespace = 0;
    int digits = 0;
    int chars = 0;
    int punct = 0;
    int others = 0;
 
    cin.get(ch);
    while (ch != '@')
    {
        if (isalpha(ch))
            chars++;
        else if (isspace(ch))
            whitespace++;
        else if (isdigit(ch))
            digits++;
        else if (ispunct(ch))
            punct++;
        else
            others++;
        cin.get(ch);
    }
 
    cout << chars << " символов, "
        << whitespace << " пробелов, "
        << digits << " чисел, "
        << punct << " знаков препинания, "
        << others << " остального говна.\n";
    system("PAUSE");
    return 0;
}

И при сборке\выполнении в MS VS 2013 вылетает следующая ошибка - во вложении, помогите пожалуйста, а то ничего не пойму(
Миниатюры
Стивен Прата Язык программирования C++ лекции и упражнения (6-е издание). Листинг 6.8 - странная штука  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.05.2014, 19:33
Ответы с готовыми решениями:

где скачать книгу "Язык программирования C. Лекции и упражнения Стивен Прата"
Подскажите у кого есть в електронном формате эта книга ? вот ссылка http://www.yakaboo.ua/ru/catalog/all/c-primer-plus-89173

С. Прата. Язык программирования C++. Лекции и упражнения
Заранее прошу прощения если мой топик здесь не к месту. Но все же, дело в том, что я окончил 1 курс Компьютерных наук и хочу летом подучить...

Нуждаюсь в электронной версии на русском Стивен Прата, «Язык программирования Си. Лекции и упражнения»(Именно Си, не ++!)
Можно где-либо достать, на русском Стивен Прата, «Язык программирования Си. Лекции и упражнения»? ...

19
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
16.05.2014, 19:51
У меня в VS 2008 ошибка не вылетает.
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 7
16.05.2014, 19:57  [ТС]
Тогда вообще мистика( У меня на двух компах (один Win7 - на работе, второй Win 8.1 - дом), на всех MS VS 2013, и одна фиговина - вылетает ошибка(
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.05.2014, 19:58
Не вижу причин. У меня все работает. Попробуйте полностью пересобрать проект.
Кликните здесь для просмотра всего текста

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <cctype>
 
using namespace std;
 
int main(int argc,char** argv)
{  
   setlocale(LC_ALL,"Russian");
   
   int   whitespace = 0;
   int   digits     = 0;
   int   chars      = 0;
   int   punct      = 0;
   int   others     = 0;
 
   cout << "Введите произвольный текст для анализа, в конце введите символ \"@\"\n";
 
   char  ch;
 
   cin.get(ch);
 
   while (ch != '@')
   {     
      if (isalpha(ch))
      {
         chars++;
      }
      else if (isspace(ch))
      {
         whitespace++;
      }
      else if (isdigit(ch))
      {
         digits++;
      }
      else if (ispunct(ch))
      {
         punct++;
      }
      else
      {
         others++;
      }
 
      cin.get(ch);
   }
 
   cout << chars      << " символов, "
        << whitespace << " пробелов, "
        << digits     << " чисел, "
        << punct      << " знаков препинания, "
        << others     << " остального говна.\n";
   
   return 0;
}
Миниатюры
Стивен Прата Язык программирования C++ лекции и упражнения (6-е издание). Листинг 6.8 - странная штука  
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 7
16.05.2014, 20:13  [ТС]
а что значит "полность пересобрать"? вроде и так пересобирается....
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
16.05.2014, 23:04
Цитата Сообщение от CPPNoob Посмотреть сообщение
И при сборке\выполнении в MS VS 2013 вылетает следующая ошибка - во вложении, помогите пожалуйста, а то ничего не пойму(
Ты чего-то жмёшь, когда вводишь данные (например, ctrl-Z), и у тебя накрывается входной поток.

Автор книжки забил в этом примере на обработку ошибок, т.к. эту тему объясняет в других темах.
И не инициировал переменную ch по умолчанию...

Попробуй изменить немного пример так:
Кликните здесь для просмотра всего текста
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
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <cctype>
 
#define NAFIK '@'
 
void get(char& ch)
{
    using namespace std;
    cin.get(ch);
    if (std::cin.fail())
        ch = NAFIK;
}
 
int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
 
    cout << "Введите произвольный текст для анализа, в конце введите символ \"@\"\n";
 
    char ch = ' ';
    int whitespace = 0;
    int digits = 0;
    int chars = 0;
    int punct = 0;
    int others = 0;
 
    get(ch);
    while (ch != NAFIK)
    {
        if (isalpha(ch))
            chars++;
        else if (isspace(ch))
            whitespace++;
        else if (isdigit(ch))
            digits++;
        else if (ispunct(ch))
            punct++;
        else
            others++;
        get(ch);
    }
 
    cout << chars << " символов, "
        << whitespace << " пробелов, "
        << digits << " чисел, "
        << punct << " знаков препинания, "
        << others << " остального говна.\n";
    system("PAUSE");
    return 0;
}
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 7
16.05.2014, 23:11  [ТС]
Диагностировать удалось только то, что ошибка вылетает при вводе русских символов(( Английские проходят нормально... Посоветует кто нибудь что нибудь такое, чтобы исправить подобную проблему?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.05.2014, 23:17
Лучший ответ Сообщение было отмечено CPPNoob как решение

Решение

Цитата Сообщение от CPPNoob Посмотреть сообщение
ошибка вылетает при вводе русских символов
Цитата Сообщение от CPPNoob Посмотреть сообщение
Посоветует кто нибудь что нибудь такое, чтобы исправить подобную проблему?
Там, где используются функции cctype, например:
C++
1
if (isalpha((unsigned char)ch))
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 7
16.05.2014, 23:25  [ТС]
Так точно! Спасибо ОГРОМНОЕ! С применением unsigned char - всё заработало! А можете объяснить из-за чего такое происходит? Чтобы тоже в теме быть...
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
16.05.2014, 23:28
Цитата Сообщение от CPPNoob Посмотреть сообщение
Так точно! Спасибо ОГРОМНОЕ! С применением unsigned char - всё заработало! А можете объяснить из-за чего такое происходит? Чтобы тоже в теме быть...
Можно ещё локаль передать в isalpha
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.05.2014, 23:32
Лучший ответ Сообщение было отмечено CPPNoob как решение

Решение

Цитата Сообщение от CPPNoob Посмотреть сообщение
А можете объяснить из-за чего такое происходит?
Знаковый и беззнаковый char. В разных реализациях по-разному бывает, поэтому у кого-то ошибки будут, у кого-то нет.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
16.05.2014, 23:36
Лучший ответ Сообщение было отмечено CPPNoob как решение

Решение

Цитата Сообщение от CPPNoob Посмотреть сообщение
С применением unsigned char - всё заработало!
потому что например русская "я" 0xFF
в signed -1
unsigned 255
о чем тебя и предупреждали в окошке когда вывалилась программа
у студии в настройка проекта есть пункт, кем считать char по умолчанию unsigned или signed
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.05.2014, 23:45
Цитата Сообщение от ValeryS Посмотреть сообщение
у студии в настройка проекта есть пункт, кем считать char по умолчанию unsigned или signed
Это где такое?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
16.05.2014, 23:52
Цитата Сообщение от alsav22 Посмотреть сообщение
Это где такое?
пишу по русски у меня русская 2008
проект
свойства
С/С++
язык
"По умолчанию char unsigned Да/нет
ключ /J

Добавлено через 1 минуту

Не по теме:

alsav22,мы же вроде где то обсуждали это:scratch:

0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.05.2014, 00:01
Цитата Сообщение от ValeryS Посмотреть сообщение
alsav22,мы же вроде где то обсуждали это
Не помню... Спросил потому, что в 10-й не нашёл.
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 7
17.05.2014, 00:15  [ТС]
2013 - нету..:
Миниатюры
Стивен Прата Язык программирования C++ лекции и упражнения (6-е издание). Листинг 6.8 - странная штука  
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.05.2014, 00:18
Цитата Сообщение от CPPNoob Посмотреть сообщение
2013 - нету..:
В 8-й есть, потом, наверное, убрали.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,867
17.05.2014, 00:32
а если вручную ключ вбить?
/J вкладка "командная строка"
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.05.2014, 00:41
Цитата Сообщение от ValeryS Посмотреть сообщение
а если вручную ключ вбить?
/J вкладка "командная строка"
Так работает.
0
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 7
17.05.2014, 01:23  [ТС]
угу, в 2013 тоже работает.
В общем разобрались - всем ОГРОМНОЕ СПАСИБО!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2014, 01:23
Помогаю со студенческими работами здесь

Нужны готовые упражнения по учебнику: Стивен Прата
Нужны готовые упражнения по учебнику: Стивен Прата (СИ)

Ищу книгу "Язык программирования C. Лекции и упражнения."
Здравствуйте. Ищу книгу Стивена Прата &quot;Язык программирования C. Лекции и упражнения.&quot; издательства &quot;Вильямс&quot;. Скачать,...

задание из книги стивен прата 6 издание глючит. в чем может быть ошибка
собрал задачу, ставлю текстовый файл внутри программы, с цифровыми данными, а он не работает. файл сам рабочий, так как другая программа...

книга стивен прата как справиться с задачей стр 342 листинг 7.12
стивен прата 6 издание. стр 343 листинг 7.12 strctfun переписал код, код полностью работает и проблем в этом нет, но при вводе данных по...

стивен прата стр 433 листинг 9.1 а также 9.2 и 9.3 ошибка при компоновке файлов
компилятор visual studio 2013 в книге написано что не надо включать #include. я так и не понял почему не надо, если здесь он защищен. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru