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

Класс строка. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день", "суббота", "воскресенье" http://www.cyberforum.ru/cpp-beginners/thread1127694.html
Добрый день необходимо написать несколько программ, кто может помогите. 1. Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день",...
C++ Ввести 2 строки и вывести на экран "Можно" если из 1 строки можно составить 2 строку Задание написать 1 строку потом написать 2 и вывести на экран "Можно" если из 1 строки можно составить 2 строку.Например 1 строка (аппа) вторая строка (папа). Проблема у меня в следующем можно... http://www.cyberforum.ru/cpp-beginners/thread1127688.html
C++ Написать программу, которая считывает английский текст из файла и выводит на экран слова текста
Написать программу, которая считывает английский текст из файла и выводит на экран слова текста, начинающиеся и заканчивающиеся на гласные буквы.
Написать программу, которая создает 2 файла с массивом А [n] и B [m], и создает третий массив C++
Написать программу, которая создает 2 файла с массивом А и B , и создает третий массив, по условию что элементы массивов A и B, которые не являются общими для них, записывает его в третий файл
C++ Создать программу которая второй отрицательный элемент заменит минимальным http://www.cyberforum.ru/cpp-beginners/thread1127664.html
Создать программу которая второй отрицательный элемент заменит минимальным, оформив каждый пункт задания в виде шаблона функции. Все необходимые данные для функций должны передаваться им в качестве...
C++ Вычислить площадь многоугольника вершины которого заданы координатами. Исправить ошибки в программе #include "stdafx.h" #include "stdio.h" #include <iostream> using namespace std; int main() { int a ;{ for (int i=0;i<10;i++) for (int j=1;j<2;j++) подробнее

Показать сообщение отдельно
mymedia
193 / 193 / 48
Регистрация: 27.05.2011
Сообщений: 544
23.03.2014, 21:29
Ну, вот как-то так
my_str.h
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
#ifndef MY_STR_H
#define MY_STR_H
 
namespace my
{
 
class string
{
    char* first;
    unsigned int lendth;
public:
    string() : first(0), lendth(0) {  }
    string(const char* s) : first(0) { init(s); }
    ~string();
    void init(const char*);
    void print() const;
    void upper();
    void lower();
    void swap();
    char* seek(char ch) const;
};  // class string
 
}   // namespace my
 
#endif
main.cpp
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
#include <iostream>
#include <string>
#include "my_str.h"
int main()
{
    using namespace std;
    cout << "Строки v1.0\n"
        "Справка: 1 - инициализация, 2 - вывод, 3 - в верхний регистр, 4 - в нижний регистр\n"
        "5 - обмен первого и последнего символа, 6 - поиск символа, 0 - выход\n" << endl;
    my::string main_string;
    char ch;
    
menu:
    cout << ">";
    ch = 0;
    cin.get(ch);
    if(ch == '1') 
    {
        string str;
        cin >> str;
        main_string.init(str.c_str());
    }
    else if(ch == '2')
    {
        main_string.print();
        cout << endl;
    }
    else if(ch == '3') main_string.upper();
    else if(ch == '4') main_string.lower();
    else if(ch == '5') main_string.swap();
    else if(ch == '6')
    {
        cin.get(ch);
        cout << *main_string.seek(ch) << endl;
    }
    else if(ch == '0') return 0;
    goto menu;
    return 1;
}
my_str.cpp
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
#include <iostream>
#include "my_str.h"
my::string::~string()
{
    if(first) delete[] first;
}
void my::string::init(const char* s)
{
    unsigned int i = 0;
    {
        const char* p = s;
        while(*p++) i++;
        this->~string();
        first = new char[i];
        lendth = i;
    }
    i = 0;
    while(*s) first[i++] = *s++;
}
void my::string::print() const
{
    for(unsigned int i = 0; i < lendth; i++) std::cout << first[i];
}
void my::string::upper()
{
    for(unsigned int i = 0; i < lendth; i++)
    switch(first[i])
    {
        case 'a': first[i] = 'A'; break;    case 'b': first[i] = 'B'; break;
        case 'c': first[i] = 'C'; break;    case 'd': first[i] = 'D'; break;
        case 'e': first[i] = 'E'; break;    case 'f': first[i] = 'F'; break;
        case 'g': first[i] = 'G'; break;    case 'i': first[i] = 'I'; break;
        // …
    }
}
void my::string::lower()
{
    for(unsigned int i = 0; i < lendth; i++)
    switch(first[i])
    {
        case 'A': first[i] = 'a'; break;    case 'B': first[i] = 'b'; break;
        case 'C': first[i] = 'c'; break;    case 'D': first[i] = 'd'; break;
        case 'E': first[i] = 'e'; break;    case 'F': first[i] = 'f'; break;
        case 'G': first[i] = 'g'; break;    case 'I': first[i] = 'i'; break;
        // …
    }
}
void my::string::swap()
{
    if(lendth <= 0) return;
    char t = first[lendth-1];
    first[lendth-1] = first[0];
    first[0] = t;
}
char* my::string::seek(char ch) const
{
    for(unsigned int i = 0; i < lendth; i++)
    if(first[i] == ch) return first+i;
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.