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

Динамическое выделение памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти все подмножества точек, лежащих на одной прямой http://www.cyberforum.ru/cpp-beginners/thread619960.html
на плоскости задано множество точек. Найти все подмножества точек, лежащих на одной прямой. помогите пожалуйста решить
C++ Функция вычисляющая N!! Задача: Описать функцию Fact2(N)вещественного типа, вычисляющую двойной факториал: N!!=135...N, если N - нечетное; N!!=246...N, если N - четное (N>0 - параметр целого типа;вещественное возращаемое... http://www.cyberforum.ru/cpp-beginners/thread619955.html
Возвести любое число в любой степени от 1 до 10 C++
Заранее спасибо! Возвести любое число в любой степени от 1 до 10
Одномерный массив, найти минимальное и максимальное значение C++
Помогите друзья очень прошу это задание на экзамен? Дан одномерный массив найти минимальное и максимальное значение?
C++ Геометрическая задача http://www.cyberforum.ru/cpp-beginners/thread619940.html
Задано множество точек на плоскости . Выбрать из них четыре разные точки, которые являются вершинами квадрата наибольшего периметра. Алгоритм понятен. Нужно взять четыре точки,допустим A,В,С и D....
C++ Найти наибольшую цифру в заданном числе Заранее спасибо! Найти наибольшее цифру в заданном числе N подробнее

Показать сообщение отдельно
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224

Динамическое выделение памяти - C++

06.07.2012, 11:08. Просмотров 837. Ответов 14
Метки (Все метки)

есть код:
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
 int u = 0;
char* mstrcat(char *str1, char *str2)
 
{   u = sizeof(str1);
    // *str1 = new char[u];
    char *res = str1;
    while(*str1) 
        ++str1;
    while(*str1++ = *str2++);{
    
//  int * = new int[u];
    return res;               }
}
int main(){
    int *p;
    p=&u;
    //int *siz =new int[u];
//char *str1 = new char[p];
    char str1[15]={"abc"};
    cin>>str1;
    char str2[]={"defg"};
   // int arr=0;
mstrcat( str1,str2);
cout<<"Str="<<str1<<endl;
cout<<"size="<<*p<<endl;
 
system("PAUSE");
return 0;
           }
Как сделать чтобы размер массива str 1 выделялся динамически?(строка-19)чтобы равнялся кол-ву символов введённых с клавиатуры (строка-20)плюс символы ={"defg"};(строка-21)
Спасибо

Добавлено через 4 минуты
Можно таким образом:
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
int u = 0;
char* mstrcat(char *str1, char *str2)
 
{   u = sizeof(str1);
    
    char *res = str1;
    while(*str1) 
        ++str1;
    while(*str1++ = *str2++);{
    
 
    return res;               }
}
int main(){
    int *p;
    p=&u;
    
    char *str1=new char[*p];
    cin>>str1;
    char str2[]={"defg"};
  
mstrcat( str1,str2);
cout<<"Str="<<str1<<endl;
cout<<"size="<<*p<<endl;
 
system("PAUSE");
return 0;
           }
Добавлено через 18 минут
Вот реализация:
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
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <vector>
#include<locale>
#include <stdio.h>
#include "C:\Documents and Settings\Dvurechenskiy\Мои документы\Visual Studio 2008\Projects\1\1\stdafx.h"
#include <cstdlib>
#include <Windows.h>
using namespace std;
 
 
// int u = 0;
char* mstrcat(char *str1, char *str2,int &u)
 
{  
    
    char *res = str1;
    while(*str1) 
        ++str1;
    while(*str1++ = *str2++);{
     u = strlen(res);
 
    return res;               }
}
int main(){
     int u = 0;
    int *p,raz;
    p=&u;
    
    char *str1=new char[*p];
    cin.getline(str1,3);
    char str2[]={"defg"};
 // raz = sizeof(str1);
mstrcat( str1,str2,u);
int n=strlen(str1);
cout<<"Str="<<str1<<endl;
cout<<"size="<<*p<<endl;
//cout<<"razmer str1="<<raz<<endl;
cout<<"razmer ="<<n<<endl;
 
system("PAUSE");
return 0;
           }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru