Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lazyrazor4
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 45
#1

Перегрузка функции int double - C++

20.11.2014, 19:21. Просмотров 361. Ответов 8
Метки нет (Все метки)

Напишите функцию max с переменным количеством параметров, которая находит минимальное из чисел типа int или из чисел типа double, тип параметров определяется с помощью первого параметра функции. Проблема: не правильно выводит минимальное значение.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#pragma hdrstop
#pragma argsused
#include <vcl.h>
#pragma hdrstop
#include<iostream.h>
#include <conio.h>
#pragma argsused
 
 
void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
 
    double minimum(char z, int k, ...);
 
    cout << "\nminimum('1',4.2,5.2,7.3) = " <<
    minimum ('1',4.2,5.2,7.3);
 
    cout << "\nminimum('i',10,45,345,25,256,345,745) = " <<
    minimum ('i',10,45,345,25,256,345,745);
 
    getch();
}
 
double minimum(char z, int k, ...)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
if (z== 'i')
{
    int* pi = &k + 1;
    int min = *pi;
 
    for(; k; k--, pi++)
    min = min > *pi ? *pi : min;
    return (int)min;
}
 
if (z=='1')
{
    double *p1 = (double*)(&k+1);
    double  min = *p1;
    for (; k; k--, p1++)
    min = min > *p1 ?  *p1 : min;
    return (double)min;
}
getch();
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 19:21     Перегрузка функции int double
Посмотрите здесь:

Перегрузка типа int и double и сортировка - C++
Дано задание: В одномерном массиве состоящем из n элементов вычислить: 1 номер минимального по модулю элемента. 2 сумму модулей...

Вывести элементы массива, находящихся между его min и max. Перегрузка функций для int и double - C++
Заданы два массива - массив целых и массив вещественных чисел. Вывести на экран массив, составленный из элементов исходного целочисленного...

Создать перегружаемые функции и шаблоны для типов int и double - C++
Создать перегружаемые функции и шаблоны для типов int и double. Передачу параметров в функцию осуществить различными способами: с помощью...

2 int to double - C++
Здравствуйте. Вот такой вопрос. В памяти хранится 2 int числа - рубли и копейки, при выводе выводятся через запятую. В задании нужно...

int и double - C++
//--------------------------------------------------------------------------- #include &quot;math.h&quot; #include &lt;stdio.h&gt; #include...

int* to double* - C++
double* myDoublePtr; int myInt = 5; int* myIntPtr; myIntPtr = &amp;myInt; // cout &lt;&lt; &quot;myIntPtr: &quot; &lt;&lt; myIntPtr &lt;&lt; &quot; &quot;...

double в int - C++
собственно вопрос в шапке, как перевести double в int? т.е. также как работает делфийская функция round, округлить до целых и выдать число...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5240 / 4560 / 1532
Регистрация: 14.04.2014
Сообщений: 18,125
20.11.2014, 22:14     Перегрузка функции int double #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double minimum(int k, ...)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
if (k == 1) return k < *(&k + 1) ? k : *(&k + 1);
 
if (k == 2)
{
    double *n1 = (double*)(&k + 1);
    double *n2 = n1 + 1;
    return *n1 < *n2 ? *n1 : *n2;
}
getch();
}
lazyrazor4
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 45
20.11.2014, 23:33  [ТС]     Перегрузка функции int double #3
Все равно для Double не правильно выводит минимальный элемент.
nmcf
5240 / 4560 / 1532
Регистрация: 14.04.2014
Сообщений: 18,125
20.11.2014, 23:58     Перегрузка функции int double #4
А, я забыл про цикл. Надо добавить.
lazyrazor4
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 45
21.11.2014, 00:32  [ТС]     Перегрузка функции int double #5
Что-то опять ничего.
true_bugmaker
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
21.11.2014, 02:25     Перегрузка функции int double #6
а зачем первый аргумент в апострофах?

Добавлено через 56 минут
нужно как-то так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdarg.h>
#include <iostream>
 
 
int minimum (char type, int n, ...) {
        va_list ap;
        double md, ad;
        int mi, ai;
 
        va_start (ap, n);
 
 
        if ('i' == type) {
                mi = va_arg (ap, int);
                while (--n) {
                        ai = va_arg (ap, int);
                        if (mi > ai) mi = ai;
                }
        } else {
                md = va_arg (ap, double);
                while (--n) {
                        ad = va_arg (ap, double);
                        if (md > ad) md = ad;
                }
        }
        va_end (ap);
        return ('i' == type) ? mi : md;
}
 
int main (int argc, char * argv []) {
        std::cout << "minimum('i') = " << minimum ('i', 10, 10,45,345,25,256,345,745,100,5,7) << std::endl;
        std::cout << "minimum('d') = " << minimum ('d', 10, 10.,45.,345.,25.,256.,345.,745.,100.,5.,7.) << std::endl;
 
        return 0;
}
lazyrazor4
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 45
21.11.2014, 08:29  [ТС]     Перегрузка функции int double #7
Спасибо, все отлично. Но как сделать, чтобы выводило все число, а не только целую часть??
true_bugmaker
28 / 5 / 1
Регистрация: 18.11.2014
Сообщений: 68
21.11.2014, 15:26     Перегрузка функции int double #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
исправить так, это мой просчёт
C++
1
double minimum (char type, int n, ...) {
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2014, 15:58     Перегрузка функции int double
Еще ссылки по теме:

double и int - C++
double buf = Convert::ToDouble(pole-&gt;Text);//Обьявляем переиенную buf switch (regim) { case '%': pole-&gt;Text =...

Перегрузка operator*(double, complex) - C++
У меня есть класс в нем 2 поля типа double, мне нужно сделать что бы можно так было сделать comple a(1.2,5.6); cout&lt;&lt;2 * a; не...

cannot convert from 'int *' to 'double *' - C++
Помогите пожалуйста исправить ошибку: error C2440: '=' : cannot convert from 'int *' to 'double *'. #include &lt;iostream.h&gt; void...

Перевести double в int - C++
Как перевести значения типа double (после логарифмического преобразования) в int?

Невозможно преобразование int в double - C++
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;locale.h&gt; using namespace std; #define k 6 #define l 8 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
lazyrazor4
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 45
21.11.2014, 15:58  [ТС]     Перегрузка функции int double #9
Спасибо большое, все работает как надо.
Yandex
Объявления
21.11.2014, 15:58     Перегрузка функции int double
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru