Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ итератор или интератор (iterator ог interator) https://www.cyberforum.ru/ cpp-beginners/ thread440109.html
Привет всем Задали мне тут вопрос, а я что-то засомневался правильно ли я его понял: "создать интератор" ? здесь опечатка и все-таки нужен "итератор" или же существуют и неизвестные мне "интераторы"? начал искать и нашел статью где есть фраза: Библиотека стандартных шаблонов Заголовок <iterator> больше не включается автоматически многими другими файлами заголовков.Вместо этого...
C++ как написать программу с копированием одномерных массивов
Даны два массива, в первом найти позицыю первого нулевого элемента массива. Скопировать во второй массив все элементы расположиные после первого нулевого элемента, а затем до найденого первого нулевого элемента
C++ Полимморфизм https://www.cyberforum.ru/ cpp-beginners/ thread440085.html
Возможность обращаться к подклассам через классс, от которого эти подкласы наследуют, - это и все на что способен полиморфизм или же есть нечто более глубокое в этом понятии?
C++ Программа Дайте пожалуйста ссылку на рабочую версию с++. В разделе паскаль были ссылки на скачивание, а тут нету. В гугл и тп не посылать :cry: https://www.cyberforum.ru/ cpp-beginners/ thread440046.html
Именно в каких ситуациях используется "virtual" ? C++
Привет всем. Я знаю, что с помощью virtual происходит полиморфизм. Но кто может показать еффективность ее (virtual) использования? (Если можно маленкий пример) Именно, в каких ситуациях она используется? Спасибо заранее...
C++ Отформатировать вывод программы вобщем вот программа все работает хорошо вот только немогу придумать как если использовать cout сделать одинаковые промежутки между цифрами. #include "stdafx.h" using namespace std; long double x=1, y, i, n; int main() { cout<<" "; for (n=1; n<=10; n++) cout<<" "<<n; https://www.cyberforum.ru/ cpp-beginners/ thread440032.html
C++ Работа с текстовым файлом Нужно программа которая добавляет записи в файл вида: - Структура "Спортивная команда": - название; - город; - количество игроков; - количество очек. https://www.cyberforum.ru/ cpp-beginners/ thread440028.html Что значит буквы по возрастанию? C++
Например товарищ R136a1 сделал программу тут ссылка в этой тебе похожее задание, я немогу его понять. Как понять что буквы каждого слова в строке отсортировать по возрастанию?
C++ Криптоанализ шифротекста, полученного методом простой замены Здравствуйте! Помогите пожалуйста! Я думаю, это в ваших силах. Задание: написать программу для криптоанализа шифротекста. При создании шифротекста использовался алфавит 'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ь', 'ы', 'э', 'ю', 'я', ' '. Символу «а» соответствует индекс 0, а пробелу – индекс 31.... https://www.cyberforum.ru/ cpp-beginners/ thread440002.html C++ Исправить https://www.cyberforum.ru/ cpp-beginners/ thread439999.html
Для первой задачи код #include <iostream> #include <cmath> #include <cstdlib> using namespace std; int main (){ const int N=10;
Элементы массивов с четными номеpами до максимального заменить на заданное значение C++
Даны целые массивы А, B и значения R и F. Каждый массив пpеобpазовать по пpавилу: компоненты с четными номеpами, пpедшествующие наибольшему компоненту массива, заменить на значение R (для массива A) и значение F (для массива B). Считать, что в каждом массиве наибольший компонент единственный.
C++ Условные переходы и циклы https://www.cyberforum.ru/ cpp-beginners/ thread439967.html
Помогите пожалуйста сделать на языке си, а не на с++, пожалуйста) a) Дано двузначное число. Выяснить: Какая из его цифр больше? Одинаковы ли цифры? b) Дана последовательность чисел. Определить сколько раз в ней меняется знак.
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
03.02.2012, 13:03  [ТС] 0

Указатели,массивы символов и динамическая память - C++ - Ответ 2454450

03.02.2012, 13:03. Показов 1051. Ответов 8
Метки (Все метки)

Ответ

Да ksandro Вы правы я я нашёл некоторые не рабочие моменты и исправил . Да и ещё первый клас полностью рабочий я сним своё уже отмучал так что надо смотреть новоиспечённый.
Вот отредактированный код:
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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
#include<iostream>
#include<conio.h>
#include<string>
#include<stdlib.h>
 
/**************************************************************************************************************************************/
 
class metring
{
protected:
    char* ch_pt;//для хранения выражения введённого пользователем
    int imax_fmas;//максимально количество элементов массива fmas
    float* fmas ;//массив вещественных чисел
public:
    //конструктор без параметров
    metring(void);
    //конструктор содним параметром
    metring(char* ch_c);
    //деструктор для освобождение памяти
    virtual~metring(void);
    //операция преобразования из объекта класса в float*
    operator float*(void);
    //возврат количества элементов в вещественном массиве
    int return_imax_fmas(void);
    //получение от пользователя набора чисел 
    void get_number(void);
    //оператор для преобразования из объекта в массив символов
    operator char*(void);
};
 
//конструктор без параметров
metring::metring(void):imax_fmas(1)
{
    setlocale(LC_ALL,"Russian");//разрешаю вывод Русского языка
    ch_pt = new char[2];//первый раз выдиляю память под строку
    ch_pt[0]='\0';//принудительное указаник конца строки
    fmas = new float[imax_fmas];//создаём подходящий по размерам массив для чисел
}
 
//конструктор содним параметром
metring::metring(char* ch_c)
{
    
    setlocale(LC_ALL,"Russian");//разрешаю вывод Русского языка
    ch_pt = new char[2];//первый раз выдиляю память под строку
    ch_pt[0]='\0';//принудительное указаник конца строки
    imax_fmas=1;
    fmas = new float[imax_fmas];//создаём подходящий по размерам массив для чисел  
 
    
    if(strlen(ch_c)>1)
    {delete []ch_pt;}//освобождаю ранее выделенную память т.к. она не достаточна для хранения новой строки 
    ch_pt = new char [strlen(ch_c)+1];
    ch_pt[0]='\0';//принудительное указаник конца строки
    strcpy(ch_pt,ch_c);
    ch_pt[strlen(ch_c)]='\0';//принудительное указаник конца строки
}
//деструктор для освобождение памяти
metring::~metring(void)//освобождаю память
{delete []ch_pt;delete []fmas;}
//получение от пользователя набора чисел 
void metring::get_number(void)
{
    int ilen = 1;//для хранения длинны строки
    char* ch_pt_temp ;//временный банк для обмена
    char ch_temp[2]="e";//инициализация любым значение отличным от нуля и не равным 13(знаку Enter)
    //создание строки необходимого размера для хранения строки ch_c
    while(ch_temp[0]!=13)//продолжать пока пользователь не нажмёт клавишу Enter
    {
        ch_pt_temp = new char[strlen(ch_pt)+2];//выделяю память под переменную для обмена
        ch_pt_temp[0]='\0';//принудительное указаник конца строки          
        bool flag=true;//флаг для инкримента счетчика символов
        ch_temp[0] = getche();//отобразить символ и записать его значение в переменную типа char
        if(ilen!=1&&ch_temp[0]!=13)//если ilen!=1 и ch_temp!=Enter 
        {                                   //  то освобождаем память для перевыдиления
            //перед освобождением памяти делаю копию значения строки
            //копируем сиволы в нашу строку с нулевым символом
        
            for(int i = 0, r = strlen(ch_pt_temp); i < strlen(ch_pt)+1;i++,r++)
            {
                ch_pt_temp[r]=ch_pt[i]; 
            }
            ch_pt_temp[strlen(ch_pt_temp)+1];//принудительное завершение строки
            delete []ch_pt;//освобождаю выделенную память
            if(ch_temp[0]==8&&strlen(ch_pt_temp))
            {
                std::cout<<"\x20\x08";//затираем предыдущий символ знаком пробела и перемещаем курсор
                ilen--;//уменьшаем значение количество символов в строке
                flag=false;
            }
            else if(ch_temp[0]==8&&strlen(ch_pt_temp)<=0)
            {
                std::cout<<"\x3A";
            }
            ch_pt=new char[ilen+2];//заного выделяю память 1 для нового сивола другой для знака \0 конца строки
            ch_pt[0]='\0';//принудительное указаник конца строки
            //возвращаю значение строки предшествующие перевыдилинию памяти
            //копируем сиволы в нашу строку с нулевым символом
            int itemplen=(strlen(ch_pt_temp)==ilen-2)?ilen-1:ilen;
            for(int i = 0, r = strlen(ch_pt); i < itemplen;i++,r++)
            {
                ch_pt[r]=ch_pt_temp[i]; 
            }
            if(strlen(ch_pt_temp)!=ilen-2)
            {ch_pt[ilen-1]='\0';}
            
        }
        if(ch_temp[0]!=13&&ch_temp[0]!=8)//если ch_temp!=Enter помещаем символ в строку
        {
            //копируем сиволы в нашу строку с нулевым символом
            for(int i = 0, r = strlen(ch_pt); i < strlen(ch_temp)+1;i++,r++)
            {
                ch_pt[r]=ch_temp[i];    
            }
            
        }
        delete[]ch_pt_temp;//освобождаем память
        if(flag)
        {ilen++;}//инкременация счетчика символов
    }
    imax_fmas=ilen;//запись количества символов
}
 
//операция преобразования из объекта класса в float*
metring:: operator float*(void)
{
    char* ch_pt_temp ;//временный банк для обмена
    int isecondlen=2,//разряд числа
        idex=0;//индекс массива который представляет одно число
    bool flag= true;//флаг для разрешения выдиления памяти для ch_pt_temp
    
    //разбираем массив т.е. отдиляем числа от запятых, целые от вещественных
    for(int i = 0; i<strlen(ch_pt);i++)
    {
        if(flag)//выделяем каждый раз когда следует отдельное число 
        {
            ch_pt_temp = new char[isecondlen];//выделяю память под переменную для обмена
            ch_pt_temp[0]='\0';//принудительное указаник конца строки
            flag=false;//запрещаем перевыдиление памяти пока не закочится число
        }
        
        if(isecondlen>strlen(ch_pt_temp)&&(strlen(ch_pt_temp)!=0)&&ch_pt[i]!=',')
        {
            char* ch_pt_temp2 = new char[isecondlen+2];//выделяю память для временной переменной
            ch_pt_temp2[0]= '\0';//принудительно инициализирую её первый символ нулём
            //копируем сиволы в нашу строку с нулевым символом
            for(int i = 0, r = strlen(ch_pt_temp2); i < strlen(ch_pt_temp)+1;i++,r++)
            {
                ch_pt_temp2[r]=ch_pt_temp[i];   
            }
            delete []ch_pt_temp;//освобождаю память
            //выделяю памяти больше на одну единицу
            ch_pt_temp = new char[isecondlen+2];//выделяю память под переменную для обмена
            ch_pt_temp[0]= '\0';//принудительно инициализирую её первый символ нулём
 
            //копируем сиволы в нашу строку с нулевым символом
            for(int i = 0, r = strlen(ch_pt_temp); i < strlen(ch_pt_temp2)+1;i++,r++)
            {
                ch_pt_temp[r]=ch_pt_temp2[i];   
            }
            delete []ch_pt_temp2;//освобождаю память
        }
        if(ch_pt[i]!=',')//если символ не является разделительным символом то просто копируем цифру
        {
            ch_pt_temp[idex++]=ch_pt[i];//копируем символ
            ch_pt_temp[idex]= '\0';//принудительное завершение строки
            isecondlen++;//увеличиваем разряд числа
        }
        if(ch_pt[i]==','||(i+1>=strlen(ch_pt)))//если символ разделительный то переобразуем массив ch_pt_temp в float
        {
            
            isecondlen=2;//инициализируем  флаг на 1 следящий за разрядом числа
            flag=true;//разрешаем перевыдиление памяти т.к. число закончилось
            if(imax_fmas)//если не нулевое значение значит нужно перевыделить память для вещественного массива
            {
                float* f_mas_temp = new float[imax_fmas];//создаю временный массив для страховки основного массива fmas
                for(int e =0 ; e<imax_fmas;e++)
                {
                    f_mas_temp[e]=fmas[e];//копирую значения массива
                }
                delete []fmas;//освобождаю память
                fmas = new float[imax_fmas+1];// перевыдиляю память
                for(int e =0 ; e<imax_fmas;e++)
                {
                    fmas[e]=f_mas_temp[e];//копирую значения массива
                }
                delete[]f_mas_temp;//освобождаю выделенную память
            }
            ch_pt_temp[idex]='\0';//принудительно завершаю строку нулевым символом
            idex = 0;//обнуление индекса
            //проверка числа т.е. было оно целым или вещественным путем поиска символа '.'
            for(int k = 0 ; k<strlen(ch_pt_temp);k++)
            {
                if(ch_pt_temp[k]=='.')//если такой символ есть то меняю его на ',' так требует atof
                {ch_pt_temp[k]=',';}
            }
 
            //преобразуем массив символов в вещественное число
            fmas[imax_fmas-1] = atof(ch_pt_temp);
            if(!(i+1>=strlen(ch_pt)))
            {imax_fmas++;}//увеличиваем число элементов в вещественном массиве
            delete[]ch_pt_temp;//освобождение памяти для массива для представления любого числа
        }
        
    }
    return (fmas);//возвращаю массив чисел типа float
}
//оператор для преобразования из объекта в массив символов
metring:: operator char*(void)
{ return (ch_pt); }
//возврат количества элементов в вещественном массиве
int metring:: return_imax_fmas(void)
{return(imax_fmas);}
/**************************************************************************************************************************************/
class String : private metring
{
private:
    char** ch_pt_week;//указатель на календарь недели
    enum direction{LOWEST,DESCENDING}directory;//направление сортировки
    int ciDAYOFWEEK;//максимальный размер внешнего измерения массива
public:
    //конструктор без параметров
    String(void);
    //конструтрор с двумя параметрами
    String( char** cch_pt, const int ciSIZE);
    //диструктор для освобождения памяти
    ~String(void);
    //получить дни недели от пользоватля
    void get_days_of_week(void);
    //вывод на экран дней нидели
    void show_day_of_week(void);
    //сортировка указателей по алфовиту по возрастанию или убыванию
    void sort_days_of_week(const direction*const);
    //увеличение строки путём приклейвания символов и перераспредиления памяти
    void strcat(const char* =""  ,const bool =false);
    //перевыдиление памяти внутриннего измерения
    void realoc(char*,const int&);
    //перевыдиление памяти внешнего измерения
    void realoc(char**,const int&);
};
//конструктор без параметров
String::String(void):ciDAYOFWEEK(7),metring()
{
    setlocale(LC_ALL,"Russian");//разрешаю вывод Русского языка
    ch_pt_week = new char*[ciDAYOFWEEK];//выделяю память для дней недели 
    for(int i = 0; i <ciDAYOFWEEK; i++)
    {
        switch(i)
        {
            case 0:
                    *(ch_pt_week+i) = new char[strlen("Monsday")];
                    break;
            case 1:
                    *(ch_pt_week+i) =  new char[strlen("Tuesday")];
                    break;
            case 2:
                    *(ch_pt_week+i) =  new char[strlen("Wednesday")];
                    break;
            case 3:
                    *(ch_pt_week+i) =  new char[strlen("Thursday")];
                    break;
            case 4:
                    *(ch_pt_week+i) =  new char[strlen("Friday")];
                    break;
            case 5:
                    *(ch_pt_week+i) =  new char[strlen("Saturday")];
                    break;
            case 6:
                    *(ch_pt_week+i) =  new char[strlen("Sunday")];
                    break;
        }
    }
}
//конструтрор с двумя параметрами
String::String( char** cch_pt, const int ciSIZE):ciDAYOFWEEK(ciSIZE)
{
    setlocale(LC_ALL,"Russian");//разрешаю вывод Русского языка
    ch_pt_week = new char* [ciSIZE];//выделяю достаточное количество для хранения календаря память
    
     for(int i =0; i < ciSIZE; i++)//копирую значения массива
     {
        *(ch_pt_week+i)= new char[strlen(*(cch_pt+i))+1];//сначало выделяю память
        strcpy(*(ch_pt_week+i),*(cch_pt+i));//после копирую значения
     }
}
 
//диструктор для освобождения памяти
String::~String(void)
{
    for(int i=0;i<ciDAYOFWEEK;i++)//освобождаю память из под двумерного массива указателей
    {delete ch_pt_week[i];}
}
//увеличение строки путём приклейвания символов и перераспредиления памяти
void ::String:: strcat(const char* cchc  ,const bool cbflag )
{
      static int si_sizea;//для подстчета элемента массива
    if(ch_pt[strlen(ch_pt)]=='\0'&& !cbflag)//если строки не хватает то перевыделяем память
    {
        char* ch_ptemp = new char [strlen(ch_pt)+1];//созадю временную строку  для обмена
        strcpy(ch_ptemp,ch_pt);//дублирую содержимое поля
        delete []ch_pt;//освобождаю не подходящую по размерам память
        ch_pt = new char[strlen(ch_ptemp)+2];//перевыделяю память на один символ 1 байт больше
        strcpy( ch_pt,ch_ptemp);//возращаю содержимое поля
        ch_pt[strlen(ch_ptemp)] = '\0';//принудительно указываю конец строки
        delete []ch_ptemp;//освобождаю память для ненужных банков
    
    }
    if(!cbflag)
    {
        //приклеиваю к строке приходящий символ символ\
        поиск нулевого символа
        int isymb=0;
        
        for(int i = 0 ; i<strlen(ch_pt)+2;i++)
        {
            if(ch_pt[i]=='\0')
            {isymb = i;}
        }
            
 
            ch_pt[isymb]=*(cchc+si_sizea);
            ch_pt[isymb+1]='\0';
                
 
    }
//мы перевыделяем память на минимум т.е один символ с учётом нулевого
    else if(cbflag)
    {
        delete []ch_pt;//освобождаю не подходящую по размерам память
        ch_pt = new char[2];//перевыделяю память
        *ch_pt = '\0';//принудительно указываю конец строки
    }
    si_sizea++;
}
//перевыдиление памяти внешнего измерения
void ::String:: realoc(char** cchpt ,const int& isize)
{
    char** ch = new char*[ciDAYOFWEEK];//временная переменная для перевыдиления памяти
    for(int i = 0;i<ciDAYOFWEEK;i++)//выделяю память для внутренних измерений
    {
        *(ch+i) = new char[strlen(*(cchpt+i))];
    }
    for(int i = 0;i<ciDAYOFWEEK;i++)//теперь дублирую значения всей матрицы
    {
        strcpy(*(ch+i),*(cchpt+i));
    }
    for(int i = 0;i<ciDAYOFWEEK;i++)//освобождаю не достаточный блок памяти
    {delete cchpt[i];}
    
    char** cchpt = new char*[ciDAYOFWEEK+isize];//перевыделяю память на  isize еденицы больше
    for(int i = 0;i<ciDAYOFWEEK+isize;i++)//выделяю память для внутренних измерений
    {
        if(i<ciDAYOFWEEK)
        {*(cchpt+i) = new char[strlen(*(ch+i))];}//перевыделяю память в соответсвие со значениями
        else
        {
            *(cchpt+i) = new char[2];//иначе выделяю минимум для одного символа
        }
    }
    for(int i = 0;i<ciDAYOFWEEK+isize;i++)//возвращаю все значения матрицы
    {
        if(i<ciDAYOFWEEK)
        {strcpy(*(cchpt+i),*(ch+i));}
        else
        {
            *(cchpt+i)='\0';//прунудительно указываю конец строки во избежания подводных камней
        }
    }
    ciDAYOFWEEK+=isize;//изменение счётчика 
}
//перевыдиление памяти внутреннего измерения
void ::String:: realoc(char* cchpt,const int& isize)
{
    char* ch = new char[strlen(cchpt)+1];//временная переменная для перевыдиления памяти
    strcpy(ch,cchpt);//дублирование значиния строки
    delete []cchpt;//освобождение памяти
    cchpt = new char[strlen(ch)+isize];//перевыдиление памяти больше на 1 байт
    *cchpt= '\0';//принудительное указание конца строки
    strcat(cchpt,ch);//приклеиваю строку
    cchpt[strlen(ch)-1]= '\0';//принудительное указание конца строки
}
//получить дни недели от пользоватля
void ::String:: get_days_of_week(void)
{
    int ciDAYOFSYMBOL;//максимальный размер внутреннего измерения массива
    int ilen=0;//для слижения за пределами массива
    String String_temp;//временный объект для хранения строки
    
    std::cout<<"Введите дни недели через запятую :";
    String::get_number();//вызов метода базового класса
 
    int ite=0;//для подсчета слова
    
    //разбор строки т.е. распредиление названий недели по массивам
    for(int i =0,k=0 ;i <imax_fmas;i++)
    {
        if(*(ch_pt+i)!=','&&*(ch_pt+i)!='\0')
        {
            String_temp.strcat(ch_pt);//копирую символы в динамический массив
            ite++;
        }
        else
        {
            ilen++;//увеличиваю счётчик предела массива
            if(!(ilen<ciDAYOFWEEK))//если у нас не достаточно памяти для внешнего измерения массива ch_pt_week
            {                       // то перевыдиляю память для внешнего измерения массива ch_pt         
                //вычисляем на скользо необходимо увеличить строку 
                int itemp =(ilen==ciDAYOFSYMBOL)?1:(ilen-ciDAYOFSYMBOL+1);
                //перевыделяем память для строки на itemp
                realoc(ch_pt_week,itemp);
            }
            ciDAYOFSYMBOL = strlen(*(ch_pt_week+k));//получаю размер строки
            if(!(ciDAYOFSYMBOL>ite-1))//если строка не помещается
            {                                                           //то перевыдиляю память
                
                //вычисляем на скользо необходимо увеличить строку 
                int itemp = (ciDAYOFSYMBOL==ite-1)? 1:(ite - ciDAYOFSYMBOL+1);
                //перевыделяем память для строки на itemp байт
                realoc(*(ch_pt_week+k),itemp);
 
            }
            strcpy(*(ch_pt_week+k),static_cast<char*>(String_temp));//копирую содержимое строки
            String_temp.strcat("",true);//очищаю строку и перевыделяю память
            k++;//увеличиваю счётчик элементов для массива ch_pt_week
            
        }
    }
 
}
//вывод на экран дней нидели
void ::String:: show_day_of_week(void)
{
    std::cout<<std::endl;
    for(int i = 0;i<ciDAYOFWEEK;i++)//показать поле 
    {
        std::cout<<*(ch_pt_week+i)<<' ';
        if(i!=0 && i%7 == 0)
        {std::cout<<std::endl;}
 
    }
    std::cout<<std::endl;
}
/*
//сортировка указателей по алфовиту по возрастанию или убыванию
void sort_days_of_week(const direction*const);
 
/**************************************************************************************************************************************/
 
int main(void)
{
    char* v[7]={"Monsday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"} ;
    const int i= 7;
    class String String_val(v,i);
    String_val.show_day_of_week();
    String_val.get_days_of_week();
    String_val.show_day_of_week();
 
 
    system("pause");
return 0;
}


Вернуться к обсуждению:
Указатели,массивы символов и динамическая память C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2012, 13:03
Готовые ответы и решения:

Массивы и указатели. Динамическая память
Нужно вывести на экран максимальные элементы в каждом столбце двумерного массива (матрицы). Решить...

Динамическая память, указатели
есть два вектора структуры s1 нужно поместить в элемент вектора указатель на следующий, в...

Указатели и динамическая память
Не могу немного понять, допустим, я хочу создать массив, зачем мне под него выделять память, почему...

Указатели и Динамическая память
Создать в динамической памяти массив вещественных чисел размерности R. Заполнить его случайными...

8
03.02.2012, 13:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2012, 13:03
Помогаю со студенческими работами здесь

Указатели. Динамическая память.
Нужно очень срочно. Сегодня последний день сдачи. 1. Дано натуральное число n. Определить...

Указатели и динамическая память
Помогите пожалуйста, написать программу. Описать 2 указателя на целый тип. Выделить для них...

Указатели. Динамическая память в С++
Найти наибольшую и наименьшую цифры в записи данного натурального числа. У меня есть код на...

Указатели.Динамическая память.
Перепешите пожалуйста на С/С++! &lt;script&gt; var n = new Number(); var m = new Number(); n =...

Указатели и динамическая память
Здравствуйте. Почему размер памяти для указателя выделяется такой же как для объекта в куче....

Указатели и динамическая память new delete
Начал работать умными указателями, в итоге как понял не сильно освоил то и Cи указатели. 1) В...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru