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

Работа с классами. Нужна помощь с функцией - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка оператора - для нахождения целого числа http://www.cyberforum.ru/cpp-beginners/thread371998.html
Необходимо перегрузить операцию вычисления количества дней между датами («дата» – «дата»). помогите дописать саму перегрузку оператора пожалуйста #include<iostream> #include<conio.h> using namespace std; const int days={0,31,28,31,30,31,30,31,31,30,31,30,31}; class Date { int day,month,year;
C++ Динамический список( Realloc, malloc, calloc) Здравствуйте! Надо написать программу которая 1) прочтет с клавиатуры длину поле N, 2)прочтет N чисел типа double а вложит их до поля, 3) найдет максимум а минимум из чисел 4) выпишет позицию и значение максимального элемента. Программу надо написать с помощью указателей на массив и функций realloc, malloc, calloc. Кто бы мог помочь хотя бы с первым пунктом. Заранее благодарен. http://www.cyberforum.ru/cpp-beginners/thread371995.html
C++ : Написать функцию умножения двух чисел, используя только операцию сложения
Привет))помогите пожалуйста решить задачку(на языке С): 1)Написать функцию умножения двух чисел, используя только операцию сложения. :umnik:
C++ Что означает строчка ???
((i+j)%2==0?-1.0:1.0)); Скажите пожалуйста ,что означает эта строчка в С++?
C++ Создать модель файловой системы на основе связанных списков http://www.cyberforum.ru/cpp-beginners/thread371978.html
доброго времени суток, форумчане!!! В сентябре получил задание на курсовой проект по СПО: "Файловая система использующая связанные списки для размещения файлов и связанный список для хранения информации о свободных блоках". Вот особенности задания: Модель должна использовать некий файл в качестве виртуального жёсткого диска с виртуальной файловой структурой, аналогичной файловой структуре...
C++ Записать програму с функцией Которая решает уравнение второго степени.Помогите пожалуйста,так как я даже не знаю с чего начать.Дело в том,что вообще не понимаю эти функции и ретёрны.. Знаю точно,что там должно быть 4 части: 1. input 2. 2 solve 3.output 4. честно говоря,даже не знаю,какая эта часть. Просьба не использовать printf,while или что-то наподобие этого,так как этого не учили ещё:) Спасибо! Добавлено через... подробнее

Показать сообщение отдельно
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
29.10.2011, 19:16     Работа с классами. Нужна помощь с функцией
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#include <iostream>
#include <string>
#include <conio.h>
using namespace std;
 
#define MAX_LEN 256
 
class row {
public:
    row();
    row(char *);
    row(row const&);
 
    void setrow(char *);
    void swap_first_word( row &second_string );
    void rowprint();
 
    ~row();
private:
    char *str;
    int size;
};
 
row::row()
: str(NULL), size( 0 ) {} 
 
row::row(char *firststring)
{   
    if( firststring )
    {
        size = strlen( firststring ) + 1;
        str = new char[ size ];
        strcpy( str, firststring );
    }
    else
    {
        str = NULL;
        size = 0;
    }
}
 
row::row(row const& exsistingObj)
: size( exsistingObj.size )
{
    if( size )
    {
        str = new char [ size ];
        strcpy( str, exsistingObj.str );
    }
    else
    {
        str = NULL;
        size = 0;
    }
 
}
 
 
void row::setrow( char *firststring )
{
    if( str )
        delete [] str;
    size = strlen( firststring ) + 1;
    str = new char [ size ];
    strcpy( str, firststring );
}
 
void row::swap_first_word( row &second_string )
{
    if( size || second_string.size )
    {
        char *new_first_string_ptr = new char[ size + second_string.size ]; // создаем строку для новой версии первой строки
        char *new_second_string_ptr = new char[ size + second_string.size ]; // создаем строку для новой версии второй строки
        char *new_first_ptr = new_first_string_ptr;
        char *new_second_ptr = new_second_string_ptr;
        *new_first_ptr = 0;
        *new_second_ptr = 0;
 
        char *second_ptr = NULL;
        for( second_ptr = second_string.str; *second_ptr == ' ' && *second_ptr != 0; ++second_ptr, ++new_second_ptr )
            *new_second_ptr = *second_ptr;  // копируем все пробелы из первой строки в новую версию первой строки
        char *first_ptr = NULL;
        for( first_ptr = str; *first_ptr == ' ' && *first_ptr != 0; ++first_ptr, ++new_first_ptr )
            *new_first_ptr = *first_ptr; // копируем все пробелы из второй строки в новую версию второй строки
        
        for( ; *second_ptr != ' ' && *second_ptr != 0; ++second_ptr, ++new_first_ptr )
            *new_first_ptr = *second_ptr; // добовляем в новую версию первой строки первое слово второй строки
        for( ; *first_ptr != ' ' && *first_ptr != 0; ++first_ptr, ++new_second_ptr )
            *new_second_ptr = *first_ptr; // добовляем в новую версию второй строки первое слово первой строки
 
        if( second_ptr )
            strcpy( new_first_ptr, first_ptr ); // оставшуюся часть первой строки добовляем в новую версию первой строки
        if( first_ptr )
            strcpy( new_second_ptr, second_ptr ); // оставшуюся часть второй строки добовляем в новую версию второй строки
 
        delete [] str;
        delete [] second_string.str;
 
        if( new_first_string_ptr != 0 ) 
        {
            size = strlen( new_first_string_ptr ) + 1;
            str = new char[ size ];
            strcpy( str, new_first_string_ptr );
        }
        else 
        {
            str = NULL;
            size = 0;
        }
        
        if( new_second_string_ptr != 0 )
        {
            second_string.size = strlen( new_second_string_ptr ) + 1;
            second_string.str = new char[ second_string.size ];
            strcpy( second_string.str, new_second_string_ptr );
        }
        else
        {
            str = NULL;
            size = 0;
        }
 
        delete [] new_first_string_ptr;
        delete [] new_second_string_ptr;
            
    }
}
 
void row::rowprint()
{
     if( str)
        cout<<"  "<<str<<endl;
     else
        cout<<"  String is empty!\n";
}
 
row::~row()
{
     if( size )
        delete [] str;
}
 
int main()
{
    row obj1;
    char bufer [MAX_LEN], *str = "I'm Yura student!";
    row obj2(str);
 
    cout<<"\n\nObject_1. Enter string:\n\n    ";
    cin.getline(bufer, MAX_LEN);
    obj1.setrow(bufer);
 
 
    cout<<"\n\nObject_1 first:\n  ";
    obj1.rowprint();
    cout<<"\n\nObject_2 first:\n  ";
    obj2.rowprint();
 
    obj1.swap_first_word(obj2);
 
    cout<<"\n\nObject_1 after:\n  ";
    obj1.rowprint();
    cout<<"\n\nObject_2 after:\n  ";
    obj2.rowprint();
    _getch();
    return 0;
}
 
Текущее время: 06:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru