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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Dejust
49 / 49 / 1
Регистрация: 31.01.2011
Сообщений: 156
#1

Задачка от Страуструпа для новичков - C++

31.01.2011, 16:14. Просмотров 1578. Ответов 2
Метки нет (Все метки)

Вот задачка от Страуструпа для новичков
Напишите функцию cat(), которая принимает в качестве аргументов две C-строки и возвращает конкатенированную C-строку. Используйте оператор new для выделения памяти под результат
Мое решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char* cat(const char* str_1, const char* str_2)
{
    int len_1 = strlen(str_1), 
        len_2 = strlen(str_2), 
        full_strlen = len_1+len_2;
 
    char* cat_str = new char[full_strlen];
    
    // Переписываем str_1 в cat_str
    for(int i = 0; i<=len_1; i++)
        cat_str[i] = str_1[i];
 
    // Добавляем к str_1 строку str_2
    int w = 0; 
    for(int i = len_1; i<=full_strlen; i++)
    {
        cat_str[i] = str_2[w];
        w++;
    }
 
    return cat_str;
}
Да, я понимаю, что весьма топорно, так что с радостью посмотрю на решения других участников форума


 Комментарий модератора 
В теме "Задачи для тренировки и лучшего понимания" рассматриваются задачи НЕ для новичков
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2011, 16:14     Задачка от Страуструпа для новичков
Посмотрите здесь:

C++ Какой компилятор выбрать для лучшего изучения С++ по книге Берна Страуструпа?п
Массив для новичков C++
C++ Задачка из книги Страуструпа...
C++ Подскажите пожалуйста хорошую литературу для изучения с++, для новичков
Задачка из книги Страуструпа C++
Для того чтобы выучить С++ по книге Бьёрна Страуструпа C++
Библиотеки для книги Страуструпа C++
C++ Задачка из страуструпа , глава 4 ,вектора
C++ Тесты с++ для новичков
Задачка для новичков#1: найти причину UB в коде и исправить его согласно условию C++
Задачка для новичков #2: вывести в методе класса-родителя значение данных-членов из дочернего класса C++
C++ Задачка для новичков #3: определить, является ли строка палиндромом

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
31.01.2011, 16:17     Задачка от Страуструпа для новичков #2
Dejust, не выделяется память под нуль-терминатор
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
31.01.2011, 21:38     Задачка от Страуструпа для новичков #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char *Cat(const char *first_string, const char *second_string) {
  char *result = new char[strlen(first_string) + strlen(second_string) + 1];
  char *destination_symbol = result;
  const char *source_symbol = first_string;
  while (*source_symbol != '\0')
    *(destination_symbol++) = *(source_symbol++);
  source_symbol = second_string;
  while (*source_symbol != '\0')
    *(destination_symbol++) = *(source_symbol++);
 
  *destination_symbol = '\0';
  return result;
}
Конечно, нельзя так с С строками. Воизбежание, они должны создаваться и удаляться как-то более организованно. )
Yandex
Объявления
31.01.2011, 21:38     Задачка от Страуструпа для новичков
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru