Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613

Не работает пример из книги Лафоре

14.03.2017, 23:07. Показов 1259. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Взялся решать задачу из книги Лафоре, глава 9, упр. 2. Опробовал уже готовое решение из самой книги- не работает.
В чём может быть проблема?
Создали класс String.
Создадим класс Pstring, производный от класса String, в котором предотвратим возможность переполнения буфера при определении слишком длинной строковой константы. Новый конструктор производного класса будет копировать в str только SZ-1 символов, если строка окажется слиш- ком длинной, и будет копировать строку полностью, если она будет иметь длину меньшую, чем SZ. Напишите функцию main() программы для проверки ее работы со строками разной длины.

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
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <string>                //for strcpy(), etc.
using namespace std;
////////////////////////////////////////////////////////////////
class String                      //base class
{
protected:                     //Note: can't be private
    enum { SZ = 20 };           //size of all String objects
    char str[SZ];               //holds a C-string
public:
    String()                    //constructor 0, no args
    {
        str[0] = '\0';
    }
    String(char s[])          //constructor 1, one arg
    {
        strcpy_s(str, s);
    }      //  convert string to String
    void display() const        //display the String
    {
        cout << str;
    }
    operator char*()            //conversion function
    {
        return str;
    }          //convert String to C-string
};
////////////////////////////////////////////////////////////////
class Pstring : public String     //derived class 
{
public:
    Pstring(char s[]);        //constructor
    void display()
    {
        String::display();
    }
};
//--------------------------------------------------------------
Pstring::Pstring(char s[])      //constructor for Pstring
{
    if (strlen(s) > SZ - 1)           //if too long,
    {
        for (int j = 0; j < SZ - 1; j++)   //copy the first SZ-1
        {
            str[j] = s[j];           //characters "by hand"
            str[j] = '\0';
        }              //add the null character
    }
    else                           //not too long,
        String(s);                  //so construct normally
    
}
////////////////////////////////////////////////////////////////
int main()
{                                        //define String
    Pstring s1 = "This is a very long string which is probably "
        "no, certainly--going to exceed the limit set by SZ.";
    cout << "\ns1="; s1.display();           //display String
 
    Pstring s2 = "This is a short string.";  //define String
    cout << "\ns2="; s2.display();           //display String
    cout << endl;
    system("pause");
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2017, 23:07
Ответы с готовыми решениями:

Пример из книги Лафоре
Здравствуйте! Не могли бы подсказать, по какой причине в листинге ниже переменные должны быть обязательно быть изначально изначально с...

Пример из книги Лафоре
В третьей главе книги Лафоре по с++ есть пример использующий функцию getche(): #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Пример из книги Лафоре. Подсчитать количество слов и символов в строке
#include &lt;iostream&gt; #include &lt;conio.h&gt; // для getche() using namespace std; int main() { setlocale(LC_ALL, &quot;Rus&quot;); int...

9
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
14.03.2017, 23:41
А что не работает?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
14.03.2017, 23:51
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
C++
1
2
3
4
5
for (int j = 0; j < SZ - 1; j++)   //copy the first SZ-1
        {
            str[j] = s[j];           //characters "by hand"
            str[j] = '\0';
        }              //add the null character
И что в результате? Забил всё нолями?
1
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613
15.03.2017, 21:15  [ТС]
Да. Ошибка в этом месте
C++
1
2
3
4
5
for (int j = 0; j < SZ - 1; j++)   //copy the first SZ-1
        {
            str[j] = s[j];           //characters "by hand"
            str[j] = '\0';
        }
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
15.03.2017, 21:18
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Да. Ошибка в этом месте
Понятно, что в этом.
0
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
15.03.2017, 21:53
C++
1
2
3
4
5
int j;
for (j = 0; j < SZ - 1; j++)
    str[j] = s[j];
 
str[j] = '\0';
0
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613
15.03.2017, 22:23  [ТС]
В пятой строке должно быть
C++
1
str[SZ - 1]='\0';
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
15.03.2017, 23:06
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
В пятой строке должно быть
У sk007, в пятой строке, j и равен SZ - 1.
0
 Аватар для Fatmarmelad
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,613
15.03.2017, 23:45  [ТС]
После выходы из цикла компилятор распознаёт переменную j?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.03.2017, 01:27
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
После выходы из цикла компилятор распознаёт переменную j?
В коде sk007, j объявлена выше цикла, поэтому и распознаёт.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2017, 01:27
Помогаю со студенческими работами здесь

Пример с книги не работает
первый же пример с книги по вебгл не работает &lt;!DOCTYPE html&gt; &lt;html lang=“en&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot; /&gt; ...

Пример из книги не работает
Книга Радченко М.Г., Хрусталева Е.Ю. 1С Предприятие 8.2. Практическое пособие разработчика (2009) &quot;Автоматическая подстановка цены в...

Не работает пример из книги
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using...

Пример из книги не работает (2)
Два раза перепроверил, исправил кое-что, но колонка &quot;Цена&quot; так и не появляется. В чем дело? Пример начинается в книге &quot;Радченко М.Г.,...

Пример из книги не работает.
Пример из книги, тема Классы но смотрю что нет обращения к Task::swap(int i,int j) Думаю ошибка именно в Task::sort(int size). ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru