Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2012, 23:26   #1
Gtnz8
Пользователь
 
Аватар для Gtnz8
 
Регистрация: 09.08.2012
Сообщений: 95
Смех Функция.

Когда функция не возвращает значение то действует как простой оператор,тут всё понятно, а вот когда она возвращает значение, что-то не могу понять зачем?


Код:
#include <iostream.h>

int add_values (int a, int b)

{
   return (a+ b);
}

void main (void)

{
   cout << " 100 + 200 = " << add_values(100, 200) << endl;
   cout << " 500 + 501 = " << add_values(500, 501) << endl ;
   cout << "-1 + 1 = " << add_values(-1, 1) << endl;
}

Последний раз редактировалось Stilet; 10.08.2012 в 09:31.
Gtnz8 вне форума Ответить с цитированием
Старый 09.08.2012, 23:36   #2
iDeBugger
 
Аватар для iDeBugger
 
Регистрация: 12.03.2011
Сообщений: 4
По умолчанию

Что значит «зачем»? Зачем нужны функции, возвращающие значения? Для использования в качестве параметров к другим функциям, в основном Например, к функции сложения:

Код:
int sum = func1 + func2;
Код выше вызовет сначала func1, затем func2, затем поместит сумму их результатов в новую переменную sum. При использовании подобных функций также повышается читабельность кода. К примеру, функцию можно назвать GetMonth, и она будет возвращать текущий месяц. То есть ее можно будет использовать как номер месяца в любом месте кода

P.S. Используйте выделение кода. Значок «#» над полем ввода

Последний раз редактировалось iDeBugger; 09.08.2012 в 23:41.
iDeBugger вне форума Ответить с цитированием
Старый 10.08.2012, 00:04   #3
Gtnz8
Пользователь
 
Аватар для Gtnz8
 
Регистрация: 09.08.2012
Сообщений: 95
По умолчанию

Спасибо за ответ, с одной стороны вроде бы всё понятно,а с другой - есть что-то неуловимое во всё этом.По образованию я инженер-химик и полагал что химия одна из самых сложных наук, выходит что не так.
"Забыл программист поставить запятую, и спутник улетел в другую сторону".
Gtnz8 вне форума Ответить с цитированием
Старый 10.08.2012, 00:48   #4
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

просто в вашем случае функция выполняет простое сложение двух чисел, действительно проще использовать оператор +. Однако в функциях может быть больше чем одно действие использование функций может значительно уменьшить код и сделать его более понятным. Допустим вам нужно найти среднее значение двух чисел.

Код:
#include <iostream>

using namespace std;

int average2int(int a, int b)
{
	int temp = a + b;
	float result = temp / 2;
	return result;
}

int main()
{
	int a, b, c, d, e, f, g, j;
	
	a = 4;
	b = 4;

	c = 6;
	d = 9;

	e = 8;
	f = 11;

	g = 2;
	j = 15;

	// calc the averages

	int tempAB = a + b;
	int avgAB  = tempAB / 2;
	cout << "Average of A and B is " << avgAB << endl;

	int tempCD = c + d;
	int avgCD = tempCD / 2;
	cout << "Average of C and D is " << avgCD << endl;

	// and so on ...

	cout << endl;
	// 2nd method
	cout << "Average of A and B is " << average2int(a, b) << endl;
	cout << "Average of B and C is " << average2int(b, c) << endl;
	cout << "Average of C and D is " << average2int(c, d) << endl;
	cout << "Average of D and E is " << average2int(d, e) << endl;
	cout << "Average of E and F is " << average2int(e, f) << endl;
	cout << "Average of F and G is " << average2int(f, g) << endl;
	cout << "Average of G and J is " << average2int(g, j) << endl;
	
	system("pause");
	return 0;
}
Без использования функции я посчитал среднее значение двух пар чисел, с использованием функции больше, в этом примере я хотел показать как использование функций уменьшает количество кода. Функции целесообразно использовать не только для сокращения кода а для разделения его на логические единицы, но это можно понять написав определенное количество строк кода,

Если вы серьезно хотите изучить какой-то язык программирования найдите хорошую книгу по нему, просто код, который вы написали это смесь двух языков программирования Си и С++.

Последний раз редактировалось rUs_LAN; 10.08.2012 в 01:19.
rUs_LAN вне форума Ответить с цитированием
Старый 10.08.2012, 01:01   #5
Gtnz8
Пользователь
 
Аватар для Gtnz8
 
Регистрация: 09.08.2012
Сообщений: 95
По умолчанию

Я учусь на этом сайте около двух недель, когда есть время, уже дошел до функций.http://www.programmersclub.ru/main/
В принципе всё более менее ясно, но иногда бывает очень нужна помощь.
Интересно, а где в приведённом мною коде, пример использования языка С ?
Спасибо за помощь.

Последний раз редактировалось Gtnz8; 10.08.2012 в 01:09.
Gtnz8 вне форума Ответить с цитированием
Старый 10.08.2012, 01:17   #6
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

Ну начнем с того что ваш код так и не запустился у меня на

Visual Studio 2012 RC
Qt Creator
wxDev-C + +

в с + + функция main должна возвращать значение типа int а не void насколько я помню в чистом си она могла быть типа void (не знаю как сейчас).

зашел я на сайт нашего форума, уроков по С++ я там так и не нашел может плохо искал но скорее всего вы ошиблись ссылкой

я в конце не дописал пару ++, исправил

Последний раз редактировалось rUs_LAN; 10.08.2012 в 01:20.
rUs_LAN вне форума Ответить с цитированием
Старый 10.08.2012, 10:11   #7
Gtnz8
Пользователь
 
Аватар для Gtnz8
 
Регистрация: 09.08.2012
Сообщений: 95
По умолчанию

Этот код действительно не запускается, его немножко надо переделать : в iostream убрать расширение h. вместо void main(void) надо написать int main() ну и добавить return 0; и код заработает. Я работаю в среде CodeBlocks.
Сейчас прошел по своей ссылке и *Учебник по С++ для начинающих* оказался на месте, странно.
Gtnz8 вне форума Ответить с цитированием
Старый 10.08.2012, 11:57   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
ну и добавить return 0;
Не обязательно.

Цитата:
насколько я помню в чистом си она могла быть типа void (не знаю как сейчас).
Что вы понимаете под "чистым си"? С89 или С99 или еще ранние?
p51x вне форума Ответить с цитированием
Старый 10.08.2012, 17:00   #9
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

да я не то слово употребил, я имел ввиду что когда то в си можно было так писать.
rUs_LAN вне форума Ответить с цитированием
Старый 10.08.2012, 23:29   #10
Gtnz8
Пользователь
 
Аватар для Gtnz8
 
Регистрация: 09.08.2012
Сообщений: 95
По умолчанию

#include <iostream>

void get_values(int array[], int number_of_elements)

{
int i;
for (i = 0; i < number_of_elements; i++)

{
cout “ "Введите значение " << i << endl;
cin >> array [i];
}
}

int main()

{
int numbers[3];
get_values(numbers, 3);
cout << "Значения массива" << endl;
for (int i = 0; i < 3; i++)
cout << numbers [i] << endl;
}

Последний раз редактировалось Gtnz8; 11.08.2012 в 00:37.
Gtnz8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Функция Andreima Помощь студентам 0 05.06.2012 20:05
Функция Yara24 Помощь студентам 1 28.05.2010 17:29
функция пз Ирина Общие вопросы Delphi 0 05.04.2010 23:22
Функция Lemo Помощь студентам 1 02.12.2008 00:24
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50