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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
#1

Определения знака переменных разного типа - C++

23.02.2012, 20:28. Просмотров 1957. Ответов 10
Метки нет (Все метки)

Используя перегрузку функций, написать программу определения знака переменных разного типа.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2012, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определения знака переменных разного типа (C++):

Написать программу определения знака переменных разного типа - C++
2)используя перезагрузку функций, написать программу определения знака переменных разного типа

Присвоение переменных разного типа - C++
Использую я значит вот такую строку, пытаясь получить возвращаемые данные char и ulong. ULONG ModuleAddress, char ModuleName =...

перегрузку функций,определения максимального значения элемента массива разного типа - C++
Задание: Используя перегрузку функций, написать программу определения максимального значения элемента массива разного типа. Хотелось...

Можно ли в цикле for объявить две переменных разного типа? - C++
Есть такой цикл for(сhar s='A',int i=0; s<'Z'; s++,i++) {} Builder 6 выдает ошибки : Unit1.cpp(21): E2040 Declaration terminated...

Используя перегрузку функции ,написать программу определения минимального значения элемента массива разного типа - C++
Используя перегрузку функции ,написать программу определения минимального значения элемента массива разного типа

Используя перегрузку функций, написать программу определения максимального значения элемента массива разного типа - C++
Используя перегрузку функций, написать программу определения максимального значения элемента массива разного типа

10
dimcoder
Полярный
466 / 438 / 68
Регистрация: 11.09.2011
Сообщений: 1,136
23.02.2012, 20:32 #2
Если больше нуля, выводит true, иначе выводит false. Думаю, поправить будет не проблемно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
template <class T>
bool znak(T t)
{
    if (t > 0)
        return true;
    else
        return false;
}
 
int main(int argc, char *argv[])
{
    int x = 10;
    float b = -13.24;
    cout << boolalpha << znak(x) << endl << znak(b) << endl;
    system("PAUSE > NULL");
    return EXIT_SUCCESS;
}
1
-=ЮрА=-
Заблокирован
Автор FAQ
24.02.2012, 11:04 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
jeka061288, код выше не перегрузка функции а "шаблон-функции"!О шаблонах прочти здесь http://valera.asf.ru/cpp/book/c10.html
О перегрузке здесь http://programmersclub.ru/13/
Также можно перегружать и операторы(к примеру можно "запрограмировать" что "+" будет означать умножение, а "-" деление). Если интересен раздел перегрузки операторов смотри сюда http://ru.wikipedia.org/wiki/Перегрузка_операторов
Теперь к твоему заданию - перегрузка выглядит так
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
#include <iostream>
using namespace std;
 
//ÏåðåøðóæГ*ГҐГ¬ ГґГіГ*êöèè äëÿ Г*åñêîëüêèõ Г±ГіГ№ òèïîâ Г¤Г*Г*Г*ûõ
bool isNegative(int    val);
bool isNegative(double val);
//Ñóòü ïåðåãðóçêè - èñïîëüçóåì îäГ*Г® ГЁ òîæå èìÿ ГґГіГ*êöèè, òîëüêî Г± Г°Г*Г§Г*ûì òèïîì(ëèáî ÷èñëîì)
// ïåðåäГ*ГўГ*åìûõ ГЇГ*Г°Г*ìåòðîâ
 
int main()
{
    int a;
    double b;
    while(true)
    {
        cout<<"Vvedite celoe chislo    : ";cin>>a;
        cout<<"Vvedite veshestv chislo : ";cin>>b;
        //ГЂ âîò Г*èæå ГЁ ГҐГ±ГІГј ïåðåãðóçêГ* - â³çâГ*ëè ГґГіГ*êöèè Г± îäГ*ГЁГ¬ Г*Г*çâГ*Г*ГЁГҐГ¬
        //Г* êîìïèëÿòîð Г±Г*Г¬ ГЇГ®Г*ГїГ« ãäå õîòåëè öåëûå ïåðåäГ*ГўГ*ГІГј Г* ãäå ГўГҐГ№ГҐГ±ГІГўГҐГ*Г*ûå
        cout<<"Chislo a = "<<a;
        if(isNegative(a))
            cout<<" otricatelnoe\n";
        else
            cout<<" polozhitelnoe\n";
        cout<<"Chislo b = "<<b;
        if(isNegative(b))
            cout<<" otricatelnoe\n";
        else
            cout<<" polozhitelnoe\n";
    }
    system("pause");
    return 0;
}
 
bool isNegative(int val)
{
    bool flag = false;
    if(val < 0)
        flag = true;
    return flag;
}
 
bool isNegative(double val)
{
    bool flag = false;
    if(val < 0)
        flag = true;
    return flag;
}
3
Миниатюры
Определения знака переменных разного типа  
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
26.02.2012, 22:35  [ТС] #4
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
#define _USE_MATH_DEFINES
#include <iostream>
 
int main()
{
        int a;
        double b;
        while(true)
        {
        printf("Vvedite celoe chislo : "); scanf("%d", a);
        printf("Vvedite veshestv chislo : ");scanf("%if",b);
        printf("Chislo a = %d",a);
if(isNegative(a))
        printf("otricatelnoe\n");
else
        printf("polozhitelnoe\n");
        printf("Chislo b = %if",b) ;
if(isNegative(b))
        printf("otricatelnoe\n");
else
        printf("polozhitelnoe\n");
        }
        system("pause");
        return 0;
}
 
bool isNegative(int val)
{
        bool flag = false;
        if(val < 0)
                flag = true;
        return flag;
}
 
bool isNegative(double val)
{
        bool flag = false;
        if(val < 0)
                flag = true;
        return flag;
}
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 23:43 #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Также можно перегружать и операторы(к примеру можно "запрограмировать" что "+" будет означать умножение, а "-" деление).
Ну стоит оговориться, что она возможна только для типов, которые описал сам программист. Да и не логична для оператора + делать умножение


dimcoder,
C++
1
2
3
4
template <typename T> bool fun(T val)
{
   return a < 0;
}
0
dimcoder
Полярный
466 / 438 / 68
Регистрация: 11.09.2011
Сообщений: 1,136
27.02.2012, 08:42 #6
Цитата Сообщение от go Посмотреть сообщение
template <typename T> bool fun(T val)
{
* *return a < 0;
}
Тогда уж:
C++
1
2
3
4
template <typename T> bool fun(T val)
{
   return val < 0;
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
27.02.2012, 11:02 #7
jeka061288, как ты и просил на Си(посмотри код он внешне мало чем отличается от С++ собрата, также обрати на синтаксис scanf, а лучше прочти об этой функции здесь
http://www.cplusplus.com/reference/c.../cstdio/scanf/)
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
#include <stdio.h>
 
//ÏåðåøðóæГ*ГҐГ¬ ГґГіГ*êöèè äëÿ Г*åñêîëüêèõ Г±ГіГ№ òèïîâ Г¤Г*Г*Г*ûõ
int isNegative(int    val);
int isNegative(double val);
//Ñóòü ïåðåãðóçêè - èñïîëüçóåì îäГ*Г® ГЁ òîæå èìÿ ГґГіГ*êöèè, òîëüêî Г± Г°Г*Г§Г*ûì òèïîì(ëèáî ÷èñëîì)
// ïåðåäГ*ГўГ*åìûõ ГЇГ*Г°Г*ìåòðîâ
 
int main()
{
    //ÐåêîìåГ*äóþ ГўГ±ГҐГЈГ¤Г* äåëГ*ГІГј Г*Г*Г·Г*ëüГ*ГіГѕ ГЁГ*èöèГ*ëèçГ*öèþ ïåðåìåГ*Г*ûõ
    //Гї Г§Г*áûë îá ýòîì óïîìÿГ*ГіГІГј Г°Г*Г*ГҐГҐ
    int a    = 0;
    double b = 0;
    while(1)
    {
        printf("Vvedite celoe chislo    : ");scanf("%d",&a);
        printf("Vvedite veshestv chislo : ");scanf("%lf",&b);
        //ГЂ âîò Г*èæå ГЁ ГҐГ±ГІГј ïåðåãðóçêГ* - â³çâГ*ëè ГґГіГ*êöèè Г± îäГ*ГЁГ¬ Г*Г*çâГ*Г*ГЁГҐГ¬
        //Г* êîìïèëÿòîð Г±Г*Г¬ ГЇГ®Г*ГїГ« ãäå õîòåëè öåëûå ïåðåäГ*ГўГ*ГІГј Г* ãäå ГўГҐГ№ГҐГ±ГІГўГҐГ*Г*ûå
        printf("Chislo a = %d\n",a);
        if(isNegative(a))
            printf(" otricatelnoe\n");
        else
            printf(" polozhitelnoe\n");
        printf("Chislo b = %lf\n",b);
        if(isNegative(b))
            printf(" otricatelnoe\n");
        else
            printf(" polozhitelnoe\n");
    }
    return 0;
}
 
int isNegative(int val)
{
    int flag = 0;
    if(val < 0)
        flag = 1;
    return flag;
}
 
int isNegative(double val)
{
    int flag = 0;
    if(val < 0)
        flag = 1;
    return flag;
}
1
Миниатюры
Определения знака переменных разного типа  
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.02.2012, 11:10 #8
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
на Си
-=ЮрА=-, В Си нет перегрузок http://liveworkspace.org/code/0f5ef3...c834d680f9a7a2
0
-=ЮрА=-
27.02.2012, 13:21
  #9

Не по теме:

go, спасибо что напомнил, только ТС обратился ко мне за помощью переделать код поста 3 под ввод вывод в стиле Си

0
-=ЮрА=-
Заблокирован
Автор FAQ
04.03.2012, 00:10 #10
jeka061288, вот проект, открывай его через файлы указанные на рисунке
1
Миниатюры
Определения знака переменных разного типа  
Вложения
Тип файла: rar Lr2.rar (4.3 Кб, 6 просмотров)
-=ЮрА=-
Заблокирован
Автор FAQ
04.03.2012, 00:12 #11
PS:Загляни сюда
Создание проекта в VisualStudio 9
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2012, 00:12
Привет! Вот еще темы с ответами:

Массив: Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа - C++
Используя перегрузку функций, написать программу определения минимального значения элемента массива разного типа

В последовательности определить количество соседств двух чисел разного знака - C++
Даны натуральное число n, действительные числа a1,...,an. В последовательности a1,...,an определить число соседств двух чисел разного...

В заданном массиве определить количество соседств двух чисел разного знака - C++
Нужен код с++ с выводом массива и решением Тип элементов: целые Кол-во элементов: 20 Элементы от -10 до 12

В заданном массиве определите число соседств двух чисел разного знака - C++
В заданном массиве определите число соседств двух чисел разного знака.


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
04.03.2012, 00:12
Ответ Создать тему
Опции темы

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