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

Возвращаемый массив содержит мусор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как вернуть массив? http://www.cyberforum.ru/cpp-beginners/thread594668.html
Как правильно вернуть локальный массив (вместе с размером) из одной функции в main-функцию и потом передать его в третью функцию? int* first(int &rArraySize) //Есть функция {...
C++ Прямоугольник Помогите написать программу, которая будет выводить на экран прямоугольник с каким-нибудь текстом; каждые 15 секунд в новом месте экрана. http://www.cyberforum.ru/cpp-beginners/thread594665.html
C++ Текст является десятичной записью числа, кратного 9
Добрый всем день. Помогите мне решить данное задание , я плохо разбираюсь в этом языке программирования ,т.к. мягко говоря ,наш преподаватель - не компетентен. 1.Текст является десятичной записью...
C++ Access violation и размерность символьного массива
Всех приветствую! Только начинаю работать с консолькой, и вот уже возникли непонятки с символьными массивами. Конкатенирую 2 введенные строчки через разделитель " - ": #include <cstdio>...
C++ Работа с русским языком в консольном приложении http://www.cyberforum.ru/cpp-beginners/thread594625.html
Как можно осуществить ввод-вывод текста на русском языке в консоли? Просто я в программе использовал уже тексты в файлах на русском языке, ввел их там, все как положено(использовал еще...
C++ Нужно разобраться с программой В общем дана программа, мне нужно разобрать ее всю и полностью :) Нужно объяснить каждую строчку что за что отвечает и что делает, думаю для таких профи, как Вы это будет не трудно сделать, можете... подробнее

Показать сообщение отдельно
Lordif
21 / 21 / 1
Регистрация: 18.04.2010
Сообщений: 87
03.06.2012, 10:33
Так создавать массив нельзя:
C++
1
2
// создаем новый массив нужного размера
int arrPart[start-end+1];
Необходимо в таком случае динамически выделить память:
C++
1
int* arrPart = new int[start-end+1];
И вы создаете массив с отрицательным кол-вом ячеек, start - end + 1 < 0, т.к. end > start,
надо так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int* getArrayPart (int* arr, int start, int end) {
    // создаем новый массив нужного размера
    int* arrPart = new int[end - start + 1];
 
    // заполняем этот массив и выводим на экран его содержимое
    // (работает, как надо!)
    for (int i = start; i <= end; i++) {
        arrPart[i-start] = arr[i];
        cout << arrPart[i-start] << " ";
    }
    cout << endl;
 
    // возвращаем новый массив
    return arrPart;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru