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

Проверить корректность реализации нескольких задач - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Операция delete в векторе http://www.cyberforum.ru/cpp-beginners/thread1226141.html
Привет, друзья, делаю маленькую игрушку, там у меня постоянно появляются и уничтожаются новые объекты, и я заметил такую вещь: со временем игра начинает галить, хотя количество объектов одновременно существующих на экране не становится больше. Что это может быть? Единственное, что приходит в голову - то, что память на самом деле не освобождается после уничтожения объекта, значит я неправильно...
C++ Как сделать чтобы цвет текста плавно менялся Как сделать чтобы цвет текста плавно переливался? void RenderDVD(void) { int left, top; left = 1; top = pPresentParam.BackBufferHeight - 45; pD3DFont->PrintShadow(left, top, D3DCOLOR_XRGB(rand() % 255, rand() % 255, rand() % 255), "Разработчик Дима"); http://www.cyberforum.ru/cpp-beginners/thread1226126.html
C++ Нужны ли в реальной практике массивы?
Вопрос такой: нужны ли в реальной практике массивы? Или это лишь пережиток С? Имеют ли массивы реальные преимущества перед векторами, например? Почему спрашиваю - сейчас изучаю STL алгоритмы, такие как sort(), reverse(), find() и проч. и кажется это все очень удобным при использовании с векторами. Так нужны ли массивы после этого?
C++ Как вывести символ в любое место экрана?
Речь идёт о консольной программе. Поиск на форуме в этом отношении ничего не дал. Говорится о формах, о текстовых полях и иных объектах объектно-ориентированного программирования. Наверняка кто-то знает, операторы или функции, которые перемещают курсор в нужную точку и далее можно выводить символ, число, текст
C++ Отсортировать массив строк и вывести информацию соответствующую условию http://www.cyberforum.ru/cpp-beginners/thread1226082.html
Ведомость содержит информацию: номер группы, фамилия и инициалы студента, оценки по 3 предметам. Вывести в алфавитном порядке фамилии студентов, которые имеют хотя бы одну двойку (заборгованість?) Определить средний балл в группе программирования. Добавлено через 27 секунд //--------------------------------------------------------------------------- #include <vcl.h> #include...
C++ Поиск и сортировка в текстовом файле В программирование не силен только начал изучать есть задача.Есть текстовый файл такого плана вторник 1 21.03.2014 маша купила кокаколу 20рублей Вася положил деньги на телефон 100рублей Петя сходил в кино 230 Вася получил получку 25000 вторник 2 22.03.2014 Вася заплатил за учебу 2000рублей Вася пообедал 200р маша положила деньиги на телефон 300рублей Петя получил получку 25000 как... подробнее

Показать сообщение отдельно
kylroma
Одессит
 Аватар для kylroma
44 / 44 / 18
Регистрация: 30.12.2013
Сообщений: 203
Записей в блоге: 1
Завершенные тесты: 1
13.07.2014, 17:30     Проверить корректность реализации нескольких задач

Не по теме:

где такие задания дают? Мне вот сказали "изложить свои мысли в свободной форме" что делает этот код:

Кликните здесь для просмотра всего текста
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
 * qmap test
 * Author: Sergey Chaban <sergey.chaban@gmail.com>
 */
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stddef.h>
 
#include <math.h>
#include <float.h>
#include <memory.h>
#include <xmmintrin.h>
#include <emmintrin.h>
 
typedef __int16 I16;
typedef unsigned __int16 U16;
typedef __int32 I32;
typedef unsigned __int32 U32;
typedef __m128i IVEC;
 
static IVEC qstr_load(const char* pStr) {
    union {
        IVEC v;
        char c[16];
    } qs;
    qs.v = _mm_setzero_si128();
    for (int i = 0; i < 16; ++i) {
        char c = pStr[i];
        if (!c) break;
        qs.c[i] = c;
    }
    return qs.v;
}
 
static bool qstr_eq(IVEC qs0, IVEC qs1) {
    return _mm_movemask_epi8(_mm_cmpeq_epi8(qs0, qs1)) == 0xFFFF;
}
 
template <typename T, int TBL_SIZE=0x100, int MAX_NODE=0x400> class QMap {
protected:
    IVEC mKey[MAX_NODE];
    T mVal[MAX_NODE];
    I16 mLnk[MAX_NODE];
    I16 mTbl[TBL_SIZE];
    I32 mIdx;
 
    static U32 hash(IVEC qstr) {
        IVEC zero = _mm_setzero_si128();
        IVEC t0 = _mm_unpacklo_epi8(qstr, zero);
        IVEC t1 = _mm_unpackhi_epi8(qstr, zero);
        t1 = _mm_add_epi16(t0, t1);
        t0 = _mm_unpacklo_epi16(t1, zero);
        t1 = _mm_unpackhi_epi16(t1, zero);
        t1 = _mm_add_epi16(t0, t1);
        t0 = _mm_unpacklo_epi32(t1, zero);
        t1 = _mm_unpackhi_epi32(t1, zero);
        t1 = _mm_add_epi32(t0, t1);
        t0 = _mm_unpackhi_epi64(t1, zero);
        t1 = _mm_add_epi32(t0, t1);
        U32 h = _mm_extract_epi16(t1, 0);
        return h % TBL_SIZE;
    }
 
public:
    QMap() : mIdx(0) {
        int i;
        for (i = 0; i < TBL_SIZE; ++i) {
            mTbl[i] = -1;
        }
        for (i = 0; i < MAX_NODE; ++i) {
            mLnk[i] = -1;
        }
    }
 
    void put(const char* pKey, T val) {
        IVEC key = qstr_load(pKey);
        int h = hash(key);
        int idx = mIdx;
        if (idx >= MAX_NODE) {
            return;
        }
        if (mTbl[h] < 0) {
            mTbl[h] = idx;
        } else {
            h = mTbl[h];
            while (true) {
                if (mLnk[h] < 0) {
                    mLnk[h] = idx;
                    break;
                }
                h = mLnk[h];
            }
        }
        mKey[idx] = key;
        mVal[idx] = val;
        ++mIdx;
    }
 
    bool get(IVEC key, T* pVal) {
        int h = hash(key);
        int idx = mTbl[h];
        while (idx >= 0) {
            if (qstr_eq(key, mKey[idx])) {
                if (pVal) {
                    *pVal = mVal[idx];
                }
                return true;
            }
            idx = mLnk[idx];
        }
        return false;
    }
 
    bool get(const char* pKey, T* pVal) {
        IVEC key = qstr_load(pKey);
        return get(key, pVal);
    }
};
 
static int idx2val(int idx) {return idx*idx;}
 
static void qmap_test() {
    int i;
    int n = 100;
    char key[256];
    int val;
    QMap<int> map;
    for (i = 0; i < n; ++i) {
        val = idx2val(i);
        ::sprintf(key, "%d", val);
        map.put(key, val);
    }
 
    for (i = 0; i < n; ++i) {
        val = idx2val(i);
        ::sprintf(key, "%d", val);
        int mval = 0;
        if (map.get(key, &mval)) {
            if (mval != val) {
                ::printf("mismatch: %d != %d\n", mval, val);
            } else {
                ::printf("key = %s, val = %d\n", key, mval);
            }
        }
    }
}
 
int main() {
    qmap_test();
    return 0;
}

 
Текущее время: 08:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru