Воскресенье, 17 Ноября 2024, 14:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Возвращение значения функции
JSentДата: Среда, 09 Апреля 2014, 22:40 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Прошу помочь найти ошибку.

Задача: Описать функцию Sign(X) целого типа, возвращающую для вещественного числа X следующие значения: –1, если X < 0; 0, если X = 0; 1, если X > 0. С помощью этой функции найти значение выражения Sign(A) + Sign(B) для данных вещественных чисел A и B.

Вот что я сделал:

Код
#include <conio.h>
#include <stdio.h>
#include <math.h>   

float Sign(float& X)
{
    if(X<0) return -1;
    if(X=0) return 0;
    if(X>0) return 1;    
}

int main()
{
    float A, B;
     
    printf("Write 2 numbers, please:\n");
    scanf("%f %f", &A, &B);
     
    printf("Result: %f", Sign(A)+Sign(B));
      
    getch();
    return 0;

}



Но функция постоянно возвращает 0. Что не так?

Добавлено (09.04.2014, 22:40)
---------------------------------------------
Сделал сам biggrin :
Код
#include <conio.h>
#include <stdio.h>
#include <math.h>

int Sign(float& X)
{
if(X<0) return -1;
else
if(X==0) return 0;
else
if(X>0) return 1;
}

int main()
{
float A, B;

printf("Write 2 numbers, please:\n");
scanf("%f %f", &A, &B);

printf("Result: %d", Sign(A)+Sign(B));

getch();
return 0;

}

Оказывается return не только возвращает значение, но и выходит из функции.


Программист — человек, больной тяжёлой формой поражения коры головного мозга — интеллектом, который выражается в маниакально-деструктивном стремлении писать непонятные и бессмысленные наборы символов и словосочетаний.

Сообщение отредактировал JSent - Среда, 09 Апреля 2014, 22:41
lvovandДата: Среда, 09 Апреля 2014, 22:48 | Сообщение # 2
старожил
Сейчас нет на сайте
а при чем return,
у тебя в сравнении с нулем ошибка была
if(X=0) return 0;

тут делалось присвоение а не сравнение, ну собственно сам все исправил уже


Разработка и продвижение сайтов. Дизайн
плюсыдляслабоумныхДата: Вторник, 15 Апреля 2014, 16:32 | Сообщение # 3
уже был
Сейчас нет на сайте
После else действие выполнается по-любому, если пред if обломан(читай не выполнился). Тут те нужен else if, причем в обоих вариантах. В принципе и так все верно, но плохочитабельно. Я бы ради вариации забабахал вариант со свичем, и выкинул бы борландовскую конио

Низкоуравневое быдлопрограммирование, обнуляй массив через мемсет

Сообщение отредактировал плюсыдляслабоумных - Вторник, 15 Апреля 2014, 16:36
-l33t-h4xx-Дата: Среда, 16 Апреля 2014, 09:36 | Сообщение # 4
участник
Сейчас нет на сайте
Ещё одно замечание (да, мы тут все зануды): нет никакого смысла передавать X по ссылке, то есть, совсем хорошо было бы убрать & из заголовка.
Код
float Sign(float X)


Как правильно задавать вопросы

Сообщение отредактировал -l33t-h4xx- - Среда, 16 Апреля 2014, 09:36
KamiRoninДата: Четверг, 08 Мая 2014, 10:37 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Код

function float Sign(float X){  return X == 0 ? 0 : X > 0 ? : 1 : -1;  }

ток зачем там float на выходе если заранее известно что всегда будет целое число?


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг