Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 12.10.2013
Сообщений: 31
1

Как вернуть 2 значения из функции?

30.05.2014, 20:44. Показов 3525. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. У меня такой вопрос - как в этой проге можно вернуть 2 значения из функции?
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
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
 
#pragma argsused
int a[50][50];
int ras(int,int,int,int,int);
void main()
{int i,j,k,m,n,p,r,min;
 printf("Vvedite razmernost:\n");
 scanf("%d %d",&n,&m);
 printf("Vvedite elementy:\n");
 for(i=0;i<n;i++)
 for(j=0;j<m;j++)
 scanf("%d",&a[i][j]);
printf(" n | i | j | resultat \n");
printf("_____________________\n");
p=1;
for(i=0;i<n;i++)
 {for(j=0;j<m;j++)
  {r=ras(a[i][j],i,j,m,n);
   printf(" %d | %d | %d | %d \n",p,i,j,r);
   printf("_____________________\n");
   p=p+1;
  }
 }
 getch();
}
int ras(int b,int i,int j,int m,int n)
{int min,k;
 min=a[i][j];
  if(i==0)
 {for(k=1;k<=j;k++)
  if(min<a[i][k])
  min=a[i][k];
 }
 for(k=j;k<=m;k++)
 if(min<a[i-1][k])
 min=a[i-1][k];
 return min;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2014, 20:44
Ответы с готовыми решениями:

Как вернуть из функции два значения?
Подскажите,как вернуть из ф-ции 2 значения .Вроде ,как то можно с помощью pair ,но как здесь это...

Как вернуть сразу 2 значения из функции?
Есть функция, которая генерирует 2 параметра. Как сделать так, чтобы функция их вернула? Оба сразу?

Как вернуть из функции два значения
Доброго времени суток! Подскажите, пожалуйста, как вернуть два значения: row и column из функции....

Как вернуть два значения из функции?
Ребят, нужно вернуть из функции два значения. Подскажите как. Без массива public double...

7
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
30.05.2014, 20:47 2
Kirillgr, сделать глобальную переменную, либо добавить еще один аргумент - указатель, куда будешь записывать значение.
0
15 / 15 / 0
Регистрация: 22.10.2012
Сообщений: 336
30.05.2014, 20:55 3
В теории это так: создай массив int min[2]; запиши необходимые значения в элементы min[0] и min[1]; верни из функции массив min.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
30.05.2014, 21:02 4
Уж что-что, а глобальную переменную для этого лучше не делать.

Как еще один вариант — вернуть структуру.

Добавлено через 3 минуты
Цитата Сообщение от m@tem@tik Посмотреть сообщение
В теории это так: создай массив int min[2]; запиши необходимые значения в элементы min[0] и min[1]; верни из функции массив min.
Это в какой теории?
0
1 / 1 / 0
Регистрация: 12.10.2013
Сообщений: 31
30.05.2014, 21:35  [ТС] 5
Спасибо, вот только как это реализовать?
0
15 / 15 / 0
Регистрация: 22.10.2012
Сообщений: 336
30.05.2014, 21:38 6
korvin_, это было сказано к слову, как вводная фраза.
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
30.05.2014, 21:47 7
Цитата Сообщение от m@tem@tik Посмотреть сообщение
это было сказано к слову, как вводная фраза.
Тогда не стоило этого советовать. В Си нельзя вернуть из процедуры массив. Можно вернуть указатель на массив, но память под int v[2], объявленный внутри процедуры, будет выделена на стеке и освобождена сразу, как только процедура завершится. Можно конечно создавать массив с помощью malloc, но к чему эти лишние телодвижения? Самый простой и часто используемый вариант уже описал Вованя — использовать указатели.
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
30.05.2014, 22:09 8
Цитата Сообщение от Kirillgr Посмотреть сообщение
Спасибо, вот только как это реализовать?
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
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
 
#pragma argsused
int a[50][50];
int ras(int,int,int,int,int,int*);
void main()
{int i,j,k,m,n,p,r,min, rez;
 printf("Vvedite razmernost:\n");
 scanf("%d %d",&n,&m);
 printf("Vvedite elementy:\n");
 for(i=0;i<n;i++)
 for(j=0;j<m;j++)
 scanf("%d",&a[i][j]);
printf(" n | i | j | resultat \n");
printf("_____________________\n");
p=1;
for(i=0;i<n;i++)
 {for(j=0;j<m;j++)
  {r=ras(a[i][j],i,j,m,n,&rez);
   printf(" %d | %d | %d | %d | %d \n",p,i,j,r, rez);
   printf("_____________________\n");
   p=p+1;
  }
 }
 getch();
}
int ras(int b,int i,int j,int m,int n, int *rez)
{int min,k;
 min=a[i][j];
  if(i==0)
 {for(k=1;k<=j;k++)
  if(min<a[i][k])
  min=a[i][k];
 }
*rez = min;
 for(k=j;k<=m;k++)
 if(min<a[i-1][k])
 min=a[i-1][k];
 return min;
}
1
30.05.2014, 22:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2014, 22:09
Помогаю со студенческими работами здесь

Как можно вернуть из функции более 1 значения?
Matlab. Как можно вернуть из функции более 1 значения? Может как-нибудь типа указателя как это...

Как вернуть больше одного значения из функции?
здрасти, как быть если функция должна возвратить не 1 значение а 2?

Как вернуть сразу 2 значения массива в функции?
Собственно дан у меня например массив &quot;aa&quot;, где l-левая граница, а r-правая. При выполнении кода...

Вернуть из функции 2 значения
Как вернуть из функции 2 значения? Нужно вернуть строку и ее длину, но чтобы функция SendData() не...


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

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