Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
1

Массив по возрастанию, указатель на последний элемент как результат функции

20.08.2022, 18:28. Показов 907. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Правильно ли сделал?

правда не понял как вывести указатель на последний элемент как результат функции, ну сделал как-то так:

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
using namespace std;
 
 
int f(int arr[],int n) {
    
    for (int i=0;i<n;i++) {
        
        arr[i] = rand()%10;
    }
    
    return *arr;
}
 
 
 
int sort(int arr[],int n) {
    
    for (int i=0;i<n;i++) {
        for (int j=0;j<n-1;j++) {
            if(arr[j]>arr[j+1]) {
                int tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;             
            }
        
                    
        }
                
    }   
    return *arr;
    
}
 
 
void show(int arr[],int n) {
    for (int i=0;i<n;i++) {
        
        cout << arr[i] << " ";
        
            
        
    }
    
    cout << endl; 
    
}
 
 
int main() {
    
    int n = 20;
    int arr[n];
    
    f(arr,n);
    sort(arr,n);
    show(arr,n);
    
    cout << endl; 
    
    // указатель на последний элемент
    
    int *p = &arr[n-1];
    
    cout << *p << endl; 
    
 
    
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2022, 18:28
Ответы с готовыми решениями:

Дан массив указателей на кольца,элементов в этом массиве не более 50,последний элемент-указатель null.Элементами кольца являются указатель на
Дан массив указателей на кольца,элементов в этом массиве не более 50,последний элемент-указатель...

Дан массив указателей на кольца,элементов в этом массиве не более 50,последний элемент-указатель null.Элементами кольца являются указатель на
Дан массив указателей на кольца,элементов в этом массиве не более 50,последний элемент-указатель...

Дан массив указателей на кольца,элементов в этом массиве не более 50,последний элемент-указатель null.Элементами кольца являются указатель на
Дан массив указателей на кольца,элементов в этом массиве не более 50,последний элемент-указатель...

Как добавить элемент в очередь, используя указатель на последний элемент?
Не пойму как добавить элемент в очередь используя указатель на последний элемент. Выполняю задание...

Из элементов, больших по значению, чем последний элемент, создать новый массив, который упорядочить по возрастанию
Из элементов, больших по значению, чем последний элемент, создать новый массив, который упорядочить...

11
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,057
20.08.2022, 18:37 2
Цитата Сообщение от Sinitsky Посмотреть сообщение
правда не понял как вывести указатель на последний элемент как результат функции
Как результат какой именно функции? И при чем здесь "вывести", если у вас нет ни одной функций с результатом типа "указатель"?
0
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
20.08.2022, 18:41  [ТС] 3
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Как результат какой именно функции?

Тут пример из учебника Васильева, в теме функции, где как-раз нахожусь в изучении раздела.

Задача: Написать программу с функцией аргументом которой передается числовой массив. При вызове фукнкции сортируем в порядке возрастания а результатом функция возвращает указатель на последний элемент массива.

сделал массив, отсортировал, правда не понимаю как вернуть указатель на последний элемент.

понимаю что алгоритм такой:

C++
1
2
3
int arr[n];
 
int *p = &arr[n-1];
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,057
20.08.2022, 18:48 4
Цитата Сообщение от Sinitsky Посмотреть сообщение
C++
1
2
int arr[n];
int *p = &arr[n-1];
Ну осталось только вернуть указатель из функции.

Разве что массив должен приходить в функцию извне, а не объявляться внутри.
0
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
20.08.2022, 19:07  [ТС] 5
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Разве что массив должен приходить в функцию извне, а не объявляться внутри.
вот.. сегодня как раз целый день думаю.. как можно извне из функции в функцию что-то передавать?!! сможете обучить меня такому мастерству)?
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,057
20.08.2022, 19:32 6
Цитата Сообщение от Sinitsky Посмотреть сообщение
как можно извне из функции в функцию что-то передавать?!!
Ым...

Так вот же у вас в вашем же коде объявлена функция с параметрами

C++
1
int sort(int arr[],int n) {
И при вызове этой функции через эти параметры в нее "что-то" передается извне

C++
1
sort(arr,n);
Цитата Сообщение от Sinitsky Посмотреть сообщение
сможете обучить меня такому мастерству)?
Я еще и начать не успел, а вы уже передаете вовсю!
1
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
22.08.2022, 19:33  [ТС] 7
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Я еще и начать не успел, а вы уже передаете вовсю!
ну я стараюсь)) правда указатели такая тема для меня пока сложновато заходит.. но вот такую консттрукцию могу сделать..

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 <iostream>
using namespace std;
 
 
int f(int x) {
    
    return x;
}
 
int f1(int y) {
    
    return y;
}
 
 
int main() {
    
    int x = 5;
    int y = 5;
    
    int (*p)(int);
    int (*z)(int);
    p=f;
    z=f1;
    cout << p(x)+p(y);
        
}
Добавлено через 1 час 6 минут
Тоже самое, массив только по убыванию:


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
47
48
49
50
51
52
53
54
#include <iostream>
using namespace std;
 
 
int f(int arr[],int n) {
    
    for (int i=0;i<n;i++) {
        
        arr[i] = rand()%10;
    }
    
    return *arr;
}
 
int sort (int arr[],int n) {
    
    for (int i=0;i<n;i++) {
        for (int j=0;j<n-1;j++) {
            if(arr[j] < arr[j+1]) {
                int tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
        
    }
    
 
}
 
 
void show(int arr[],int n) {
    
    for (int i=0;i<n;i++) {
        cout << arr[i] << ' ';
    }
    
    
    
}
 
 
int main () {
    
    int n = 5;
    int arr[n];
    
    f(arr,n);
    sort(arr,n);
    show(arr,n);
    
 
                     
    }

Только как результатом функция должна вернуть ссылку на последний элемент массива?
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,057
22.08.2022, 19:59 8
Цитата Сообщение от Sinitsky Посмотреть сообщение
указатель на последний элемент как результат функции
Цитата Сообщение от Sinitsky Посмотреть сообщение
Только как результатом функция должна вернуть ссылку на последний элемент массива?
Так указатель или ссылку?

Цитата Сообщение от Sinitsky Посмотреть сообщение
указатель на последний элемент как результат функции
1. Объявить функцию с типом возвращаемого значения "указатель"
2. Вернуть указатель на последний элемент из функции при помощи return.

Все.
0
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
22.08.2022, 20:01  [ТС] 9
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Так указатель или ссылку?
ссылку... сможете подсказать как это делается?

т.е. интересует указатель и ссылку.
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,057
22.08.2022, 20:06 10
Цитата Сообщение от Sinitsky Посмотреть сообщение
ссылку... сможете подсказать как это делается?
Указатель:

C++
1
2
3
4
5
int *f(int arr[], int n) 
{
  ...
  return &arr[n - 1];
}
Ссылка:

C++
1
2
3
4
5
int &f(int arr[], int n) 
{
  ...
  return arr[n - 1];
}
0
2831 / 2336 / 707
Регистрация: 29.06.2020
Сообщений: 8,638
22.08.2022, 20:17 11
Лучший ответ Сообщение было отмечено Sinitsky как решение

Решение

Цитата Сообщение от Sinitsky Посмотреть сообщение
т.е. интересует указатель и ссылку.
Вы уже всех запутали. И сами тоже.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
using type_t = int;
using pointer_t = type_t*;
using reference_t = type_t&;
 
pointer_t func1(type_t *arr, size_t size){
   return &arr[size-1];
}
reference_t func2(type_t *arr, size_t size){
   return arr[size-1];
}
 
int main(){
   const size_t sz = 10;
   int arr[sz]{1,2,3,4,5,6,7,8,9,10};
   cout << *func1(arr, sz) << endl;
   cout << func2(arr, sz) << endl;
   cout << &*func1(arr, sz) << endl;
   cout << &func2(arr, sz) << endl;
}
1
12 / 7 / 0
Регистрация: 14.05.2021
Сообщений: 120
23.08.2022, 13:31  [ТС] 12
Цитата Сообщение от SmallEvil Посмотреть сообщение
Вы уже всех запутали. И сами тоже.

Да, прошу прощения, ну Ваш код для меня то что нужно. я их потом разбираю и тренируюсь..
0
23.08.2022, 13:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.08.2022, 13:31
Помогаю со студенческими работами здесь

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив.
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Условие:Реализовать 3 функции,...

Может ли указатель показывать на последний элемент массива, а не на первый?
Люди!!!! подскажите! может ли указатель показывать на последний элемент массива, а не на...

Как написать функцию которая не возвращает результат, а передает через указатель одного из параметров функции?
как написать функцию которая не возвращает результат, а передает через указатель одного из...

Массив: Создать массив с удвоенной длиной, где его последний элемент такой же, как в исходном, а все остальные равны 0.
Дан целочисленный массив, создать новый массив с удвоенной длиной, где его последний элемент такой...

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

Как передвигать указатель чтобы выделить память под новый элемент и добавить новый элемент в массив?
Допустим есть некое условие,нам нужно при каждом его выполнении выделить память под новый элемент и...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru