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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2013, 15:43   #21
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Смотрите ОЧЕНЬ внимательно на 15 пост (на то, как передается num).
Там изначально было &num. Stilet, видимо, по привычке поставил адрес, не обратив внимания, что передаётся ссылка, а не указатель.
Abstraction вне форума Ответить с цитированием
Старый 13.04.2013, 17:53   #22
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Код:
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

double modf(double num, double *i);

void round( double &num);

void round( double &num)
{
 num = (num >= 0) ? (num + 0.5) : (num - 0.5);
}     
int main()

{ 
    double *i, num;
  
  cout<<"Vvedite chislo: ";
    cin>>num;
    
round(&num);
    
 cout<<"Chislo: "<<num;

 
return 0;
}

Теперь ошибка в вызове функции round()
23 D:\Ìîè äîêóìåíòû\main.cpp no matching function for call to `round(double*)'
note D:\Ïðîãðàììû\Dev-Cpp\include\math.h:672 candidates are: double round(double)
note D:\Ïðîãðàììû\Dev-Cpp\include\math.h:672 void round(double&)

Последний раз редактировалось Diana528; 13.04.2013 в 18:13.
Diana528 вне форума Ответить с цитированием
Старый 13.04.2013, 18:34   #23
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Abstraction, я не видел изначального варианта.
Diana528, компилятор жалуется, что не может найти функцию round, у которой передаваемым параметром является указатель на double.
Код:
round(num);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 13.04.2013, 19:00   #24
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

так тоже делала, ошибка
24 D:\Ìîè äîêóìåíòû\main.cpp call of overloaded `round(double&)' is ambiguous
note D:\Ïðîãðàììû\Dev-Cpp\include\math.h:672 candidates are: double round(double)
note D:\Ïðîãðàììû\Dev-Cpp\include\math.h:672 void round(double&)
Diana528 вне форума Ответить с цитированием
Старый 13.04.2013, 19:10   #25
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я не видел изначального варианта.
То я прошу прощения
Точно не помню как передается по ссылке с амперсендом или без. На си всетки не пишу...
Цитата:
void round( double &num);

void round( double &num)
Убери одно из них...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.04.2013, 19:16   #26
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

это не причем( тут все неправильно написано...куда modf
Diana528 вне форума Ответить с цитированием
Старый 13.04.2013, 19:36   #27
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

так, все с этим разобралась, теперь проблема в выводе, программа не работает((( если я ввожу число - 2,59, прога выводит - 2 (только целую часть)

Код:
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

double modf(double num, double *i);

void round( double &num);

void round( double &num)
{
  num = (num >= 0) ? (num + 0.5) : (num - 0.5);
} 

double modf(double num, double *i)
{
*i = modf(num,&num);
}
int main()

{ 
    int num,i;
  
  cout<<"Vvedite chislo: ";
    cin>>num; 

       
round(num);
    
 cout<<"Chislo: "<<num;

 system("pause");
return 0;
}

Последний раз редактировалось Diana528; 13.04.2013 в 20:33.
Diana528 вне форума Ответить с цитированием
Старый 13.04.2013, 21:02   #28
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

int num,i;
Увидела? Тебе их нужно как вещественное описать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.04.2013, 21:06   #29
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

тааак, а теперь он тоже число дает
Diana528 вне форума Ответить с цитированием
Старый 13.04.2013, 23:14   #30
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include <iostream>
#include <cmath>

using namespace std;

void
myround(double& n)
{
    double f = modf(n, &n);
    n += (f >= 0.5) ? 1 : (f <= -0.5) ? -1 : 0;
}

int
main()
{
    double num;
    cout << "Chislo: ";
    cin >> num;
    myround(num);
    cout << num;
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование подпрограммы-функции: Вычислить значение функции (Турбо паскаль) RealUnited Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2012 20:34
Построение графика функции, мигание(затухание) шарика в минимумах функции kas1m_rus Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2012 20:28
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48
Программа на СИ++, используя функции работы с файлами и функции <string.h> Аня Popova Фриланс 9 13.09.2010 15:52