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

Создать класс строку в С++. Переопределение операторов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ График на основе данных с++ http://www.cyberforum.ru/cpp-beginners/thread1077819.html
Вечер добрый. Днем, была проблема с прогой. Сейчас проблема с графиком. Сдал преподу прогу, засчитал. Но теперь, требует построить график по данным. Отправил ему графики (сделанные в документе 6я страница исходя из полученных данных) В ответ получил следующее. Я вроде бы понял, что от меня хотят, но не понимаю, как это реализовать. Если взять массив 5000, то не получается (судя по моему...
C++ Деление числа на разряды Написать программу, выводящую на экран разряды введенного числа и их сумму. То есть, если пользователь ввел число 3746, программа выдаст следующее: 6 4 7 3 Сумма чисел : 20; http://www.cyberforum.ru/cpp-beginners/thread1077816.html
12. Найти остаток от деления целой части выражения sin(a+b)0.5c на 4 и вывести на экран сообщение о величине остатка. Если остаток равен 0, то значени C++
Найти остаток от деления целой части выражения sin(a+b)0.5c на 4 и вывести на экран сообщение о величине остатка. Если остаток равен 0, то значение выражения заменить на его целую часть. Если остаток равен 1, значение выражения заменить на его дробную часть. В остальных случаях оставить без изменения.
C++ Функция WordLength(s,n)
Функция WordLength(s,n) Назначение: определение длины слова с номером n в строке s.
C++ Умножение вектора на матрицу http://www.cyberforum.ru/cpp-beginners/thread1077808.html
Помогите пожалуйста решить задачу, не знаю как умножить вектор на матрицу. Заданы векторы A,B,C по 5 элементов каждый и матрица D размерностью 5X5. Определить максимальный элемент в каждом из векторов X,Y,Z где вектор X-произведение матрицы D на вектор A; вектор Y-произведение матрицы D на вектор B;вектор z-произведение матрицы D на вектор C. Вот сами матрицы: a={0.1,0.5,0.8,2.5,3.3;}...
C++ Подключение к main.cpp заголовочных файлов с классами Есть следующий код: #include <iostream> #include <string> #include <fstream> #include <conio.h> #include "student.h" using namespace std; class Student { подробнее

Показать сообщение отдельно
cjlobapb
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 3
21.01.2014, 22:13     Создать класс строку в С++. Переопределение операторов
Доброго времени суток. Подскажите пожалуйста в чём ошибка в операторе >>. Когда его вызываю в основной программе, то почему-то компилятор не хочет знать то, что я пишу.

Задание: определить класс-строку. В класс включать два конструктора: для определения класса-строки строкой символов и путем копирования другой строки (объекта класса строки). Определить операции над строками:
1) >> - перевёртывание строки (запись символов в обратном порядке);
2) -- - нахождение наименьшего слова в строке.

Вот код:

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
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <locale>
 
using namespace std;
 
class stroka
{public: char *ba, *a,*mins1,*mins2;
int i,k,min1,min2;
 
int size;
stroka()
{size=21;
    a = new char[size];
    strcpy(a, "default min slovo min");
}
stroka(char *va, int vi)
{
    a = new char[vi];
    a=va;
    size=vi;
}
~stroka(){}
void print()
{for(i=0;i<size;i++)
    printf("%c",a[i]);
printf("\n");
}
void print1(int p,int min2)
{
    int j;
for (j=p-min2;j<p;j++)
{
    printf("%c",ba[j]);}
printf("\n");
}
 
stroka& operator--()
{
ba = new char[size];
min1=0;
min2=255;
int p=0;
int j=0;
ba=a;
for (i=0;i<=size;i++)
{
 
if (((a[i]>='a')&&(a[i]<='z'))||((a[i]>='A')&&(a[i]<='Z')))
{
min1++;
j=i;
}
 
else if((min1<min2)&&(min1>0))  {min2=min1;min1=0;p=j;}
        else {min1=0;}
}
p++;
print1(p,min2);
return *this;
}
 
 
stroka&operator>>(stroka&slovo)
{   char k;
    for(int i=0;i<size;i++)
    {   k=a[i];
        a[i]=a[size-i+1];
        a[size]=k;
    }
    print();
    return*this;
}
};
void main()
{
    setlocale(0,"rus");
    char *b;
    b=new char[255];
FILE *f;
f=fopen("input.txt","r");
int i=0;
while(!feof(f))
    {
      b[i]=getc(f);
      i++;  
    };
    fclose(f);
char *c;
i--;
if (i==0)
{ stroka a;
printf("Файл пустой, вызывается конструктор по умолчанию\n");
printf("Текст: ");
a.print();
printf("Наименьшее слово: ");
--a;
a.print();
}
else 
{
c=new char[i];
for(int j=0;j<i;j++)
c[j]=b[j];
stroka a(c,i);
printf("Исходный текст: ");
a.print();
printf("Минимальное слово: ");
--a;
printf("наоборот\n");
a>>;
 
}
system("pause");
}

Вопрос вот в чём: если правильно, то как вызывать оператор >>.
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru