Функция, которая возвращает несколько значений
Функция F1, которая не принимает и не возвращает значений, но выводит на экран любое сообщение
На языке С/C++ написать программу в которой имеется функция F1, которая не принимает и не.

Функция, которая возвращает string
Всем привет. Есть пример самого элементарного многофайлового проекта, но он не хочет.

Функция, которая возвращает структуру
Не поддаётся компиляции. В чём дело? Как с этим работать? Не нашёл ответа и буду благодарен, если.
Функция которая возвращает класс
Есть функция считывания вектора с формы Вызов функции выглядит так .
![]()
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
Либо ссылки, либо указатели, либо описать структуру, представляющую весь набор желаемых значений и возвращать её экземпляр.
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
Нет, функция возвращает только одного значение, или вообще ничего.
Но можно сделать так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#include void func (int *x, int *y) { *x+=5; *y+=3; } int main (void) { int a=5; int b=10; std::cout "Before: a=" a "; b=" b; std::cout std::endl; func (&a, &b); std::cout "After: a=" a "; b=" b; std::cout std::endl; return 0; }
Как вернуть сразу несколько значений из функции в Python 3
Сегодня мы делимся с вами переводом статьи, которую нашли на сайте medium.com. Автор, Vivek Coder, рассказывает о способах возврата значений из функции в Python и объясняет, как можно отличить друг от друга разные структуры данных.

Фото с сайта Unsplash. Автор: Vipul Jha
Python удобен в том числе тем, что позволяет одновременно возвращать из функции сразу несколько значений. Для этого нужно воспользоваться оператором return и вернуть структуру данных с несколькими значениями — например, список общего количества рабочих часов за каждую неделю.
def hours_to_write(happy_hours): week1 = happy_hours + 2 week2 = happy_hours + 4 week3 = happy_hours + 6 return [week1, week2, week3] print(hours_to_write(4)) # [6, 8, 10]
Структуры данных в Python используются для хранения коллекций данных, которые могут быть возвращены посредством оператора return . В этой статье мы рассмотрим способы возврата нескольких значений с помощью подобных структур (словарей, списков и кортежей), а также с помощью классов и классов данных (Python 3.7+).
Способ 1: возврат значений с помощью словарей
Словари содержат комбинации элементов, которые представляют собой пары «ключ — значение» ( key:value ), заключенные в фигурные скобки ( <> ).
Словари, на мой взгляд, это оптимальный вариант для работы, если вы знаете ключ для доступа к значениям. Далее представлен словарь, где ключом является имя человека, а соответствующим значением — возраст.
people=
А теперь перейдем к функции, которая возвращает словарь с парами «ключ — значение».
# A Python program to return multiple values using dictionary # This function returns a dictionary def people_age(): d = dict(); d['Jack'] = 30 d['Kim'] = 28 d['Bob'] = 27 return d d = people_age() print(d) #
Способ 2: возврат значений с помощью списков
Списки похожи на массивы, сформированные с использованием квадратных скобок, однако они могут содержать элементы разных типов. Списки также отличаются от кортежей, поскольку являются изменяемым типом данных. То есть любой список может меняться.
Списки — одна из наиболее универсальных структур данных в Python, потому что им не обязательно сохранять однородность (в них можно включать строки, числа и элементы). Иногда списки даже используют вместе со стеками или очередями.
# A Python program to return multiple values using list def test(): str1 = "Happy" str2 = "Coding" return [str1, str2]; list = test() print(list) # ['Happy', 'Coding']
Вот пример, где возвращается список с натуральными числами.
def natural_numbers(numbers = []): for i in range(1, 16): numbers.append(i) return numbers print(natural_numbers()) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Способ 3: возврат значений с помощью кортежей
Кортежи — это упорядоченные неизменяемые объекты в Python, которые обычно используются для хранения коллекций неоднородных данных.
Кортежи напоминают списки, однако их нельзя изменить после того, как они были объявлены. А еще, как правило, кортежи быстрее в работе, чем списки. Кортеж можно создать, отделив элементы запятыми: x, y, z или (x, y, z) .
На этом примере кортеж используется для хранения данных о сотруднике (имя, опыт работы в годах и название компании).
Bob = ("Bob", 7, "Google")
А вот пример написания функции для возврата кортежа.
# A Python program to return multiple values using tuple # This function returns a tuple def fun(): str1 = "Happy" str2 = "Coding" return str1, str2; # we could also write (str1, str2) str1, str2= fun() print(str1) print(str2) # Happy Coding
Обратите внимание: мы опустили круглые скобки в операторе return , поскольку для возврата кортежа достаточно просто отделить каждый элемент запятой (как показано выше).
Не забывайте, что кортеж можно создать с помощью запятой вместо круглых скобок. Круглые скобки требуются только в тех случаях, когда используются пустые кортежи или вам нужно избежать синтаксической неточности.
Чтобы лучше разобраться в кортежах, обратитесь к официальной документации Python 3 (документация приведена на английском языке. — Прим. ред.).
Ниже показан пример функции, которая использует для возврата кортежа круглые скобки.
def student(name, class): return (name, class) print(student("Brayan", 10)) # ('Brayan', 10)
Повторюсь, кортежи легко перепутать со списками (в конце концов, и те, и другие представляют собой контейнер, состоящий из элементов). Однако нужно помнить о фундаментальном различии: кортежи изменить нельзя, а списки — можно.
Способ 4: возврат значений с помощью объектов
Тут все так же, как в C/C++ или в Java. Можно просто сформировать класс (в C он называется структурой) для сохранения нескольких признаков и возврата объекта класса.
# A Python program to return multiple values using class class Intro: def __init__(self): self.str1 = "hello" self.str2 = "world" # This function returns an object of Intro def message(): return Intro() x = message() print(x.str1) print(x.str2) # hello world
Способ 5: возврат значений с помощью классов данных (Python 3.7+)
Классы данных в Python 3.7+ как раз помогают вернуть класс с автоматически добавленными уникальными методами, модулем typing и другими полезными инструментами.
from dataclasses import dataclass @dataclass class Item_list: name: str perunit_cost: float quantity_available: int = 0 def total_cost(self) -> float: return self.perunit_cost * self.quantity_available book = Item_list("better programming.", 50, 2) x = book.total_cost() print(x) print(book) # 100 Item_list(name='better programming.', perunit_cost=50, quantity_available=2)
Чтобы лучше разобраться в классах данных, обратитесь к официальной документации Python 3 (документация приведена на английском языке. — Прим. ред.).
Вывод
Цель этой статьи — ознакомить вас со способами возврата нескольких значений из функции в Python. И, как вы видите, этих способов действительно много.
Учите матчасть и постоянно развивайте свои навыки программирования. Спасибо за внимание!
- python 3
- python
- программирование для начинающих
- программирование
- функции
- data science
- Блог компании Plarium
- Python
- Программирование
Как вернуть через функцию два значения в C++?
Суть : Допустим у нас есть функция, в результате выполнения действий внутри нее мы получаем значения переменных, которые нам необходимо вернуть. Как это сделать? И как при вызове присвоить эти значения двум переменным одновременно?
Отслеживать
218k 15 15 золотых знаков 118 118 серебряных знаков 229 229 бронзовых знаков
задан 11 дек 2017 в 15:55
Vlad Kvochin Vlad Kvochin
514 1 1 золотой знак 5 5 серебряных знаков 15 15 бронзовых знаков
Передать указатель на одно из возвращаемых значений и записать по нему. Второе — через return, например.
11 дек 2017 в 15:56
Как этим указателем воспользоваться вне функции, можно пример?
11 дек 2017 в 15:57
Читайте учебники про указатели и ссылки
11 дек 2017 в 15:58
Используйте structured binding.
11 дек 2017 в 16:00
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
- вернуть структуру или кортеж (пару) с двумя полями
- использовать передачу параметров по ссылке или через указатель.
Например, считать сумму и разность двух переменных:
std::pair sumdif(ina a, int b) < return pair(a+b,a-b); > void sumdif(int a, int b, int& sum, int& dif) < sum = a+b; dif = a-b; >. int a = 5, b = 7; auto p = sumdif(a,b); cout
int a = 5, b = 7, s, d; sumdif(a,b,s,d); cout
Дополнение через 3 года 🙂 - теперь можно использовать новый вариант синтаксиса структурного связывания:
std::pair sumdif(int a, int b) < return pair(a+b,a-b); > . int a = 5, b = 7; auto [s,d] = sumdif(a,b); cout
Отслеживать
ответ дан 11 дек 2017 в 15:57
218k 15 15 золотых знаков 118 118 серебряных знаков 229 229 бронзовых знаков
Дополню ответ @Harry
Если под рукой компилятор с поддержкой 11 ого (и выше) стандарта, то можно воспользоваться std::tuple и вернуть его из функции, эдакое обобщение на std::pair для произвольноно числа элементов с разными типами
std::tuple f() < std::tuplet = < -1, 123 >; // . return t; > std::tuple g() < std::tuplet = < -1, false, 123 >; // . return t; >
Отслеживать
ответ дан 11 дек 2017 в 18:59
3,681 1 1 золотой знак 17 17 серебряных знаков 31 31 бронзовый знак
- c++
- функции
- структурное-связывание
-
Важное на Мете
Связанные
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Возврат нескольких значений из функции в C
В этом посте будет обсуждаться, как вернуть несколько значений из функции в C.
Мы знаем, что синтаксис функций в C не позволяет нам возвращать несколько значений. Но программистам часто нужно возвращать из функции несколько значений. К счастью, в C есть несколько обходных путей для возврата нескольких значений.
1. Указатели в C
Мы можем использовать указатели в C для возврата более одного значения из функции, передавая указатели в качестве параметров функции и используя их для установки нескольких значений, которые затем будут видны в вызывающей функции.
// Функция для возврата нескольких значений с помощью указателей
void initialize ( int * a , int * b , char * c )
// Возвращаем несколько значений из функции в C
int main ( void )
initialize ( & a , & b , & c ) ;
printf ( "a = %d, b = %d, c = %c" , a , b , c ) ;
результат:
a = 10, b = 20, c = A
2. Структуры в C
Мы также можем использовать структуры в C, чтобы возвращать более одного значения из функции. Мы знаем, что структура — это определяемый пользователем тип данных в C, который может содержать несколько типов данных одного или разных типов.
Идея состоит в том, чтобы создать структуру, содержащую в качестве членов все необходимые типы данных, и вернуть эту структуру из нашей функции. Затем мы можем получить нужные значения из структуры внутри нашей вызывающей функции.
// обернуть несколько значений в структуру
struct Tuple <
// Функция для возврата нескольких значений с использованием структуры
struct Tuple initialize ( )
struct Tuple tuple = < 10 , 20 , 'A' >;
return tuple ;
// Возвращаем несколько значений из функции в C
int main ( void )
struct Tuple tuple = initialize ( ) ;
a = tuple . a ;
b = tuple . b ;
c = tuple . c ;
printf ( "a = %d, b = %d, c = %c" , a , b , c ) ;
результат:
a = 10, b = 20, c = A
3. Массив
Мы видели, как возвращать значения различных типов данных из функции с помощью указателей и распорок. Теперь, если все значения имеют один и тот же тип данных, мы можем инкапсулировать значения в массив и вернуть этот массив, как показано ниже:
// Функция для возврата нескольких значений с использованием массива
int * initialize ( )
// Важно: динамически выделять память
int * temp = ( int * ) malloc ( sizeof ( int ) * 3 ) ;
* ( temp + 1 ) = 20 ;
* ( temp + 2 ) = 30 ;
return temp ;
// Возвращаем несколько значений из функции в C
int main ( void )
int a , b , c ;
int * arr = initialize ( ) ;
printf ( "a = %d, b = %d, c = %d" , a , b , c ) ;
// свободная память
результат:
a = 10, b = 20, c = 30
Мы не должны использовать этот подход, так как информация о переменной не передается вызывающей функции. Например, мы используем индекс массива для получения значений наших переменных. Также обратите внимание, что мы должны динамически размещать массив в куче. Если мы используем статический массив, он перестает существовать, когда мы выходим из функции, и доступ к нему внутри вызывающей функции приведет к неопределенному поведению.
Это все о возврате нескольких значений из реализации функции на C.
Также см:
Оценить этот пост
Средний рейтинг 4.69 /5. Подсчет голосов: 52
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
Подписывайся
5 Комментарии
Большинство голосов
Новейшие Самый старый
Встроенные отзывы
Просмотреть все комментарии
Просмотр комментариев
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации
- Все проблемы
- Практика DSA
- 100 самых популярных задач
- 50 лучших классических задач
- Лучшие алгоритмы
- Компилятор С/С++
- Компилятор Java
- Компилятор Python
- Компилятор JavaScript
- компилятор PHP
- Компилятор C#
- Свяжитесь с нами
- Политика конфиденциальности
- условия обслуживания
- Подпишитесь на новые публикации
Techie Delight © 2023 Все права защищены.
Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно
