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

Возврат массива из функции - C++

Восстановить пароль Регистрация
 
blackb00m
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 21
02.01.2013, 03:48     Возврат массива из функции #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
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
#include <string.h>
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
void vvod_mas(int razm, int *mas)
{
    for(int i = 1; i<=razm; i++) cin>>mas[i];
}
 
int kol_krat(int *mas, int mas_size, int usl)
{
    int result = 0;
    for(int i = 1; i<=mas_size; i++)
    {
        if (mas[i] % usl == 0) result++;
    }
    cout<<endl;
    return result;
}
 
void nov_mas (const int *old_mas, const int old_size, int &new_mas, int &new_size)
{
    new_size = 0;
    for (int i = 1; i<=old_size; i++)
    {
        if (old_mas[i]<0)
        {
            new_mas[new_size] = i;
            new_size++;
        }
    }
}
 
void write_mas (int *mas, int mas_size)
{
    for (int i = 0; i<mas_size; i++)
    {
        cout<<"Индексы отрицательных элементов массива: "<<mas[i]<<'\n';
    }
}
 
int main()
{
    setlocale(0, "");
    const int l = 30;
    int A[l],B[l],C[l],D[l];
    int m, m1, k, k1, x, y;
    cout<<"Введите размер массива A: ";
    cin>>m;
    cout<<"Введите массив А: ";
    vvod_mas(m, A);
    cout<<"Введите размер массива D: ";
    cin>>k;
    cout<<"Введите массив D: ";
    vvod_mas(k, D);
    cout<<"Введите числа Х и У: ";
    cin>>x;
    cin>>y;
    cout<<"Кол-во чисел массива А, кратных "<<x<<" : "<<kol_krat(A,m,x);
    cout<<"Кол-во чисел массива D, кратных "<<y<<" : "<<kol_krat(D,k,y)<<endl;
    nov_mas(A,m,B,m1);
    nov_mas(D,k,C,k1);
    write_mas(B,m1);
    write_mas(C,k1);
    getch();
    return 0;
}
Проблема в функции nov_mas. При попытке скомпилировать такой код, вылазит ошибка
C:\Users\FCCO\Documents\ОП\2-й семестр\Проекты\Lab9\main.cpp|31|error: invalid types 'int[int]' for array subscript|
Как корректно вернуть массив из функции?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11844 / 6823 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
02.01.2013, 03:52     Возврат массива из функции #2
C++
1
void nov_mas (const int *old_mas, const int old_size, int *new_mas, int &new_size)
blackb00m
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 21
02.01.2013, 03:55  [ТС]     Возврат массива из функции #3
Странно, но нет.
Возврат массива из функции
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11844 / 6823 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
02.01.2013, 04:09     Возврат массива из функции #4
Цитата Сообщение от blackb00m Посмотреть сообщение
Странно, но нет.
Странно, что Вас ничего не смущает тут:
C++
1
2
3
4
5
6
7
8
9
10
int kol_krat(int *mas, int mas_size, int usl)
{
    int result = 0;
    for(int i = 1; i<=mas_size; i++)//Вот тут
    {
        if (mas[i] % usl == 0) result++;
    }
    cout<<endl;
    return result;
}
blackb00m
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 21
02.01.2013, 04:12  [ТС]     Возврат массива из функции #5
В смысле, лучше так?
C++
1
for(int i = 0; i<mas_size; i++)
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11844 / 6823 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
02.01.2013, 04:30     Возврат массива из функции #6
Цитата Сообщение от blackb00m Посмотреть сообщение
Странно, но нет.
А что Вас не устраивает? Что не так на Вашем скриншоте?

Цитата Сообщение от blackb00m Посмотреть сообщение
В смысле, лучше так?
а смысл делать с 1?
blackb00m
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 21
02.01.2013, 04:36  [ТС]     Возврат массива из функции #7
Цитата Сообщение от Croessmah Посмотреть сообщение
А что Вас не устраивает? Что не так на Вашем скриншоте?
В первом массиве вообще нет отрицательных чисел, а во втором их индексы - 1 и 2.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11844 / 6823 / 771
Регистрация: 27.09.2012
Сообщений: 16,915
Записей в блоге: 2
Завершенные тесты: 1
02.01.2013, 04:40     Возврат массива из функции #8
Цитата Сообщение от blackb00m Посмотреть сообщение
В первом массиве вообще нет отрицательных чисел
ну так он Вам и не выдает индексы элементов массива А, потому что там нет отрицательных чисел - 2,4,6,8
Цитата Сообщение от blackb00m Посмотреть сообщение
а во втором их индексы - 1 и 2.
Ну так Вы сами везде начинаете отсчет с единицы! Значит у -3 индекс 1, а у -6 индекс 2. Так в чем проблема?

Добавлено через 2 минуты
Ваш вывод:
C++
1
2
3
4
5
6
7
void write_mas (int *mas, int mas_size)
{
    for (int i = 0; i<mas_size; i++)
    {
        cout<<"Индексы отрицательных элементов массива: "<<mas[i]<<'\n';
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2013, 04:46     Возврат массива из функции
Еще ссылки по теме:

C++ Расчёт значений двумерного массива и их возврат в main() с однократным вызовом функции
C++ Возврат массива из функции
C++ Возврат массива из функции

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

Или воспользуйтесь поиском по форуму:
blackb00m
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 21
02.01.2013, 04:46  [ТС]     Возврат массива из функции #9
Тьфу, блин. Спасибо.
Там ещё напутал с выводом кое-где. Спасибо за помощь.
Yandex
Объявления
02.01.2013, 04:46     Возврат массива из функции
Ответ Создать тему
Опции темы

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