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

Конкатенация строк: Зачем строки создаются в динамической памяти? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите найти ошибку в решении биквадратного уравнения http://www.cyberforum.ru/cpp-beginners/thread1233710.html
Здравствуйте,написал код,проблема в том,если выполняется строка 31,то и всегда будет выполнятся строка под номером 39,как это исправить? писал по алгоритму,должно быть все правильно. Программа работает хорошо,только выводит на экран пару лишних иксов. Для примера можно взять 4(x^4)- 5(x^2)+1=0. Ответ равен 1, -1, 0.5, -0.5; у меня выбивает следующие: x1=1; x2=-1; x3=0.5; x4=-0.5; x1=-1; x2=1; -...
C++ Как обратиться к свойству класса Нубский вопрос, вот код: #include "stdafx.h" #include <iostream> using namespace std; class HelloClass http://www.cyberforum.ru/cpp-beginners/thread1233666.html
Выяснить, сколько бюллетеней осталось необработанными C++
В стране Виртландии раз в пять лет проходят выборы президента. И каждый раз после завершения голосования появляется необходимость подсчитать результаты. Рассмотрим процесс обработки бюллетеней в Виртландии. Всего в Виртландии голосуют n человек, соответственно необходимо обработать n бюллетеней, которые пронумерованы от 1 до n. Обработка длится k дней. Каждый день члены избирательной комиссии...
Преобразование string в long double C++
Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для денежных значений, такого, как $173 698 001,32. Такой денежный тип должен иметь возможность для хранения числа с фиксированной десятичной точкой точностью около 17 знаков, которого было бы достаточно для хранения национального долга в долларах и цен- тах. К счастью, встроенный тип C++ long double имеет...
C++ Нахождение среднего значения дробей http://www.cyberforum.ru/cpp-beginners/thread1233586.html
Напишите функцию main(), которая получает случайные дробные числа от пользователя, сохраняет их в массиве типа fraction, вычисляет среднее значение и выводит результат. т.е. пользователь вводит к примеру 1/2, 2/3, 3/4, 4/5 а в ответ получает среднее значение 419/720 программа работает неправильно, выводит ноли. где ошибка? #include "stdafx.h" #include <iostream> #include <cmath>...
C++ Получить последовательность число цифр которой равно знаменателю, а сумма этих цифр -числителю Доброго всем времени суток!Пожалуйста помогите сформировать вектор. Дана правильная несократимая дробь нужно получить последовательность число цифр которой равно знаменателю,а сумма этих цифр -числителю.Напечатать в виде 1.1.2.1.2; Вот мой вариант. #include <iostream> #include <stdlib.h> #include <vector> #include <algorithm> #include <iterator> #include <iomanip> подробнее

Показать сообщение отдельно
Nickolay0512
57 / 39 / 19
Регистрация: 26.09.2013
Сообщений: 318
Записей в блоге: 1

Конкатенация строк: Зачем строки создаются в динамической памяти? - C++

25.07.2014, 12:22. Просмотров 549. Ответов 7
Метки (Все метки)

Есть программа, которая делает конкатенацию строк.
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
#include <iostream>
using namespace std;
char* Concatenate(char* string1, char* string2)
{
    int lengthString1 = GetLength(string1);
    int lengthString2 = GetLength(string2);
    int lengthString3 = lengthString1 + lengthString2;
    int charString1 = 0;
    int charString2 = 0;
    char* string3 = new char[lengthString3];
    while (string1[charString1])
    {
        string3[charString1] = string1[charString1];
        charString1++;
    }
    while (string2[charString2])
    {
        string3[charString1] = string2[charString2];
        charString1++;
        charString2++;
    }
    string3[lengthString3] = ('\0');
    return string3;
}
int main()
{
        const int a = 1000;
        char *string1 = new char[a];
        char *string2 = new char[a];
    cout << "Enter first string" << endl;
    gets(string1);
    gets(string1);
    cout << "Enter second string" << endl;
    gets(string2);
    cout << "Result:=  " << Concatenate(string1, string2) << endl;
    delete[] string1;
    delete[] string2;
}
Программа работает. Вопрос в том, что за условие в цикле while (string1[charString1])? Зачем строки создаются в динамической памяти? И можно ли написать функцию покороче(менять заголовок функции нельзя)?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru