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

Пример из книги Лафоре - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
zabuka
 Аватар для zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
22.01.2011, 18:41     Пример из книги Лафоре #1
В третьей главе книги Лафоре по с++ есть пример использующий функцию getche():
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
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int chcount = 0, wdcount = 1;
    char ch = 'a';
    cout << "Insert string: ";
    while(ch != '\r')
    {
        ch = getche();
        if(ch == ' ')
        {
            wdcount++;
        }
        else
        {
            chcount++;
        }
    }
    cout << "Number of words: " << wdcount << endl;
    cout << "Number of letter: " << (chcount -1) << endl;
    return 0;
}
Результат выполнения программы следующий:
- Исходные данные: http://s006.***********/i215/1101/2f/9540150ac8da.png
- Результат: http://s51.***********/i132/1101/1b/2c7fec430e54.png
В чем проблема? Подскажите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2011, 18:41     Пример из книги Лафоре
Посмотрите здесь:

Листинг из книги Лафоре C++
C++ Пример из книги Лафоре
Непонятен пример из Лафоре C++
Упражнение из книги Лафоре C++
C++ Лафоре Не компилируется пример
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
22.01.2011, 19:06     Пример из книги Лафоре #2
вы про is? которая идет после 2х?
добавьте просто перенос строки
C++
1
cout << '\n' << "Number of words: " << wdcount << endl;
или сделайте очистку экрана ..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    while(ch != '\r')
    {
        ch = getche();
        if(ch == ' ')
        {
            wdcount++;
        }
        else
        {
            chcount++;
        }
        if(ch == '\r'){
            system("cls");
        }
    }
zabuka
 Аватар для zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
22.01.2011, 19:23  [ТС]     Пример из книги Лафоре #3
Спасибо за помощь!
zabuka
 Аватар для zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
23.01.2011, 19:53  [ТС]     Пример из книги Лафоре #4
Очередной пример с ошибкой:
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
#include <iostream>
#include <conio.h>                      //для getche()
 
using namespace std;
 
int main()
{
    const unsigned char white = 219;    //белый цвет для простых чисел
    const unsigned char gray = 176;     //серый цвет для непростых чисел
    unsigned char ch;
    for(int count = 0; count < 80 *25 -1; count++)
    {
        ch = white;                     //предполагаем, что число простое
        for(int j = 2; j < count; j++)
        {
            if(count %j == 0)           //делим каждое число на j, если остаток от деления равен 0
            {
                ch = gray;
                break;                  //то число не простое
            }
        cout << ch;                     //вывод результата на экран
        }                               //завершение второго цикла for
    }                                   //завершение первого цикла for
    getch();                            //задержка полученного изображения
    return 0;
}
Итогом работы программы является не раскрашивание ячеек, а полностью закрашенный экран с 0 по 1998. Хотя по примеру все верно... В чем может быть ошибка?
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
23.01.2011, 20:27     Пример из книги Лафоре #5
Цитата Сообщение от zabuka Посмотреть сообщение
Итогом работы программы является не раскрашивание ячеек, а полностью закрашенный экран с 0 по 1998
C++
1
2
for(int count = 0; count < 80 *25 -1; count++)
count < 80 *25 -1;
80*25 = 2000, и от него еще 1 отнимаем. а так же стоит строго "<", значит еще единицу отнимаем. вот и выходит 1998.
вроде так ..
zabuka
 Аватар для zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
23.01.2011, 20:34  [ТС]     Пример из книги Лафоре #6
Цитата Сообщение от NiRamz Посмотреть сообщение
....
вроде так ..
Спасибо! Но вопрос не в этом. В книге описан результат, что ячейки, которые пронумерованы от 0, и в нашем случае, до 1998, будут раскрашены в цвета: ячейки с просты номером (2, 3, 5 и т.д.) - белым цветом, непростые числа - серым. Итогом же работы является полностью закрашенный экран от 0 до 1998.
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
23.01.2011, 21:02     Пример из книги Лафоре #7
хм, так красит в один цвет .. если убрать break; то красить начинает в разные цвета ..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2011, 21:06     Пример из книги Лафоре
Еще ссылки по теме:

C++ Пример из книги Лафоре. Подсчитать количество слов и символов в строке
Задания из книги Р. Лафоре C++
C++ - Задания из книги Р. Лафоре C++

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

Или воспользуйтесь поиском по форуму:
zabuka
 Аватар для zabuka
1 / 1 / 0
Регистрация: 16.12.2010
Сообщений: 38
23.01.2011, 21:06  [ТС]     Пример из книги Лафоре #8
Цитата Сообщение от NiRamz Посмотреть сообщение
хм, так красит в один цвет .. если убрать break; то красить начинает в разные цвета ..
Спасибо большое! Неприятно поражен, что в такой литературе, такое огромное количество ошибок. Помимо тех вопросов, что задаю на форуме, сам много, на своем уровне, нахожу в книге.
Yandex
Объявления
23.01.2011, 21:06     Пример из книги Лафоре
Ответ Создать тему
Опции темы

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