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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2011, 21:39   #1
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию Как передать значение функции ?

В идеале требовалось написать программу, где функция возвращала значение в main, а при вводе нуля - выходила.
В принципе получилось вот что, есть сомнения, вроде бы работает, но как-то терзают меня сомнения, что функция работает не корректно, не могли бы проверить, все ли работает ?

Код:
#include <iostream>

using namespace std;
double summa (int xx, int yy);

int main()
{
	int x, y;
	cout << "Please enter x and y:" << endl;
	
	while ((cin >> x >> y) && y != 0)
	{
		cout << "Summa: " << summa (x, y) << endl;
		cout << "Next two: ";
	}
	
	cout << "Bye";
	return 0;
}
double summa (int xx, int yy)
{
	int x = xx;
	int y = yy;
	int summa = 0;
	summa = 2 * x * y / (x + y);

	return summa;
}
Подскажите, как можно передать значение x и у на них из main ?

Последний раз редактировалось L6go1as; 25.11.2011 в 21:42.
L6go1as вне форума Ответить с цитированием
Старый 26.11.2011, 17:02   #2
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

[QUOTE=L6go1as;922181]В идеале требовалось написать программу, где функция возвращала значение в main, а при вводе нуля - выходила.
В принципе получилось вот что, есть сомнения, вроде бы работает, но как-то терзают меня сомнения, что функция работает не корректно, не могли бы проверить, все ли работает ?

Код:
#include <iostream>

using namespace std;
double summa (int xx, int yy);

int main()
{
	int x, y;
	cout << "Please enter x and y:" << endl;
	
	while ((cin >> x >> y) && y != 0)
	{
		cout << "Summa: " << summa (x, y) << endl;
		cout << "Next two: ";
	}
	
	cout << "Bye";
	return 0;
}
double summa (int xx, int yy)
{
	int x = xx;
	int y = yy;
	int summa = 0;
	summa = 2 * x * y / (x + y);

	return summa;
}

Совершенно не понятно, что вы хотите? Что нужно сделать с вашей функцией summa

Что касается условия цикла, то я бы его изменил следующим образом

Код:
	while ((cin >> x ) && x != 0 && ( cin >> y ) && y != 0 )
то есть сделал бы выход из цикла, как только пользователь введет 0.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 26.11.2011, 18:02   #3
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Да в принципе ничего, просто интересно, можно ли значение из int main - x, y перетащить в функцию summa, что бы не использовать int x = xx, int y = yy.
L6go1as вне форума Ответить с цитированием
Старый 26.11.2011, 18:39   #4
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от L6go1as Посмотреть сообщение
Да в принципе ничего, просто интересно, можно ли значение из int main - x, y перетащить в функцию summa, что бы не использовать int x = xx, int y = yy.
А вам совершенно не нужны эти объявления. Вы можете написать просто

Код:
double summa( int x, int y )
{
   return ( 2.0 * x * y  /  ( x + y ) );
}

Обратите внимание на важность записи константы 2.0, а не просто 2, как было у вас. Так как в противном случае у вас будет целочисленная арифметика, и дробные части будут отброшены.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 26.11.2011, 18:58   #5
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Да это уже и сам поменял ибо вспомнил что накой мне просто 2, если double ? )
Что до функции, спасибо, помог с ней разобраться. Функции чего-то у меня сложно идут ... хотя и понимаю, что ничего сложного в них в принципе нет, но вот как-то понимание - притормаживает...

А не подскажите как вывести на печать значения массива из функции?

Например нужно вывести значения, символ, за символом из массива ввод которого осуществляется функцией.

Функция ввода-возврата значения:
Код:
int enter (int art[], int x)
{
	for (int i = 0; i < arrsize; i++)
	{
		cout << "Please enter numver: ";
		cin >> art[i];
	}
	return art[x];
}
Функция печати:
Код:
void display (arr[])
{
for (int j = 0; j < arrsize; j++)
{
cout << arr[j];
}
}
Битый час бьюсь, ничего не получается, выручайте братцы.

Последний раз редактировалось Stilet; 27.11.2011 в 12:06.
L6go1as вне форума Ответить с цитированием
Старый 26.11.2011, 22:01   #6
blacktener
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 78
По умолчанию мда

странные у тебя функции какие то.
если я правильно понял тебе надо функция которая заполняет массив и функция которая выводит значения массива. непонятно чу тут сложного
вот заполнение
Код:
void init(int a[], int size){
    for (int i=0; i<size; i++){
        cout << "enter element: ";
        cin >> a[i];
    }
}
а фнукция вывода у тебя вроде правильная
blacktener вне форума Ответить с цитированием
Старый 26.11.2011, 22:20   #7
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Ппц, битый час бьюсь, а ошибка в том, что вывожу на печать массив не тот что вводил, а тот который создавал, в итоге на печати не то ...

Вот что за жесть, ошибка то фигня, а прога не работала %(
L6go1as вне форума Ответить с цитированием
Старый 26.11.2011, 23:58   #8
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

Не хотел бы вас обижать, но похоже вы туго воспринимаете то, что вам уже приводили в качестве примера.
Вот мое сообщение вам же
http://programmersforum.ru/showpost....0&postcount=12
где вы просили отдельную ф-ию на заполнение массива структур и отдельную ф-ию на печать массива структур. Разница между тем, что было и тем, что сейчас - вместо структур у вас теперь инты.
_Ч_ вне форума Ответить с цитированием
Старый 27.11.2011, 05:52   #9
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от L6go1as Посмотреть сообщение
А не подскажите как вывести на печать значения массива из функции?

Например нужно вывести значения, символ, за символом из массива ввод которого осуществляется функцией.

Функция ввода-возврата значения:
Код:
int enter (int art[], int x)
{
	for (int i = 0; i < arrsize; i++)
	{
		cout << "Please enter numver: ";
		cin >> art[i];
	}
	return art[x];
}
Функция печати:
Код:
void display (arr[])
{
for (int j = 0; j < arrsize; j++)
{
cout << arr[j];
}
}
Битый час бьюсь, ничего не получается, выручайте братцы.
У вас здесь две ошибки. Во-первых, не имеет смысла для функции enter что-то возвращать. К тому же вы пытаетесь вернуть элемент, который лежит за пределами вашего масива. Так как вы передали размерность массива в переменной x, а последний элемент массива имеет индекс x -1, так как нумерация элементов массива начинается с 0.

Поэтому проще было определить функцию как

Код:
void enter (int art[], int n);
Что касается функции вывода на печать, то вы ей не передали информацию о размерности массива. Она должна иметь то же самое объявление, что и функция ввода

Код:
void display ( int arr[], int n );
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 27.11.2011, 12:00   #10
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Цитата:
просто интересно, можно ли значение из int main - x, y перетащить в функцию summa, что бы не использовать int x = xx, int y = yy.
Можно. Почитайте про указатели.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как передать значение ячейки в другую книгу? ShamanK Microsoft Office Excel 9 21.02.2017 01:52
Как передать значение из DBText в edit? smaw1989 БД в Delphi 12 25.12.2010 11:35
Как передать значение пременной из одной функции в другую? mr.-parker Общие вопросы C/C++ 2 27.03.2010 15:01
Как передать результат функции как Array of Byte? Alex Cones Общие вопросы Delphi 4 05.12.2009 18:55
Как передать значение переменной из функции в ACCESSе в функцию в EXCELе? musicitsme Microsoft Office Access 1 01.04.2009 10:24