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

Работа с динамическими строками - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Упорядочить столбцы матрицы по возрастанию количества одинаковых элементов в каждом столбце http://www.cyberforum.ru/cpp-beginners/thread1061951.html
Дана целочисленная прямоугольная матрица. Упорядочить столбцы матрицы по возрастанию количества одинаковых элементов в каждом столбце. Что я могу сделать, так это матрицу заполняющуюся с...
C++ Что такое глобальные и локальные объекты класса? Что такое глобальние и локальные обекты класа. Напишыте пожалуста с примерами. http://www.cyberforum.ru/cpp-beginners/thread1061906.html
Изменение значение аргумента в void-функции C++
Здраствуйте. У меня к вам будет такой вопрос: void read(Tbig a){ .... .... } В процедуре например там мы что-то делаем... Но когда вызвать эту процедуру в основной программе, параметры которые...
C++ Найти номер минимального элемента массива
составить алгоритм и консольную программу для данной задачи: 1) найти номер минимального элемента массива 2) найти сумму элементов массива,расположенных между первым и вторым отрицательными...
C++ Сложение массивов разной длины. Неверный результат http://www.cyberforum.ru/cpp-beginners/thread1061870.html
При сложение двух массивов выходит значение -858993455 это всё из за того что разная длина массива как можно решить проблему? что бы место неопределнного элемента был ноль + значения массива или что...
C++ Комопзиция объектов/иерархия классов в общем нигде не могу найти внятного объяснения в виде кода, все очень поверхностно везде написано.Может кто знает место где есть хороший код где используются объекты другого класса.Ну или... подробнее

Показать сообщение отдельно
Юлия611
0 / 0 / 0
Регистрация: 10.05.2011
Сообщений: 12

Работа с динамическими строками - C++

02.01.2014, 20:26. Просмотров 533. Ответов 2
Метки (Все метки)

Все здравствуйте. Есть вот такое задание к нему программа. Среда разработки - VS 2005. Компиляция проходит без ошибок, однако после ввода строки возникает ошибка: The variable 'i' is being used without being defined в строке str[i]='\0'; в void String::set(). Помогите, пожалуйста, устранить ее. Заранее благодарю

Задание. Пользовательский класс String должен содержать необходимые элементы-данные, которые создаются в динамической области памяти.
Конструктор для создания строк: String (…);
Деструктор: ~String();
Метод ввода исходной строки: Set();
Метод печати: void print(…);
Код методов – вне пространства определения класса. Программа иллюстрирует прямой и косвенный способы обращения к методам.
Ввести с клавиатуры строку символов S1. Признак окончания ввода строки – нажатие клавиши «Ввод». Программа должна содержать перегруженную операцию «=», использование которой скопирует S1 в S2 .
Исходную и преобразованную строки вывести в файл. В программе необходимо использовать стоковые и файловые потоки.

Вариант задания: Если длина L=10, то удаляются все A..Z.
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include "stdafx.h" 
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <istream>
#include <fstream>
#include <conio.h>
using namespace std;
 
///////////////////////////////////////
const int MAX=255;
 
class String
{
    private:
        char *str;
        char *strend;
    public:
        String();
        void set();//metod vvoda ish. stroki
        void print();//metod pechati
        void run();//metod vipolneniya zadachi 
        void printend();//metod pechati strend
        String& operator= (String&);
        ~String();
};
//-------------------------------------
    String::String()
        {
            str = new char [MAX];
            str[0]='\0';
            strend = new char [MAX];
            strend[0]='\0';
            //cout << "Constructor!";
        }
//-------------------------------------
    String& String::operator= (String&ss)//s2=s1
        {
            strcpy(strend, ss.str);
            return *this;
        }
//-------------------------------------
    String::~String()
        {
            delete []str;
            delete []strend;
            //cout << "Destructor!";
        }
//-------------------------------------
    void String::run() 
    {
        unsigned int i=0, j=0;
        char *ss;
        ss = new char [MAX];
        ss[0]='\0';
 
        if(strlen(str)==10) 
        {       
            for(i=0;i<10;i++)
            {
                if ( (str[i]<'A') || (str[i]>'Z') )
                {
                    ss[j]=str[i];
                    j++;
                }
            }
 
            ss[j]='\0';
            str[0]='\0';
            
            strcpy(str,ss);
 
            
            cout << "\nStroka bez "A"..."Z": ";
        }
        else 
        {
            cout << "\nStroka s "A"..."Z": ";
        }
    }
//-------------------------------------
    void String::set()
    {
        int i;
        cout << "Vvedite stroku: ";
        char *stroka = new char [MAX];
        stroka[0]='\0';
        cin.getline(stroka,MAX);
        for(unsigned int i=0;i<strlen(stroka);i++)
        {
            str[i] = stroka[i];
        }
        str[i]='\0';
        delete []stroka;
    }
//-------------------------------------
    void String::print()
    {
        ofstream file("file.txt", ios::app);
        for (unsigned int i=0; i<strlen(str); i++) 
        {
             cout << str[i];
        }
 
 
        file << endl;
        for (int i=0; i<strlen(str); i++) 
        {
             file << str[i];
        }
    }
//-------------------------------------
    void String::printend()
    {
        cout << "\nSkopirovannaya stroka: ";
 
        for (unsigned int i=0; i<strlen(strend); i++) 
        {
             cout << strend[i];
        }
    }
//////////////////////////////////////////////
void main(void)
{
    ofstream file("file.txt", ios::out);
 
    String s1,s2;
 
    s1.set();
    s1.print();
    s1.run();
    s1.print();
 
    s2=s1;
 
    s2.printend();
 
    cout << "\n" << endl;
 
    String *s3,*s4;
    s3=new String; s4=new String;
    s3->set();
    s3->print();
    s3->run();
    s3->print();
 
    *s4=*s3;
 
    s4->printend();
 
    cout << "\n" << endl;
 
    getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru