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

Как лучше сделать. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выделить в массиве последовательность чисел и сравнить выделенное с константами http://www.cyberforum.ru/cpp-beginners/thread49213.html
Привет всем! Прошу помощи!:) Существует некий массив (его содержимое динамически меняется),например: unsigned char Name1 ; и константы: unsigned char Name2="abcde"; unsigned char Name3="54321"; пускай в массив записалось следующее: 1234567890abcde0987654321
C++ Ошибка, связанная с массивами Вот такой код для такой задачи: записать в массиве М количество положительных элементов каждого столбца матрицы A(K,L). #include <iostream> #include <stdio.h> #include <conio.h> #include <math.h> int **ReadMatrixFromFile(int &K, int &L); int **CreateMatrix(const int K, const int L); void FreeMatrix(int **X, const int L); void CountPositiveElementsIn(int **X, const int K, const int L,... http://www.cyberforum.ru/cpp-beginners/thread49195.html
Работа с файлами. Язык С C++
существует такой код int c; FILE *f=fopen("C:/test.txt", "r"); c=getc(f); char a;
C++ Расшифровать цикл
Здравствуйте! Помогите,если кто может, понять вот этот кусок кода,что он делает,желательно чтоб было понятно. for(j = 0; j < 10; j++) if(sqrs ==i) break; из вот этого исходника:
C++ ++N http://www.cyberforum.ru/cpp-beginners/thread49185.html
в чем отличие ++а от а++?
C++ Использование toupper() Не знаю почему, но код не хочет работать, вроде уже всё прописал что нужно. Программа должна выдать на экран фразу: украина - лучшая страна в мире с большой буквы все символы. Во исходник простой программы: #include <iostream> #include <cctype> #include <cstring> using namespace std; int main() подробнее

Показать сообщение отдельно
Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
03.09.2009, 20:12  [ТС]     Как лучше сделать.
Померял и у меня получается что мой код работает быстрее =) проверьте у себя:
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
#include <cstdlib>
#include <iostream>
#include <windows.h>
 
#define BYTES_IN_ROW 100
#define BITS_IN_BYTE 8
char* I=new char [60000];
 
bool getbit(int x,int y){
     int p=((y<<9)+(y<<8)+(y<<5)+x);
     int n=p&7;//тут получаем номер интересуещего нас бита
     p>>=3;//тут смещение по которому находится интересующий нас байт
     return (I[p]>>n)&1;
}
void setbit(int x,int y){
     int p=((y<<9)+(y<<8)+(y<<5)+x);
     int n=p&7;//тут получаем номер интересуещего нас бита
     p>>=3;//тут смещение по которому находится интересующий нас байт
     char mask=(1<<n);
     I[p]|=mask;
}
void clearbit(int x,int y){
     int p=((y<<9)+(y<<8)+(y<<5)+x);
     int n=p&7;//тут получаем номер интересуещего нас бита
     p>>=3;//тут смещение по которому находится интересующий нас байт
     char mask=(1<<n)^0xFF;
     I[p]&=mask;
}
 
inline bool isBit (int x,int y){
        char mask = 0;
        switch (x%8){
                case 0:
                        mask = '\x80';
                        break;
                case 1:
                        mask = '\x40';
                        break;
                case 2:
                        mask = '\x20';
                        break;
                case 3:
                        mask = '\x10';
                        break;
                case 4:
                        mask = '\x08';
                        break;
                case 5:
                        mask = '\x04';
                        break;
                case 6:
                        mask = '\x02';
                        break;
                case 7:
                        mask = '\x01';
                        break;
        }
        return (*(I + BYTES_IN_ROW*y + x/BITS_IN_BYTE) | mask) != '\x00';
}
 
using namespace std;
 
int main(int argc, char *argv[])
{
    for (int j=0;j<2;j++){
        for (int i=0;i<800;i++)clearbit(i,j);
        }
    setbit(0,0);
    setbit(3,1);
    setbit(7,1);
    setbit(2,1);
    clearbit(3,1);
    for (int j=0;j<2;j++){
        cout<<j<<":"<<endl;
        for (int i=0;i<800;i++)cout<<getbit(i,j);
        }
 
int y=599,x=799;
cout<<(((y<<9)+(y<<8)+(y<<5)+x)>>3)<<endl;
 
unsigned int a1=GetTickCount();
for (int i=0;i<10000000;i++)getbit(2,4);
unsigned int a2=GetTickCount();
for (int i=0;i<10000000;i++)isBit(2,4);
unsigned int a3=GetTickCount();
cout<<a2-a1<<"    "<<a3-a2<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
delete[] I;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru