С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
dearkato
7 / 7 / 1
Регистрация: 30.10.2011
Сообщений: 71
#1

указатели и функции в с++ - C++

30.09.2012, 13:45. Просмотров 454. Ответов 3
Метки нет (Все метки)

Как сделать так, чтобы функция возвращала указатель на какой-либо элемент этой функции, а сам исходный элемент в mainе оставался неизменным?
Вот например мне необходимо отсортировать массив методом пузырька и вывести его на экран. С заменой первоначального массива я понимаю как сделать, а вот как сделать так, чтобы функция вернула указатель на новый массив, а самый первый остался таким же и чтобы я его потом еще могла вывести и наглядно сравнить с отсортированным?

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
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <conio.h>
void bsort (int* const, const int);
 
int main (void) {
    int A[] = {56, 34, 2, 0, 1, -21, 6, 8, 7};
    int i, n;
    n = sizeof(A)/sizeof(A[0]);
    puts("\n Data items in original order:");
 
    for (i = 0; i < n; i++)
        printf(" %3d", A[i]);
 
    bsort (A, n);
      puts("\n\n Data items in ascending order:");
    for (i = 0; i < n; i++)
      printf(" %3d", A[i]);
        
    printf("\n\n ... Press any key: ");
    _getch();
    return 0;
}
 
// Определение функции
void swap(int *pa, int *pb) {
    int temp;
    temp = *pa;
    *pa = *pb;
    *pb = temp;
}
void bsort (int *const arr, const int size) {
int pass,j; 
 
void swap (int*, int*);
 
for (pass = 0; pass < size - 1; pass++ ) 
{
    for (j = 0; j < size - 1; j++)
    {
        if (arr[j] > arr[j + 1])
        {
        swap(&arr[j], &arr[j+1]);
        }
     }
   }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2012, 13:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос указатели и функции в с++ (C++):

Указатели и массивы. Указатели и функции - C++
Никак не разберусь с указателями на функцию. Пишу в Visual Studio. Надо написать функцию Compress() с использованием указателей, которая...

Указатели на массивы. Указатели и функции - C++
Вот задача: Даны два массива : А и B. Необходимо создать третий массив, в котором нужно собрать: -Элементы обоих массивов; -Общие...

Распечатать таблицы значений функций cox (x) и на отрезке [a; b] с шагом h, развив функции в ряд Тейлора и используя указатели на функции - C++
Распечатать таблицы значений функций cox (x) и на отрезке с шагом h, развив функции в ряд Тейлора и используя указатели на функции.

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Шаблонные функции и указатели на функции - C++
Помогите доделать и исправить... Задание: 1. Создать структуру Прямоугольник, с полями Высота и Ширина. Создать массив объектов типа...

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

3
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.09.2012, 16:20 #2
функцию сортировки можно не трогать. достаточно сделать 2 одинаковые копии массивов. один массив отсортировать теми функциями, которые уже есть, их менять не надо. второй массив оставить без изменений. ну и потом вывести оба массива рядом.
если же прям пренепременно нужно, чтобы функция возвращала указатель на новый, то делается примерно то же, только в одтельной функции:
схематично так:
C++
1
2
3
4
5
6
7
8
9
10
int* CreateSortedArray(const int* arr, int size)
{
   int* newArray = new int[size];
   // тут копирование arr в newArray каким либо способом.
   
   // тут сортировка нового массива. 
   bsort(newArray, size);
 
   return newArray;
}
1
dearkato
7 / 7 / 1
Регистрация: 30.10.2011
Сообщений: 71
30.09.2012, 16:27  [ТС] #3
думаю не прокатит, задание по указателям и функциям и нужно как-то устроить возврат значения отсортированного массива, при этом не изменяя исходного, а так задумка неплохая, если ничего другого не придумаю, то придется копию массива делать.
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.09.2012, 16:29 #4
я привел пример функции, которая исходный массив не изменяет.
она создает новый, копирует в него данные исходного, потом этот новый сортируется и возаращается указатель на динамически-созданный массив.
0
30.09.2012, 16:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2012, 16:29
Привет! Вот еще темы с ответами:

Указатели на Функции - C++
Прошу помогите мне понять это условие,уже прочитал кучу информации по поводу указателей,но все равно мало,что уложилось в моем...

Указатели на функции - C++
Доброго всем времени суток.Помогите разобраться с указателями на функции.Вот мой код #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include...

Указатели на функции - C++
Разработать функцию fold, которая позволяет найти минимальный символ в массиве символов с использованием функции min. Функция fold получает...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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