|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.12.2007, 19:38 | #1 |
Пользователь
Регистрация: 10.12.2007
Сообщений: 28
|
Разработка собственного класса
1. Разработать класс для представления объекта строка.
2. Определить конструктор с одним параметром целого типа – длина строки, который можно использовать как конструктор умолчания. 3. Определить конструктор, который копирует в новую строку n первых символов другой строки и который можно использовать как конструктор копирования 4. деструктор. 5. Определить преобразования из вещественного числа в строку, представляющую это число, и из строки в вещественное число. Ниж хелп, моя больше не может... *dead* пысы: язык С++ Последний раз редактировалось 1ntro; 10.12.2007 в 19:54. |
11.12.2007, 23:09 | #2 |
Регистрация: 11.12.2007
Сообщений: 4
|
#include <string.h>
#include <iostream.h> #include <conio.h> class string // Объявление строкового класса { private: char* S; // Строка int len; // Длина строки public: string(); // Конструктор по умолчанию string(char* s); // Перегруженный конструктор string(const string& s); // Конструктор копирования ~string() { delete [] S; } // Деструктор void Sort(string s[], int n); // Функция сортировки void Print() { cout << S << endl; } // Распечатка void GetStr() { char a[256]; cin.getline(a, 256); S = new char[strlen(a) + 1]; strcpy(S, a); } // Запрос строки у пользователя }; string::string() { S = new char[81]; // Выделение памяти под 81 элемент // строки для объекта по умолчанию for(int i = 0; i < 81; i++) S[i] = 0; len = 80; } string::string(char* s) { len = strlen(s); S = new char[len + 1]; strcpy(S, s); // Инициализация строкой, переданной // пользователем } string::string(const string& s) { len = s.len; S = new char[len + 1]; // Безопасное копирование strcpy(S, s.S); } void string::Sort(string s[], int n) { // Сортировка строк bool flag = true; string temp; for(int j = 1; ; j++) { for(int i = 0; i < n - j; i++) if(strcmp(s[i].S, s[i + 1].S) > 0) { temp.len = s[i].len; // Вычисление длины строки delete [] temp.S; // Удаление строки temp.S = new char[temp.len + 1];// Выделение памяти strcpy(temp.S, s[i].S); // Копирование строки s[i].len = s[i + 1].len; delete [] s[i].S; s[i].S = new char[s[i].len + 1]; strcpy(s[i].S, s[i + 1].S); s[i + 1].len = temp.len; delete [] s[i + 1].S; s[i + 1].S = new char[s[i + 1].len + 1]; strcpy(s[i + 1].S, temp.S); flag = false; } if(flag) break; flag = true; } } void main() { int n; cout << "Input the number of strings:\t"; cin >> n; // Вводим количество строк if(n < 0) { cout << "Error number:\t" << n << endl; return; } char c[2]; // Забираем из потока символ Enter ("\n") cin.getline(c, 2); string *s = new string[n]; // Создаем массив из n строк for(int i = 0; i < n; i++) s[i].GetStr(); // Ввод строк s->Sort(s, n); // Сортировка строк for(i = 0; i < n; i++) s[i].Print(); // Вывод отсортированных строк cout << endl; getch(); // Ожидание нажатия клавиши delete [] s; // Удаление массива } |
11.12.2007, 23:27 | #3 |
Пользователь
Регистрация: 10.12.2007
Сообщений: 28
|
ОГРОМНОЕ СПАСИБО!
|
16.12.2007, 14:54 | #4 | |
Пользователь
Регистрация: 10.12.2007
Сообщений: 28
|
Таа, в общем попробовал, но почему то при преобразовании в дабл вечно выходит ноль х-Х
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменить дату собственного файла | ERASERROR | Общие вопросы Delphi | 1 | 24.02.2008 14:11 |
Установка собственного курсора | Amateur | Общие вопросы Delphi | 4 | 13.11.2007 05:42 |
Создание собственного компонента | Леха207 | Помощь студентам | 1 | 03.07.2007 12:45 |
Создания Класса | Mickle | Общие вопросы Delphi | 1 | 30.04.2007 00:44 |
Советы по созданию собственного сайта с нуля, хостинг, дизайн, языки программирования | Hallo | Обсуждение статей | 0 | 12.12.2006 21:40 |