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

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

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

Прокомментировать код - C++

24.12.2015, 02:26. Просмотров 182. Ответов 6
Метки нет (Все метки)

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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
 
typedef unsigned short int  word; 
typedef unsigned int        dword;
#pragma pack(push)
#pragma pack(1)
struct BitMapHeader
{
    word    bfType;             // тип файла, для BMP - BM 
    dword   bfSize;             // размер файла - dword (истинный размер 34342-1078+14)
    word    bfReserved1;        // не используется 
    word    bfReserved2;        // не используется 
    dword   bfOffbits;          // смещение данных битового образа от заголовка в байтах (1078) 
 
    // Далее идет структура BITMAPINFOHEADER 
    
    dword   biSize ;            // число байт, занимаемых структурой  BITMAPINFOHEADER 
    dword   biWidth;            // ширина витового образа в пикселях
    dword   biHeight;           // высота битового образа в пикселях
    word    biPlanes;           // число битовых плоскостей устройства
    word    biBitCount;         // число битов на пиксель 
    dword   biCompression;      // тип сжатия 
    dword   biSizeImage;        // размер картинки в байтах (без 1078 т.е.33264)
    dword   biXPelPerMeter;     // горизонтальное разрешение устройства, пиксель/м 
    dword   biYPelPerMeter;     // вертикальное разрешение устройства,  пиксель/м 
    dword   biClrUsed;          // число используемых цветов 
    dword   biClrImportant;     // число "важных" цветов 
};
 
typedef unsigned char BYTE;
 
#pragma pack(pop)
 
struct tagRGBQUAD {
        BYTE    rgbBlue;
        BYTE    rgbGreen;
        BYTE    rgbRed;
        BYTE    rgbReserved;
} ;
 
BitMapHeader ReadHeader(FILE * f);
void ReadQuad(tagRGBQUAD* RGB,int biSize,FILE *f);
void WriteQuad(tagRGBQUAD* RGB,int biSize,FILE *f);
int poisk(tagRGBQUAD* RGB,int r,int g,int b);
 
int main(int argc, char* argv[])
{
    BitMapHeader header;
    tagRGBQUAD RGBQuad[256];
    
    FILE* fb;   
    char filename[]="1.bmp";
    if(!(fb=fopen(filename,"r+b"))){printf("file not open");return 1;}
 
    // заголовок
    header=ReadHeader(fb);
    // палитра
    ReadQuad(RGBQuad,header.biSize+14,fb);
    int n;
    int m;
    n=header.biHeight;
    m=header.biWidth;
    
    RGBQuad[5].rgbRed = 255; RGBQuad[5].rgbGreen = 0; RGBQuad[5].rgbBlue = 0; RGBQuad[5].rgbReserved = 0;
    int red = 5;
    int blue = poisk(RGBQuad, 0, 0, 255);
 
    BYTE **a;
    a=new BYTE*[n];
    for(int i=0;i<n;i++)
    {
        a[i]=new BYTE[m];
    }
 
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if (i > n/2-8-1 && i < n/2+8 && j > n/2-8-1 && j < n/2+8)
                a[i][j] = red;
            else
                a[i][j] = blue;
        }
    }
    fseek(fb,header.bfOffbits,SEEK_SET);
 
    for(int i=0;i<n;i++){
        fwrite(a[i],m,1,fb);
    }
    delete[]a;
 
    WriteQuad(RGBQuad,header.biSize+14,fb);
    fclose(fb);
    return 0;
}
BitMapHeader ReadHeader(FILE * f)
{
    BitMapHeader h;
    int numread;
    fseek(f,0,SEEK_SET);
    if(!(numread=fread((char*)&h,sizeof(BitMapHeader),1,f)))exit(1);
    return h;
}
    
void ReadQuad(tagRGBQUAD* RGB,int biSize,FILE *f)
{
    fseek(f,biSize,SEEK_SET);
    fread(RGB,1024,1,f);
}
 
void WriteQuad(tagRGBQUAD* RGB,int biSize,FILE *f)
{
    fseek(f,biSize,SEEK_SET);
    fwrite(RGB,1024,1,f);
}
 
int poisk(tagRGBQUAD*RGBQuad,int r,int g,int b)
{
 
    for(int i=0;i<256;i++)
        if(RGBQuad[i].rgbRed == r && RGBQuad[i].rgbGreen==g &&  RGBQuad[i].rgbBlue == b)
            return i;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2015, 02:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прокомментировать код (C++):

Прокомментировать код - C++
Может кто нибудь помочь с комментариями просто очень надо) // x.cpp: определяет точку входа для консольного приложения. // ...

Прокомментировать код - C++
// Функция решения квадратного уравнения #include &quot;stdio.h&quot; #include &quot;StdAfx.h&quot; #include &quot;conio.h&quot; #include&lt;locale.h&gt; 2 1 ...

Прокомментировать код - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;math.h&gt; #include &lt;stdlib.h&gt; using namespace std; int main() { double eps,...

Прокомментировать код - C++
Прокомментировать код #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #define n 5 int main() { int...

Прокомментировать код - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;cstdio&gt; using namespace std; const int maxnode = 4010*100; const int...

Прокомментировать код - C++
нужно описать что делают строки готовой программы #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cmath&gt; using namespace std; ...

6
hoggy
6766 / 2951 / 507
Регистрация: 15.11.2014
Сообщений: 6,640
Завершенные тесты: 1
24.12.2015, 03:23 #2
в начале файла ставите if 0
в самом конце #endif

и вуаля! весь файлик прокомментировалсо.
1
gru74ik
Эксперт CЭксперт С++
4273 / 1861 / 198
Регистрация: 20.02.2013
Сообщений: 4,996
Записей в блоге: 22
24.12.2015, 06:23 #3
spreybomja, Вы можете более чётко сформулировать задание? Что именно нужно прокомментировать? Что непонятно? Что вызывает затруднения?
0
spreybomja
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 6
24.12.2015, 07:47  [ТС] #4
мне нужно описание программы
0
Kastaneda
Jesus loves me
Эксперт С++
4703 / 2907 / 239
Регистрация: 12.12.2009
Сообщений: 7,405
Записей в блоге: 2
Завершенные тесты: 1
24.12.2015, 07:57 #5
Цитата Сообщение от spreybomja Посмотреть сообщение
мне нужно описание программы
Программа в лучшем случае сломается на 68 строке если искомый пиксель не будет найден, в худшем случае она пишет новый файл с косячными данными.
0
gru74ik
Эксперт CЭксперт С++
4273 / 1861 / 198
Регистрация: 20.02.2013
Сообщений: 4,996
Записей в блоге: 22
24.12.2015, 07:59 #6
Цитата Сообщение от spreybomja Посмотреть сообщение
мне нужно описание программы
В смысле? Вам нужно понять, что происходит в этом коде?
0
spreybomja
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 6
24.12.2015, 08:03  [ТС] #7
понять и объяснить
0
24.12.2015, 08:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2015, 08:03
Привет! Вот еще темы с ответами:

Прокомментировать код - C++
Как это работает? #include &lt;QDebug&gt; int main() { int mass; mass = 1; mass = 2;

Прокомментировать код - C++
помогите понять этот код int main(){ const int PASSWORD_LENGTH=10; const char *...

Прокомментировать код - C++
есть код программы, нужно объяснить её программный код. и исправить ошибки.помогите пожалуйста. int dwsp(double* x, double* y); int...

Прокомментировать код - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; ifstream in (&quot;input.txt&quot;); ifstream kin...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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