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

Класс String - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Прирывание процесса нажатием на кнопку на c# http://www.cyberforum.ru/cpp-beginners/thread711682.html
Есть форма с 2-мя кнопками. 1-я кнопка - запуск абстрактного процесса, а 2-я его прирывание. После запуска на выполнение кнопка "Стоп" не доступна. Как сделать так, что бы 2-я кнопка была доступна для нажатия одновременно с 1-й(для своевременного прирывания процесса), а не поставлена в очередь на выполнение после 1-й (иначе форма просто виснет до выполнения поставленной задачи) ?
C++ БЕЗ использования библиотечных функций Помогите написать программу... Написать программу, которая (без использования библиотечных функций для обработки строк), копировала бы строчку введенную пользователем с клавиатуры в новую (максимальная длина строки - 80 символов). При этом в процессе копирования должны отбрасываться все незначительные пробелы в начале и конце строки, а также несколько подряд идущих пробелов должны заменяться на... http://www.cyberforum.ru/cpp-beginners/thread711679.html
C++ Массив и указатели. Вывести на экран весь массив и на отдельной строке - значение минимального элемента массива
Нужна помощь, не знаю как сделать это задание. Написать программу, которая создает массив из 10 случайных целых чисел из отрезка . Вывести на экран весь массив и на отдельной строке - значение минимального элемента массива. Для обхода массива использовать указатели (запрещено обращаться к элементам массива по индексам).
C++ функция _atold()
Здравствуйте! Такая проблема. Не могу понять как работает функция _atold(), в задании указано что необходимо её использовать, однако она не работает. Компилятор её идентифицирует. Еще хочу отметить, что задача идет в учебнике до темы "указатели", следовательно решить её необходимо не используя оные. Задание не суть, суть в том, что значение массива char необходимо перевести в long double, что...
C++ Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. http://www.cyberforum.ru/cpp-beginners/thread711668.html
Нужно с помощью показателей большее, меньше, и среднее арифметическое двух чисел, которые генерируются компьютером. Буду очень благодарен за помощь.
C++ freeglut, MinGW Не получается мне в IDE работать. Прочитал несколько туториалов, не помогло Сделал, все, как тут указано. Скачал freeglut-2.8.0 для MinGW, закинул либы, инклюды, дллки, последние даже в C:\Windows и C:\SysWow64 пихнул. при компиляции даю папку со своим установленным mingw. Сборка проекта - fail. ||=== Test2, Debug ===| ld.exe||cannot find -lfreeglut| ||=== Build finished: 1 errors, 0... подробнее

Показать сообщение отдельно
owned
2 / 2 / 0
Регистрация: 25.11.2012
Сообщений: 76
28.11.2012, 05:27  [ТС]     Класс String
Croessmah, а почему так получается? я например ввёл 10. в цикле I - 1 - а значит будет 9 итераций и элементы массива с 0 до 8 проинициализируются 'A' (проинициализируется 9 элементов). потом STR[I] = '\0'; в последнюю ячейку записываем '\0'. Я немного запутался, как это сделать другим способом? или что тут поменять, чтобы работало на 5+ ? заранее спасибо, просто целый день учёба.. и сейчас мозги не фурычат

Добавлено через 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
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
/*Разработать класс String, который в дальнейшем будет использоваться для работы со строками.
Класс должен содержать: 
* конструктор по умолчанию, позволяющий создать строку длиной 80 символов; 
* конструктор, позволяющий создавать строку произвольного размера; 
* конструктор, который создаёт строку и инициализирует её строкой, полученной от пользователя. 
класс должен содержать методы для ввода строк с клавиатуры и вывода строк на экран.*/
 
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include <windows.h>
using namespace std;
 
HANDLE H = GetStdHandle(STD_OUTPUT_HANDLE);
 
class String
{
private:
    char * STR;
public:
    String()
    {
        STR = new char [80]; 
    }
    String(int I)
    {
        if(I < 2){I = 10;}
        STR = new char[I];
        cout<<"Успешно выделена память под массив из "<<I<<" элементов!\n\n";
        for(int i = 0; i < I - 1; i++)
        {
            STR[i] = 'A';
        }
        STR[I-1] = '\0';
    }
    String(int csize, char * s)
    {
        STR = new char[csize];
        strcpy(STR, s);
        OemToAnsi(STR,STR);
    }
    void Show()
    {
        cout<<"Строка: "<<STR<<endl<<endl;
    }
    void Input()
    {
        strcpy(STR, "\0");
        cout<<"Введите строку: ";
        gets(STR);
        system("cls");
        OemToAnsi(STR,STR);
    }
    ~String()
    {
        if(STR)
        {
            cout<<"Деструктор успешно отработал!\n\n";
            cout<<"Массив символов: \""<<STR<<"\" успешно удалён!\n\n";
            delete [] STR;
        }
    }
};
 
void Stand(int x, int y, int key, char*str)
{
    CONSOLE_CURSOR_INFO ci; ci.bVisible=0; ci.dwSize=100; SetConsoleCursorInfo(H,&ci);
    COORD c;
    c.X = x; c.Y = y;
    SetConsoleCursorPosition(H,c);
    SetConsoleTextAttribute(H,key);
    cout<<str<<"\n";
}
 
int main()
{
    system("mode con cols=30 lines=10");
    system("title String");
    setlocale(LC_ALL,"RUS");
 
    String s;
 
    Stand(5,1,10,"FAQ о задании \"String\"");
    Stand(5,3,2,"Произвольная строка");
    Stand(5,5,2,"Создать строку");
    Stand(5,7,2,"Выход");
 
    int key; 
    int punkt = 1;
 
    while(1)
    {
        key = getch();
        if(key == 80)
        {
            if(punkt < 4)
            {
                punkt++;
                if(punkt == 2)
                {
                    Stand(5,1,2,"FAQ о задании \"String\"");
                    Stand(5,3,10,"Произвольная строка");
                }
                else if(punkt == 3)
                {
                    Stand(5,3,2,"Произвольная строка");
                    Stand(5,5,10,"Создать строку");
                }
                else if(punkt == 4)
                {
                    Stand(5,5,2,"Создать строку");
                    Stand(5,7,10,"Выход");
                }
            }
        }
        else if(key == 72)
        {
            if(punkt > 1)
            {
                punkt--;
                if(punkt == 3)
                {
                    Stand(5,5,10,"Создать строку");
                    Stand(5,7,2,"Выход");
                }
                else if(punkt == 2)
                {
                    Stand(5,3,10,"Произвольная строка");
                    Stand(5,5,2,"Создать строку");
                }
                else if(punkt == 1)
                {
                    Stand(5,1,10,"FAQ о задании \"String\"");
                    Stand(5,3,2,"Произвольная строка");
                }
            }
        }
        else if(key == 13)
        {
            system("cls");
            SetConsoleTextAttribute(H,15);
            if(punkt == 1)
            {
                system("title FAQ о задании \"String\"");
                system("mode con cols=43 lines=23");
                SetConsoleTextAttribute(H,10);
                cout<<"\n  Разработать класс String, который в \n  дальнейшем будет использоваться для \n\t работы со строками.\n\n";
                SetConsoleTextAttribute(H,14);
                cout<<"\tКласс должен содержать:\n\n";
                SetConsoleTextAttribute(H,15);
                cout<<" - конструктор по умолчанию, позволяющий \n   создать строку длиной 80 символов.\n\n"
                    <<"      - конструктор, позволяющий \n  создавать строку произвольного размера.\n\n"
                    <<"  - конструктор, который создаёт строку и \n  инициализирует её строкой, полученной от \t\tпользователя.\n\n"
                    <<"   - методы для ввода строк с клавиатуры \n        и вывода строк на экран.\n\n";
                SetConsoleTextAttribute(H,11);
            }
            else if(punkt == 2) 
            {
                system("title String произв. размера");
                system("mode con cols=55 lines=30");
                int size;
                cout<<"Под какое кол-во элементов выделить память? "
                    <<"                                            Включая \'\\0\'\n";
                cin>>size;
                system("cls");
                String obj(size);
                obj.Show();
            }
            else if(punkt == 3) 
            {
                system("title Создание и инициализация строки");
                system("mode con cols=55 lines=30");
                String A(200, " ");
                A.Input();
                int choise;
                cout<<"Строка успешно записана в массив!\n\n";
                cout<<"Вывести строку на экран?\n\n"
                    <<"1. Да\n"
                    <<"2. Нет, выйти.\n";
                cin>>choise;
                if(choise==1)
                {
                    system("cls");
                    A.Show();
                }
                else if(choise==2){exit(0);}
                else
                {
                    system("cls");
                    cout<<"Ошибочный ввод, до свидания!!!\n\n";
                }
            }
            else if(punkt == 4)
            {
                DWORD size=1024;
                char buf[1024];
                GetUserNameA(buf, &size); 
                SetConsoleTextAttribute(H,11);
                system("mode con cols=30 lines=6");
                SetConsoleTextAttribute(H,14);
                system("title До свидания!");
                cout<<"   До свидания ув. "<<buf<<endl<<endl<<"   ";
                SetConsoleTextAttribute(H,11);
            }
            else 
            {
                cout<<"До свидания!\n\n";
                getch();
            }
            exit(0);
        }
    }
}
Добавлено через 21 секунду
Croessmah, спасибо
 
Текущее время: 01:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru