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

Передача указателя - C++

Восстановить пароль Регистрация
 
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
24.11.2013, 18:28     Передача указателя #1
Здравствуйте!
Форумчане, очень нужна помощь..

В общем ситуация такова: написана программа, нужно переделать её так,
чтобы в функции передавался не массив, а указатель на него.
Пардоньте)
Знаю, похожие темы уже были, но я () всё равно не смог разобраться, даже с их помощью

Вот код:
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
#include <iostream>
using namespace std;
 
int max_search(int a[], int l);
int min_search(int a[], int l);
int main()
{
    int a[10];
    int i;
    for (i=0; i<10; i++) a[i]=rand();
    cout<<"Массив заполнен."<<endl;
    cout<<"Минимальное значение: "<<min_search(a,10)<<endl;
    cout<<"Максимальное значение: "<<max_search(a,10)<<endl;
    
    system ("pause");
    return 0; 
}
 
int max_search(int a[], int l)
{
    int max=0;
    for (int i=0; i<l; i++) {
        if (a[i]>max) max=a[i];
        }
    return max;
}
 
int min_search(int a[], int l)
{
    int min=0;
    for (int i=0; i<l; i++) {
        if (a[i]<min) min=a[i];
        }
    return min;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.11.2013, 18:31     Передача указателя #2
Цитата Сообщение от timaberezhnov Посмотреть сообщение
чтобы в функции передавался не массив, а указатель на него
Массивы всегда передаются как указатель. Записи
C++
1
void f( int a[] );
и
C++
1
void f( int* a );
эквивалентны.
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
24.11.2013, 18:36  [ТС]     Передача указателя #3
Tulosba, спасибо!
Я знаю это) Но хочется знать оба варианта, всё-таки без указателей далеко не уедешь
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.11.2013, 18:44     Передача указателя #4
Цитата Сообщение от timaberezhnov Посмотреть сообщение
Я знаю это) Но хочется знать оба варианта
Не очень понятно. Я не ответил на Ваш вопрос?
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
24.11.2013, 18:54  [ТС]     Передача указателя #5
Tulosba, не совсем.
Что не верно?
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
#include <iostream>
using namespace std;
 
int max_search(int*a, int l);
int min_search(int*a, int l);
int main()
{
    int a[10];
    int i;
    for (i=0; i<10; i++) a[i]=rand();
    cout<<"ГЊГ*Г±Г±ГЁГў Г§Г*ïîëГ*ГҐГ*."<<endl;
    cout<<"ГЊГЁГ*ГЁГ¬Г*ëüГ*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ: "<<min_search(int*a,10)<<endl;
    cout<<"ГЊГ*ГЄГ±ГЁГ¬Г*ëüГ*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ: "<<max_search(int*a,10)<<endl;
    
    system ("pause");
    return 0; 
}
 
int max_search(int*a, int l)
{
    int max=0;
    for (int i=0; i<l; i++) {
        if (a[i]>max) max=a[i];
        }
    return max;
}
 
int min_search(int*a, int l) {
    int min=0;
    for (int i=0; i<l; i++) {
        if (a[i]<min) min=a[i];
        }
    return min;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.11.2013, 18:57     Передача указателя #6
Цитата Сообщение от timaberezhnov Посмотреть сообщение
Что не верно?
При вызове: строки 12,13 тип указывать не надо:
C++
1
min_search(a,10)
Поиск мин/макс лучше начинать со сравнения с первым элементом, а не с нулем. Иначе будут ошибки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 15:54     Передача указателя
Еще ссылки по теме:

C++ Передача указателя в функцию
передача указателя C++
Передача указателя в структуру C++

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

Или воспользуйтесь поиском по форуму:
timaberezhnov
14 / 14 / 4
Регистрация: 10.09.2013
Сообщений: 67
25.11.2013, 15:54  [ТС]     Передача указателя #7
Tulosba, Спасибо большое!

Не по теме:

Шикарный форум!


Итог
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
#include <iostream>
using namespace std;
 
int max_search(int*a, int l);
int min_search(int*a, int l);
int main()
{
    int arr[10];
    int i;
    for (i=0; i<10; i++) {
        cout<<"Введите "<<i+1<<"-й элемент массива: ";
        cin>>arr[i];
        cout<<endl;
        }
    cout<<"Массив заполнен."<<endl;
    cout<<"Минимальное значение: "<<min_search(arr,10)<<endl;
    cout<<"Максимальное значение: "<<max_search(arr,10)<<endl;
    
    system ("pause");
    return 0; 
}
 
int max_search(int*a, int l)
{
    int max=a[0];
    for (int i=0; i<l; i++) {
        if (a[i]>max) max=a[i];
        }
    return max;
}
 
int min_search(int*a, int l) {
    int min=a[0];
    for (int i=0; i<l; i++) {
        if (a[i]<min) min=a[i];
        }
    return min;
}
Yandex
Объявления
25.11.2013, 15:54     Передача указателя
Ответ Создать тему
Опции темы

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