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

Передача массива в функцию - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
28.09.2011, 23:17     Передача массива в функцию #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
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
 
void maxx();
 
int main(int argc, char *argv[])
{
    
    
    int a[5];
    srand(time(NULL));
    for (int i=0; i<5; i++) {
        a[i]=rand()% 100+1;
        cout << a[i]<<endl;
    }
    maxx(a);
    system("PAUSE");
    return 0;
}
void maxx(a){
    int max;
    for (int i=0; i<5; i++) {
        if (a[i]>max) {
            max=a[i];
        }
    }
}
чот с передачей никак(((
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 23:21     Передача массива в функцию #2
C++
1
void maxx(int *a)
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.09.2011, 23:22     Передача массива в функцию #3
Чтот я не пойму что должна делать функция. В ней объявляется переменная которая не возвращается, зачем? И потом лучше после объявления инициализировать ее первым элементом массива.

Вот как то так

C++
1
2
3
4
5
6
7
8
9
int maxx( a[] ){
        int max = a[0];
        for (int i=0; i<5; i++) {
                if (a[i]>max) {
                        max=a[i];
                }
        }
        return max;
}
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 23:23     Передача массива в функцию #4
а еще лучше так
C++
1
2
3
4
int maxx(int *a){
.................
     return max;
}
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.09.2011, 23:25     Передача массива в функцию #5
Цитата Сообщение от alkagolik Посмотреть сообщение
а еще лучше так
C++
1
2
3
4
int maxx(int *a){
.................
     return max;
}
Без разницы думаю, но человек, раз задает такие вопросы, еще не сталкивался, видать, с указателями и ссылками.
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
28.09.2011, 23:25  [ТС]     Передача массива в функцию #6
я это ещё не успел доделать. Меня в данный момент просто интересовал способ передачи
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 23:26     Передача массива в функцию #7
Цитата Сообщение от Toshkarik Посмотреть сообщение
int maxx( a[] )
так неверно, надо указать передать тип. int *tmp == int tmp[]
а в качестве параметра в мейне передаем только имя массива.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.09.2011, 23:28     Передача массива в функцию #8
Хррр, точно, проглядел.

C++
1
2
3
4
int maxx( int a[] )
{
...
}
И прототип так же

C++
1
int maxx( int [] );
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
28.09.2011, 23:28  [ТС]     Передача массива в функцию #9
только я вот не понял , если при передачи указывать void maxx(int *a){ под основной программой, то что вписать сверху?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.09.2011, 23:29     Передача массива в функцию #10
C++
1
int maxx( int * );
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
28.09.2011, 23:31  [ТС]     Передача массива в функцию #11
чот вообще запутался, теперь вот тут ругается http://gyazo.com/d2e6f28f5d29e5121833a9e5a0c7101d

Добавлено через 1 минуту
благодарю, разобрался вроде как
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 23:34     Передача массива в функцию #12
Цитата Сообщение от nonamez123 Посмотреть сообщение
то что вписать сверху
можно или саму функцию void maxx(int *a){} описать перед мейном, или описать ее после мейна, а перед мейном поместить ее прототип void maxx(int *)

Добавлено через 49 секунд
Цитата Сообщение от nonamez123 Посмотреть сообщение
теперь вот тут ругается
проинициализируйте max нулем

Добавлено через 1 минуту
int *a[] - это указатель на массив указателей)) двумерный массив.
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
28.09.2011, 23:34  [ТС]     Передача массива в функцию #13
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
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
 
int maxx( int * );
 
int main(int argc, char *argv[])
{
    
    
    int a[5];
    srand(time(NULL));
    for (int i=0; i<5; i++) {
        a[i]=rand()% 100+1;
        cout << a[i]<<endl;
    }
    cout<< maxx(a);
    system("PAUSE");
    return 0;
}
int maxx(int *a){
    int max;
    for (int i=0; i<5; i++) {
        if (a[i]>max) {
            max=a[i];
        }
    }
    return max;
}
Если не сложно, покажите как с войд выглядеть должно
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
28.09.2011, 23:40     Передача массива в функцию #14
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
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
 
const int size = 5;
int maxx( int * );
 
int main()
{
    int a[size];
    srand(time(NULL));
 
    for (int i = 0; i < size; ++i) {
        a[i] = rand() % 100 + 1;
        std::cout << a[i] << std::endl;
    }
 
    std::cout << "\n\n" << maxx(a) << std::endl;
    return 0;
}
int maxx(int *a){
    int max = 0;
    for (int i = 0; i < size; ++i)
        if (a[i] > max)
            max = a[i];
    return max;
}
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
29.09.2011, 00:11  [ТС]     Передача массива в функцию #15
C++
1
2
3
4
5
6
7
8
9
int deletee(int *a){
    int del;
    cin >> del;
    for (int i=del; i<size-1; i++) {
        a[i]=a[i+1];
    }
    for (int i=0; i<size; i++) {
        cout << a[i]<< endl;
    }
вот ещё чот завис. Надо удалить произвольное число из массива... Вроде как и по логике правильно-записываем значение элемента массива следующим значением и потом выводим, но почему-то не хочет оно...

Добавлено через 3 минуты
C++
1
    for (int i=del-1; i<size-1; i++) {
как до меня щас допёрло, массивы ведь начинаются с 0, а не с 1. Следовательно надо ставить дел-1...

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
int deletee(int *a){
    int del;
    cin >> del;
    for (int i=del-1; i<size-1; i++) {
        a[i]=a[i+1];
    }
    for (int i=0; i<size-1; i++) {
        cout << a[i]<< endl;
    }
    return 0;
}
вот так вот по идее должно быть... Я прав?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
29.09.2011, 00:23     Передача массива в функцию #16
Цитата Сообщение от nonamez123 Посмотреть сообщение
вот так вот по идее должно быть... Я прав?
вообще нет, это уже принципиально другой подход. фактически в данном случае размер массива не изменяется, т.е. при перезаписи элементов последний элемент как был, так и останется, а остальные сдвинутся влево на 1 положение. в Си так сделать возможно, а в с++ наверное только классом.
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
....
    std::cout << "\n\n" << maxx(a) << std::endl;
    deletee(a);
 
    for (int i = 0; i < size; ++i)
        std::cout << a[i] << " ";
....
void deletee(int *a){
    int del;
    std::cin >> del;
    for (int i = del; i < size; ++i)
        a[i - 1] = a[i];
}


вывод

39 67 100 56 33 50 61 6 87 20

100
4
39 67 100 33 50 61 6 87 20 20
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
29.09.2011, 00:34  [ТС]     Передача массива в функцию #17
ну вот у меня вот так вот выводит всё норм

http://gyazo.com/00b5adec64ba24ac6028ce77fb48fb73

Просто думаю может какие логические там ошибки, но оно же работает)))
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
29.09.2011, 00:42     Передача массива в функцию #18
Цитата Сообщение от nonamez123 Посмотреть сообщение
но оно же работает)))
покажите код. я ваш код правил. там была угроза выхода за пределы массива.
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
29.09.2011, 00:59  [ТС]     Передача массива в функцию #19
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
70
71
72
73
74
75
76
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
 
const int size=7;
 
int maxx( int * );
int minn( int * );
int deletee( int *);
int main(int argc, char *argv[])
{
    
    
    int a[size];
    srand(time(NULL));
    for (int i=0; i<size; i++) {
        a[i]=rand()% 100+1;
        cout << a[i]<<" ";
    }
    
    int in;
    
    cout << "Ka darit?\n";
    cin >> in;
    switch (in) {
        case 1:
            maxx(a);
            break;
        case 2:
            minn(a);
            break;
        case 3:
            deletee(a);
            break;
        default:
            break;
    }
    system("PAUSE");
    return 0;
}
 
int maxx(int *a){
    int max;
        for (int i=0; i<size; i++) {
            if (a[i]>max) {
            max=a[i];
        }
        }
    cout << max;
    return 0;
}
 
int minn(int *a){
    int min;
    for (int i=0; i<size; i++) {
        if (a[i]<min) {
            min=a[i];
        }
    }
    cout << min;
    return 0;
 
}
 
int deletee(int *a){
    int del;
    cin >> del;
    for (int i=del-1; i<size-1; i++) {
        a[i]=a[i+1];
    }
    for (int i=0; i<size-1; i++) {
        cout << a[i]<<" " ;
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2011, 01:13     Передача массива в функцию
Еще ссылки по теме:

C++ Передача массива в функцию
Передача массива в функцию C++
Передача массива в функцию C++

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

Или воспользуйтесь поиском по форуму:
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
29.09.2011, 01:13     Передача массива в функцию #20
nonamez123, строки 72, 73. последний элемент массива просто не печатается... но существует
Yandex
Объявления
29.09.2011, 01:13     Передача массива в функцию
Ответ Создать тему
Опции темы

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