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

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

Войти
Регистрация
Восстановить пароль
 
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
#1

Напишите функцию с аргументом типа char* - C++

20.11.2013, 04:24. Просмотров 467. Ответов 6
Метки нет (Все метки)

Напишите функцию с аргументом типа char*. Функция должна динамически (оператором new) выделять память для массива char, размер которого соответствует размеру переданного символьного массива. Используя механизм индексирования, скопируйте символы из аргумента в динамически созданный массив (не забудьте о завершающем нулевом символе) и верните указатель на копию. Протестируйте функцию в main(), передав ей статический символьный массив, получив результат и снова передав его функции. Выведите обе строки и оба указателя, чтобы убедиться, что они относятся к разным областям памяти. Освободите динамическую память при помощи оператора delete.
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
#include <iostream>
using namespace std;
 
char * add(char *ch){
    int size=0;
    while(*(ch+size)) size++;
    
    char* mass=new char[size+1];
 
    for(int i=0;i<size;i++){
        mass[i]=ch[i];
        //cout<<mass[i];
    }
 
    mass[size]='\n';
 
    return mass;
}
 
 
void main(){
    char*p;
    p=add("11");
    while(*p)
        cout<<p++;
    delete[]p;
 
}
Может кто исправить мой говнокод?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 04:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Напишите функцию с аргументом типа char* (C++):

Напишите программу, которая определяет, сколько единиц содержится в двоичном представлении переменной типа char - C++
Только начал изучать C++, не могу понять смысл цикла в данном коде и как он помогает нам реализовать задачу. (Напишите программу,...

Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int - C++
Операции над целыми числами осуществляются быстрее, чем над числами с плавающей точкой. Напишите перегруженную функцию power (), ...

Передача массива типа char в функцию - C++
Не пойму в чем ошибка, выдает что ошибка в типе char. Объясните пожалуйста что не так. int min() { char ar =...

Исправить функцию GET для типа char - C++
Надо исправить функция GET для типа char, не могу понять,почему не выводит. #include &lt;iostream&gt; #include&lt;conio.h&gt; using...

Напишите функцию int GetLength(char* string), определяющую длину подаваемой на вход строки - C++
Помогите пожалуйста, желательно с обьяснением, а то начал читать о строках, не вдупляю малёх

Разработайте функцию, в которую передается массив типа char - C++
Разработайте функцию, в которую передается массив типа char, что возвращает максимальный элемент этого массива.

6
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
20.11.2013, 11:33 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
 
char* copy(const char* str)
{
   const size_t length = strlen(str);
   char* dest = new char[length + 1];
   for (size_t i = 0; i < length + 1; ++i)
   {
       dest[i] = str[i];
   }
   return dest;
}
 
int main()
{
    const char* value = "11";
    char* result = copy(value);
    std::cout << value << " " << static_cast<const void*>(value) << " "
    << result << " " << static_cast<void*>(result) << std::endl;
}
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.11.2013, 11:58 #3
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
const size_t length = strlen(str); 
char* dest = new char[length + 1]; 
for (size_t i = 0; i < length + 1; ++i)
Я бы наверное в таком случае предпочел вариант:
C++
1
2
3
const size_t size = strlen(str) + 1; 
char* dest = new char[size]; 
for (size_t i = 0; i < size; ++i)
А вообще, есть же strcpy(). Хотя зная размер можно и memcpy().
Но в данном случае вообще strdup()
0
Croessmah
Эксперт CЭксперт С++
13412 / 7563 / 855
Регистрация: 27.09.2012
Сообщений: 18,614
Записей в блоге: 3
Завершенные тесты: 1
20.11.2013, 12:00 #4
Цитата Сообщение от Tulosba Посмотреть сообщение
Но в данном случае вообще
Цитата Сообщение от helloy Посмотреть сообщение
Функция должна динамически (оператором new) выделять память для массива char, размер которого соответствует размеру переданного символьного массива. Используя механизм индексирования, скопируйте символы из аргумента в динамически созданный массив (не забудьте о завершающем нулевом символе) и верните указатель на копию.
!!!
2
Tulosba
20.11.2013, 12:05
  #5

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
!!!
Задание не читаю Главное - эффективность.

0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
20.11.2013, 12:16 #6
Tulosba, Вцелом логично. strcpy/memcpy это понятно, но нужно ж было именно такую копию замутить. А strdup нестандартная функция.
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.11.2013, 12:31 #7
ForEveR, я начал "лишную" +1 убирать, а там уже процесс пошел лавинообразно
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2013, 12:31
Привет! Вот еще темы с ответами:

Аргумент типа char (*)[1000] несовместим с параметром типа char** - C++
Здравствуйте! Есть вот такая структура: #define max 1000 struct expr { char s; int index; };

Добавление в массив типа char * одного элемента типа char - C++
Дан класс Строка, содержащий указатель на char - адрес динамически выделенной для размещения символов строки памяти и длину строки. Нужен...

Аргумент типа char** не совместим с параметром типа const char* - C++
Программа должна позволять заносить в структуру данные и выводить на экран информацию о поездах, следующих до определенной станции: ...

Написать функцию, которая переворачивает строку (массива типа char). - C++
Вот задание: Написать функцию reversit(), которая переворачивает строку (массива типа char). Используйте цикл for, которая меняет первый...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
20.11.2013, 12:31
Ответ Создать тему
Опции темы

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