Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548

конфликт типов

09.10.2011, 23:00. Показов 3902. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пишу себе Си хедер. как реализовать универсальность одной функции для всех типов?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.10.2011, 23:00
Ответы с готовыми решениями:

Конфликт типов (int, double, bool)
Есть простейший класс class A { public: A( long ) {} A( double ){} A( bool ) {} } и при создании обьекта new...

Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.
Буду благодарен! Найти предельные значения для целочисленных типов. Не использовать заранее определенные константы границ типов.

Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов
Разработайте перегружены функции, в которые передаются два параметра типов int или float и три параметра типов int или float и возвращают...

27
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
10.10.2011, 05:59
Студворк — интернет-сервис помощи студентам
C
1
void func(void *p, enum type t);
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.10.2011, 08:46
Цитата Сообщение от alkagolik Посмотреть сообщение
а есть вообще где глянуть сорцы сишных функций?
Установить glibc-src из портов/пакетов/тарбола/etc...
Code
1
ls /usr/src/glibc/
далее по обстоятельствам.
Цитата Сообщение от alkagolik Посмотреть сообщение
суть в том чтобы функция имела возможность принимать аргумент любого типа и с ним работать
На всякий случай и printf/scanf посмотрите...
1
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
10.10.2011, 17:32  [ТС]
у меня почему-то (я и раньше обращал внимание) не glibc, а gnulib и сорцы лежат в /usr/share/gulib/lib
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.10.2011, 18:37
Цитата Сообщение от alkagolik Посмотреть сообщение
у меня почему-то (я и раньше обращал внимание) не glibc, а gnulib и сорцы лежат в /usr/share/gulib/lib
Во FreeBSD оно в /usr/src/lib/libc лежит, в CygWin - /usr/src/cygwin-1.5.25-7/newlib/libc... Короче
Code
1
find /usr/src -name qsort.c
, ну или что_нибудь_ещё.c и будет Вам счастье...
1
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
10.10.2011, 19:01
в андроиде (бионике) такая реализация
bionic/libc/stdlib/qsort.c
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
void
qsort(void *aa, size_t n, size_t es, int (*cmp)(const void *, const void *))
{
        char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
        int d, r, swaptype, swap_cnt;
        char *a = aa;
 
loop:   SWAPINIT(a, es);
        swap_cnt = 0;
        if (n < 7) {
                for (pm = (char *)a + es; pm < (char *) a + n * es; pm += es)
                        for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
                             pl -= es)
                                swap(pl, pl - es);
                return;
        }
        pm = (char *)a + (n / 2) * es;
        if (n > 7) {
                pl = (char *)a;
                pn = (char *)a + (n - 1) * es;
                if (n > 40) {
                        d = (n / 8) * es;
                        pl = med3(pl, pl + d, pl + 2 * d, cmp);
                        pm = med3(pm - d, pm, pm + d, cmp);
                        pn = med3(pn - 2 * d, pn - d, pn, cmp);
                }
                pm = med3(pl, pm, pn, cmp);
        }
        swap(a, pm);
        pa = pb = (char *)a + es;
 
        pc = pd = (char *)a + (n - 1) * es;
        for (;;) {
                while (pb <= pc && (r = cmp(pb, a)) <= 0) {
                        if (r == 0) {
                                swap_cnt = 1;
                                swap(pa, pb);
                                pa += es;
                        }
                        pb += es;
                }
                while (pb <= pc && (r = cmp(pc, a)) >= 0) {
                        if (r == 0) {
                                swap_cnt = 1;
                                swap(pc, pd);
                                pd -= es;
                        }
                        pc -= es;
                }
                if (pb > pc)
                        break;
                swap(pb, pc);
                swap_cnt = 1;
                pb += es;
                pc -= es;
        }
        if (swap_cnt == 0) {  /* Switch to insertion sort */
                for (pm = (char *) a + es; pm < (char *) a + n * es; pm += es)
                        for (pl = pm; pl > (char *) a && cmp(pl - es, pl) > 0;
                             pl -= es)
                                swap(pl, pl - es);
                return;
        }
 
        pn = (char *)a + n * es;
        r = min(pa - (char *)a, pb - pa);
        vecswap(a, pb - r, r);
        r = min(pd - pc, pn - pd - (int)es);
        vecswap(pb, pn - r, r);
        if ((r = pb - pa) > (int)es)
                qsort(a, r / es, es, cmp);
        if ((r = pd - pc) > (int)es) {
                /* Iterate rather than recurse to save stack space */
                a = pn - r;
                n = r / es;
                goto loop;
        }
        /* qsort(pn - r, r / es, es, cmp); */
}
1
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
14.10.2011, 17:53
alkagolik, Читаю книгу братьев Дейтел. Как раз сегодня наткнулся на то что вам может быть интересным с точки зрения написания вашего хедера и передачи разных типов данных.

A pointer can be assigned to another pointer if both pointers are of the same type. Otherwise, a cast operator must be used to convert the value of the pointer on the right of the assignment to the pointer type on the left of the assignment. The exception to this rule is the pointer to void (i.e., void *), which is a generic pointer capable of representing any pointer type. All pointer types can be assigned to a pointer of type void * without casting. However, a pointer of type void * cannot be assigned directly to a pointer of another typethe pointer of type void * must first be cast to the proper pointer type.
A void * pointer cannot be dereferenced. For example, the compiler "knows" that a pointer to int refers to four bytes of memory on a machine with four-byte integers, but a pointer to void simply contains a memory address for an unknown data typethe precise number of bytes to which the pointer refers and the type of the data are not known by the compiler. The compiler must know the data type to determine the number of bytes to be dereferenced for a particular pointerfor a pointer to void, this number of bytes cannot be determined from the type.
1
14.10.2011, 22:27

Не по теме:

Цитата Сообщение от greeezz Посмотреть сообщение
братьев Дейтел
Они отец и сын :D

0
278 / 174 / 21
Регистрация: 10.07.2011
Сообщений: 441
14.10.2011, 23:21
Цитата Сообщение от silent_1991 Посмотреть сообщение

Не по теме:


Они отец и сын :D

Не по теме:

:jokingly: Вот так промашка вышла! :D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.10.2011, 23:21
Помогаю со студенческими работами здесь

конфликт имен
пытаюсь вызвать CButton* button= (CButton*)GetDlgItem(IDC_BUTTON); // пишет что определено в WinUser.h пишет error C2660:...

Конфликт итераторов
Доброго времени суток. Пишу Timsort с использованием шаблонов и итераторов. Написал класс CTimsort, в нем все необходимые методы и их...

Конфликт конструкторов.
Здравствуйте! struct DateTime : tm { DateTime(int year_ = 1970, int month_ = 1, int day_ = 1,...

Конфликт имён
Добрый день. При запуске программы возникает следующая ошибка: Сейчас изучаю книгу Страуструпа &quot;Программирование. Принципы и...

Конфликт компиляторов
Здравствуйте, я относительно недавно начал программировать, экспериментирую с созданием игр на движке HGE. У меня установлен Microsoft...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru