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

возвращение подмассив - C++

Восстановить пароль Регистрация
 
Insane__
43 / 42 / 4
Регистрация: 10.09.2013
Сообщений: 292
14.03.2014, 19:09     возвращение подмассив #1
Нужно написать функцию которая будет принимать два параматры: массив и количество элементов каторих нужно вернуть в новом масиве. Написать желательно на Си. Як это можно реализовать? Масив типу char.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2014, 19:09     возвращение подмассив
Посмотрите здесь:

C++ Найти все прямоугольные подмассивы в матрице
Подмассив массива C++
Возвращение по ссылке C++
Подмассив C++
C++ Максимальный подмассив в двумерном массиве
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mymedia
190 / 190 / 48
Регистрация: 27.05.2011
Сообщений: 543
14.03.2014, 19:18     возвращение подмассив #2
В С/С++ функции не могут ни принимать, ни возвращать массив, только указатели.
То есть ты хочешь "обрезать" массив? А что тебе мешает просто забыть про оставшеюся часть. Просто думай, что у тебя в массиве не 10 элементов, а, скажем, 5. Просто не обращайся к ним
Insane__
43 / 42 / 4
Регистрация: 10.09.2013
Сообщений: 292
14.03.2014, 19:27  [ТС]     возвращение подмассив #3
Цитата Сообщение от mymedia Посмотреть сообщение
То есть ты хочешь "обрезать" массив?
По сути нужно вернуть из функции указатель на вновь сформированный массив который будет размещен в другом участке памяти.
Цитата Сообщение от mymedia Посмотреть сообщение
А что тебе мешает просто забыть про оставшеюся часть. Просто думай, что у тебя в массиве не 10 элементов, а, скажем, 5
Просто потом будет неудобно пользоваться этим массивом, потому что он будет еще делиться не элементы.
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
14.03.2014, 19:51     возвращение подмассив #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
#include  <stdio.h>
#include <cstdlib>
 
char* resize_arr(char a[], int sz)
{
  char* newarr= (char*)malloc(sz);
    for(int i = 0; i != sz; i++)
    newarr[i] = a[i];
 
    return newarr;
}
int main()
{
    char arr[20];
 
    for(int i = 0; i != 20; i++){
    arr[i] = i+48;
     printf ("%c  ", arr[i]);
    }
    int new_size = 10;
 
    char* resized;
    resized = resize_arr(arr, new_size);
 
    for(int j = 0; j != new_size; j++)
    printf ("%c  ", resized[j]);
}
Insane__
43 / 42 / 4
Регистрация: 10.09.2013
Сообщений: 292
14.03.2014, 19:56  [ТС]     возвращение подмассив #5
Я думаю нужно еще в конец массива \0 запихнуть.
C++
1
newarr[sz] = '\0';
Yandex
Объявления
14.03.2014, 19:56     возвращение подмассив
Ответ Создать тему
Опции темы

Текущее время: 09:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru