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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Юлия611
0 / 0 / 0
Регистрация: 10.05.2011
Сообщений: 13
#1

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

02.01.2014, 20:26. Просмотров 555. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2014, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с динамическими строками (C++):

Написать программу работу с динамическими строками - C++
Написать программу работу с динамическими строками. Строка является объектом класса. Память под объект-строку должна выделяться динамически...

Выделение и очищение памяти при работе с динамическими строками - C++
Всем Доброго времени суток! Пожалуйста укажите на ошибку! #ifndef RECEIPT_H #define RECEIPT_H #include &lt;iostream&gt; using...

работа с динамическими массивами - C++
Всё что нужно, это рассчитать размерность массива через функцию, но в main я получаю, а если передаю массив в функцию то получаю 1, как...

Работа с динамическими массивами - C++
Помогите пожалуйста с программой,это должна быть одна программа.. 1)Как написать процедуру для заполнение двумерного массива случайными...

Работа с динамическими массивами - C++
Здравствуйте. Помогите, пожалуйста, написать программу 1. Использующую потоки cout и cin для ввода/вывода. Программа должна использовать...

Работа с динамическими массивами - C++
Добрый день! Написал программу на си, которая рисует окружность в псевдографике: // Clocks.cpp : Defines the entry point for the...

2
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.01.2014, 21:13 #2
Цитата Сообщение от Юлия611 Посмотреть сообщение
Компиляция проходит без ошибок, однако после ввода строки возникает ошибка: The variable 'i' is being used without being defined в строке str[i]='\0'; в void String::set(). Помогите, пожалуйста, устранить ее.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void String::set()
{
     cout << "Vvedite stroku: ";
     char *stroka = new char [MAX];
     //stroka[0] = '\0';
     cin.getline(stroka, MAX);
     unsigned int i = 0;
     for( ; i < strlen(stroka); i++)
     {
        str[i] = stroka[i];
     }
     str[i] = '\0';
     delete []stroka;
}
1
Юлия611
0 / 0 / 0
Регистрация: 10.05.2011
Сообщений: 13
02.01.2014, 21:17  [ТС] #3
благодарю
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2014, 21:17
Привет! Вот еще темы с ответами:

Работа с динамическими массивами - C++
Ошибка чтения данных возникает при работе с динамическими массивами: int *mask= new int ; long double **A= new long ...

Работа с динамическими структурами данных - C++
Реализовать алгоритм работы с динамической структурой данных – однонаправленный список: элементы добавляются, просматриваются и удаляются с...

Работа с динамическими структурами данных - C++
Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, специальности. Предусмотреть...

Работа с динамическими структурами данных - C++
В одномерном динамическом массиве, состоящем из n вещественных чисел вычислить номер максимального по модулю элемента массива.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru