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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день", "суббота", "воскресенье" http://www.cyberforum.ru/cpp-beginners/thread1127694.html
Добрый день необходимо написать несколько программ, кто может помогите. 1. Написать программу которaя запрашиваeт у пользователя номер дня недели, затем выводит одно из сообщений "рабочий день", "суббота", "воскресенье" или сообщение об ошибке, если введены неверные данные 2. Написать программу которая вычисляет сопротивлениe электричeской цeпи, состоящей из двух сопротивлeний....
C++ Ввести 2 строки и вывести на экран "Можно" если из 1 строки можно составить 2 строку Задание написать 1 строку потом написать 2 и вывести на экран "Можно" если из 1 строки можно составить 2 строку.Например 1 строка (аппа) вторая строка (папа). Проблема у меня в следующем можно использовать только один символ из первой строки. 1 строка (баа) а вторая (бба) так уже нельзя.Помогите исправить! #include "stdafx.h" #include <iostream> #include <iomanip> #include <string.h>... 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
190 / 190 / 48
Регистрация: 27.05.2011
Сообщений: 543
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;
}
 
Текущее время: 07:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru