Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поясните пожалуйста по функции 
V
    Опции темы
Kruger2
Дата 22.6.2011, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Написал функцию подсчета гипотенузы:


Код

#include <stdio.h>
#include <math.h>
 
double hypotenuse (double a, double b, double c)
{
   b= 3.0;    
   c= 4.0;
        a= pow(b, 2) + pow(c, 2);
   return sqrt(a);
}
main ()
{
     double x,y, z;
     printf("%.2f ", hypotenuse (x, y, z));
     
system("pause");
return 0;
}


Вопросы: 
1.Присваивание значений b=3 и с=4 можно задать как то правильнее или в другом месте? Ну кроме #define и глобальных переменных.
2. 
Код
 printf("%.2f ", hypotenuse (x, y, z)); 
 при вызове функции hypotenuse я должен указать три аргумента функции, иначе компилятор выдает ошибку. Хотя я возвращаю из функции только одно значение, а этих аргументов x, y, z нигде нет и непонятно откуда они берутся. Должны ли эти аргументы быть любыми переменными? В книге вычитал фразу, что х получал значение в у, но непонятен смысл.
PM MAIL   Вверх
bsa
Дата 22.6.2011, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



смотри, твоя функция принимает три аргумента типа double (a, b и с). Если посмотреть на реализацию, то становится понятно, что эта функция возвращает у тебя константу - т.е. возвращаемое значение никак не зависит от входных параметров.
Логично было сделать так:
Код
double hypotenuse(double b, double c)
{
   double a2= b*b + c*c;
   return sqrt(a2);
}

int main()
{
   double a, b, c;
   printf("input b="); fflush(stdout);
   scanf("%lf", &b);
   printf("input c="); fflush(stdout);
   scanf("%lf", &c);
   a = hypotenuse(b, c);
   printf("result: a = %f\n", a);
   return 0;
}

PM   Вверх
Kruger2
Дата 22.6.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Да, так логичнее, просто в задаче b и c были определенны заранее.

Но всё равно при вызове функции hypotenuse указывается два аргумента, в вашем случае b и c, но могут быть и любые другие. Тогда какой в них смысл, если туда можно подставить любые переменные и ничего не изменится?:(

Это сообщение отредактировал(а) Kruger2 - 22.6.2011, 13:23
PM MAIL   Вверх
RastaDja
Дата 22.6.2011, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: 3
Всего: 5



Цитата(Kruger2 @  22.6.2011,  14:22 Найти цитируемый пост)
Но всё равно при вызове функции hypotenuse указывается два аргумента, в вашем случае b и c, но могут быть и любые другие. Тогда какой в них смысл, если туда можно подставить любые переменные и ничего не изменится?:(

 smile как это ничего не изменится? Изменится значение переменной "а"! Ты пример запускал?

Это сообщение отредактировал(а) RastaDja - 22.6.2011, 13:36


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
bsa
Дата 22.6.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Kruger2, для константных значений мой код можно сделать таким:
Код
double hypotenuse(double b, double c)
{
   double a2= b*b + c*c;
   return sqrt(a2);
}

int main()
{
   double a;
   a = hypotenuse(3.0, 4.0);
   printf("result: a = %f\n", a);
   return 0;
}
Отличия от первого варианта видишь?
PM   Вверх
Kruger2
Дата 23.6.2011, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Вижу, спасибо.

bsa + в репу от меня пожалуйста поставьте.
PM MAIL   Вверх
RastaDja
Дата 23.6.2011, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: 3
Всего: 5



Цитата(Kruger2 @  23.6.2011,  11:54 Найти цитируемый пост)
bsa + в репу от меня пожалуйста поставьте. 

поставил



--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.