С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Java, C# - Expert
69 / 69 / 12
Регистрация: 09.08.2011
Сообщений: 284
1

Робота с классами и перегрузка функций

06.05.2012, 20:16. Показов 938. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добавить в класс для роботы со строками
o Индикатор что дает возможность обратиться к и-тому символу строки.
o Перегрузку
§ операции унарного + (-): изменяющий строку к строчным (прописным) символов;
§ констант true і false: обращение к экземпляру класса дает значение true, если строка не пустая, а в противном случае false.
§ операции &: возвращает значение true, если строковые поля двоих объектов посимвольно равны (без учета регистра), в противном случае false;
§ Перевод класса-строки в тип string (и на оборот).


Это всё что я смог сделать и то там есть ошибки... Помогите справиться новичку, зарнее спасибо!!!

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
// LabaNumber9.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class ryadoc
{
    public:
        char MyString[101];
        int n,m;
        void input()
        {
            cout << "Enter line: " << endl;
            cin.getline(MyString,100);
        };
        void output()
        {
            cout << MyString;
        };
 
        bool blank(char MyString[101])
        {
            if (strlen(MyString)==0)
            {
                return false;
            }
            else
            {
                return true;
            }
        };
 
        bool theSame(char a[],char b[])
        {
            if (strcmp(a,b))
            {
                return true;
            }
            else
                return false;
        }
 
        string toString(char MyString[])
        {
            string a;
            for (int i=0; i>strlen(MyString); i++)
            {
                a+=MyString[i];
            }
            return a;
        }
};
 
int main()
{
    ryadoc a,b;
    a.input();
    a.output();
    if (a.blank(a.MyString)==true)
    {
        cout << "Line is full - True";
    }
    else
    {
        cout << "Line is full - False";
    }
    b.input();
    if (a.theSame(a.MyString, b.MyString)==true)
    {
        cout << "Lines is same - True";
    }
    else
    {
        cout << "Lines is same - False";
    }
    string news = a.toString(a.MyString);
    cout << "New line \n" + news;
 
    system ("Pause");
    return 0;
}
Как вывести std::string на консоль ???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2012, 20:16
Ответы с готовыми решениями:

Задача на тему робота с классами и объектами в С++
Класс Coins (монеты). Класс сохраняет массив из 3 монет та общее количество лицевых сторон после...

Робота с детьми у блоков с одинаковыми классами
Пример кода (суть вопроса внизу): &lt;div class=&quot;item&quot;&gt; &lt;div class=&quot;subitem&quot;&gt;Some text&lt;div&gt; ...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

Работа с классами и перегрузка операций
Доброго времени суток, форумчане. Есть вот такое задание: Вот с этим самым 3м пунктом и...

6
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
06.05.2012, 20:52 2
1. Зачем методам blank() и toString() принимать аргументы, если посылаешь данные своего же объекта?
2. Преобразовать в string можно проще. (см. метод toString в моём листинге)
3. Немного изменил проверки условий (ИМХО ==true не нужны). В общем, я ничего нового в плане функций не добавлял, только имеющееся поправил:
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
class ryadoc
{
    public:
        char MyString[101];
        int n,m;
        void input()
        {
            cout << "Enter line: " << endl;
            cin.getline(MyString,100);
        }
        void output()
        {
            cout << MyString;
        }
 
        bool blank()
        {
            if (!strlen(MyString))
                return false;
            else
                return true;
        }
 
        bool theSame(char a[],char b[])
        {
            if (strcmp(a,b))
                return true;
            else
                return false;
        }
 
        string toString()
        {
            string a=string(MyString);
            return a;
        }
};
 
int main()
{
    ryadoc a,b;
    a.input();
    a.output();
    if (a.blank())
    {
        cout << " Line is full - True" << endl;
    }
    else
    {
        cout << " Line is full - False" << endl;
    }
    b.input();
    if (a.theSame(a.MyString, b.MyString))
    {
        cout << "Lines is same - True" << endl;
    }
    else
    {
        cout << "Lines is same - False" << endl;
    }
    string news = a.toString();
    cout << "\nNew line:\n"  << news;
 
    //system ("Pause");
    return 0;
}
P.S. если это так принципиально, можно конечно вернуть system("Pause") и conio.h .
1
Java, C# - Expert
69 / 69 / 12
Регистрация: 09.08.2011
Сообщений: 284
06.05.2012, 20:57  [ТС] 3
А так-же я хотел еще спросить как реализовать перевод с std::string в char[] ?

C++
1
2
3
4
5
6
7
8
void toChar(string a,char newChar[])
        {
            int size=strlen(a);
            for (int i=0; i<size; i++)
            {
                newChar[i]=a[i];
            }
        }
думал так, но... меня VisualStudio мягко послала

Помоги-те если кто-то знает как.

Добавлено через 5 минут
Цитата Сообщение от elivin Посмотреть сообщение
string news = a.toString();
* * cout << "\nNew line:\n" *<< news;
Данный вывод все ровно не выводит news, вылетает ошибка бинарного "<<" Error C2679
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
06.05.2012, 21:08 4
Данный вывод все ровно не выводит news, вылетает ошибка бинарного "<<" Error C2679
Странно. Попробуй так выводить:
C++
1
cout << "\nNew line:\n"  << news.c_str();
Метод c_str() в классе string возвращает массив символов. Возможно со студией что-то. У меня geany + g++ - всё нормально робит.

А так-же я хотел еще спросить как реализовать перевод с std::string в char[] ?
Можно так (предположим, что news - объект класса string):
C++
1
2
char str[news.length()];
strcpy(str, news.c_str());
0
Java, C# - Expert
69 / 69 / 12
Регистрация: 09.08.2011
Сообщений: 284
06.05.2012, 21:16  [ТС] 5
C++
1
cout << "\nNew line:\n"  << news.c_str();
Спасибо, это сработало.

Цитата Сообщение от elivin Посмотреть сообщение
Можно так (предположим, что news - объект класса string):

C++
1
2
char str[news.length()];
strcpy(str, news.c_str());
я реализовал уже так:
C++
1
2
3
4
5
6
7
void toChar(string a)
        {
            for (int i=0; i<a.length(); i++)
            {
                MyString[i]=a[i];
            }
        }
но мне надо перед таким переводом очистить MyString, как это сделать ??
0
67 / 67 / 9
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
06.05.2012, 21:23 6
но мне надо перед таким переводом очистить MyString, как это сделать ??
Можно не очищать, а добавить нуль-символ в конце строки, то есть:
C++
1
2
3
for (int i=0; i<a.length(); i++)
    MyString[i]=a[i];
MyString[a.length()]='\0';
1
Java, C# - Expert
69 / 69 / 12
Регистрация: 09.08.2011
Сообщений: 284
06.05.2012, 21:51  [ТС] 7
А ты часом не знаешь как сделать перевод с маленьких буков в большие и наооборот ??
тоесть метод которые с прописных символов строки MyString, делал строчные ??

Пример:

MyString = "ПрИвЕт"

первый метод возвращает:
MyString = "привет"

второй метод возвращает:
MyString = "ПРИВЕТ"

Добавлено через 18 минут
Нашел уже:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void toBig()
        {
            strupr(MyString);
        }
 
        void toLittle()
        {
            for (int i=0; i<strlen(MyString); i++)
            {
                MyString[i]=tolower(MyString[i]);
            }
        }
0
06.05.2012, 21:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2012, 21:51
Помогаю со студенческими работами здесь

Перегрузка функций, шаблоны функций Функция определения объемов: шара по его радиусу
Перегрузка функций, шаблоны функций Функция определения объемов: шара по его радиусу (V=4/3пиR2),...

Перегрузка функций. Реализация функций
Разработать функцию f(x) , которая возвращает младшую цифру натурального числа x . Вычислить с ее...

Перегрузка функций
Здравствуйте ув. программисты не могли бы мне кто нибуть написать простейшие примеры перегрузки +,...

Перегрузка функций
Здравствуйте!!! я не однократно просил помочь на этом форуме...именно с перегрузкой стека!!!...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru