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

return - C++

Восстановить пароль Регистрация
 
Apelsin199
11 / 11 / 1
Регистрация: 04.11.2012
Сообщений: 127
18.04.2013, 08:47     return #1
Вот такой вопрос, как вернуть значения из функции, и чтоб функция main это узнала?
если на примере, то во так, допучтим есть функция задания промежудка от А до Б
C++
1
2
3
4
5
6
int entry_period(int A, int B)
{
    printf("Введите промежуток од А до B: ");
    scanf("%d %d", &A,&B);
    return A, B;
}
и есть маин функция
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
int main()
{
    setlocale(LC_ALL,"rus");
    int A=0,B=0;
    float sr=0;
    int *C,c;
    int buf;
    int amount=0;
           //проблемав  том, что после выполнения функции, А и В равны нулю, а не тому, что я ввел...
    entry_period(A,B);
    input_C_elements(c,C,A,B);
    if((B-A)<=amount)
    {
        printf("Аварийный выход!");
        getch();
        return 0;
    }
    printf("\nРазмер массива = %d", (B-A-amount));
    int *mas;
    mas=new int[B-A];
    printf("\nВведите элементы массива удовлетворяющие следующим свойствам:");
    printf("\n1. Элементы массива должны находится в промежудке от %d до %d", A,B);
    printf("\n2. Элеменами массива не могут быть следующие числа: ");
    for(int i=0;i<c;i++)
    {
        printf("%d ",C[i]);
    }
    for(int i=0;i<(B-A-amount);i++)
    {
        printf("\nВведите %d элемент массива ",i+1);
        scanf("%d",&buf);
        for(int j=0;j<c;j++)
        {
            if(buf==C[j])
            {
                printf("\nВведенное число равно запрещенному числу! а именно %d", C[j]);
                printf("\n****************Повторите ввод!****************\n");
                if(i==-1)
                {
                    i=-1;
                }
                else
                {
                    i--;
                }
                break;
            }
        }
        if(buf<A || buf>B)
        {
            printf("\nВведенное число не входит в промежуток от %d до %d", A,B);
            printf("\n****************Повторите ввод!****************\n");
            i--;
        }
        else
        {
            mas[i]=buf;
        }
    }
    printf("\n*************Нахождение среднего арифмитического************\n");
    for(int i=0;i<(B-A-amount);i++)
    {
        sr=sr+mas[i];
    }
    sr=sr/(B-A-amount);
    printf("\nСреднее арифмитическое равно: %f", sr);
    getch();
    return 0;
}
после выполнения функции в майне переменные А и Б равны нулю, а не тому что я ввел ;(

Добавлено через 2 минуты
И сразу дополнение... Если я в функции ввожу массив элементов, как мне передать этот массив в main, опять же на примере...
Вот функция ввода массива:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int input_C_elements(int c, int *C, int A, int B)
{
    int amount=0;
    printf("\nВведите колличество С-элементов ");
    scanf("%d",&c);
    C=new int[c];
    printf("\nВведите С-элементы:\n");
    for(int i=0;i<c;i++)
    {
        printf("Введите %d С-элемент ", i+1);
        scanf("%d",&C[i]);
        if(C[i]>=A && C[i]<=B)
        {
            amount++;
        }
    }
    return c, *C, amount;
}
Ну а main есть выше. как сделать так, чтоб маин знал, что хранится в массиве, который я ввел?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2013, 08:47     return
Посмотрите здесь:

C++ В чем разница между return и return false/true
C++ Return
C++ return
Return C++
Как сделать так, что если файл существует return true, если нет - return false C++
C++ return (n<0) ? -n:n;
return *this; C++
с++ while return C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
18.04.2013, 08:57     return #2
C++
1
2
3
4
5
void entry_period(int &A, int &B)
{
    printf("Введите промежуток од А до B: ");
    scanf("%d %d", &A,&B);
}
в мейне просто вызвать функцию, и передать туда параметры А и В
с++ функция возвращает одно значение, не путайте с lua и другими подобными языками
если надо вернуть несколько, можно использовать структры или классы, но на самом деле это опять возвращается одно значение.

C++
1
2
3
4
5
6
7
8
int *input_massiv(int size)
{
    int *mas=new int[size];
    for(int i=0; i<size; i++)
         //как-то заполняем массив
         mas[i]=i;
    return mas;
}
в мейне делать так
C++
1
2
3
4
5
int main(void)
{
int *a;
a=input_massiv(5);
}
Yandex
Объявления
18.04.2013, 08:57     return
Ответ Создать тему
Опции темы

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