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

Рисунок получается битым - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Очень нужен совет где найти ошибки в программе http://www.cyberforum.ru/cpp-beginners/thread807796.html
//Obrabotka rezulitatov sessii s ispolizovaniem functii #include<iostream> #include<iomanip> #include<string.h> #include<assert.h> #include<conio.h> #include<cstdlib> using namespace std;
C++ Простое число bool prostoechislo(int n) //функция определяющая простое число или нет { if (n < 2) return false; if (n == 2) return true; if (n % 2 == 0) return false; for (int j = 3; j * j <= n; j += 2) if (n % j == 0) return false; return true; } Вот функция никак не пойму цикл http://www.cyberforum.ru/cpp-beginners/thread807777.html
C++ Найти объем, массу и площадь основания цилиндрического слитка
Известно плотность, высота и радиус основания цилиндрического слитка..Найти объем, массу и площадь основания слитка? Называем темы информативно
Как открыть файлы с раширением *.dll и *.a C++
Вазможно ктото знает как открыть эти фаллы библиотек? IDE и блокнот открыть та открывают но, текст отображается кирилицей! Вазможно ктото знает???
C++ Экзамен по информатике. Сведения об учениках http://www.cyberforum.ru/cpp-beginners/thread807760.html
Доброго времени суток! Задали задачу, сижу над ней третий день и все не могу дойти, как же ее решать. Я не прошу готовый код. Может кто может объяснить с чего начать и вообще логику таких задач? С++ владею на уровне новичка. Видел подобный пост, но не смог "въехать" в код. Вот собственно само условие: После единых выпускных экзаменов по информатике в район пришла информация о том, какой...
C++ Работа с дробями Написать программу, работы с дробями используя структуры. Написал функцию сложения (но чет напортачил) #include<iostream> #include<windows.h> using namespace std; struct Drob { int a; int b; }; Drob enterDrobData(); подробнее

Показать сообщение отдельно
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248

Рисунок получается битым - C++

13.03.2013, 20:14. Просмотров 233. Ответов 2
Метки (Все метки)

В ходе обучения создал простенький генератор точечных рисунков. Столкнулся с проблемой. Описание в комментариях.
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
#include <stdio.h>
#include <iostream>
#include <windows.h>
using namespace std;
 
#pragma pack (push, 1)
struct bmpHeader
{
    //header
    char type[2];
    DWORD fileSize;        
    WORD reserved1;
    WORD reserved2;
    DWORD offset;
    //info
    DWORD infoSize;
    unsigned long width;
    unsigned long height;
    WORD planes;
    WORD bitPerPixel;
    DWORD compression;
    DWORD imageSize;
    unsigned long xPerMeter;
    unsigned long yPerMeter;
    DWORD colorUsed;
    DWORD colorImportant;
    //color table       
};
#pragma pack (pop)
 
int main()
{
  FILE* file;
  bmpHeader headr;
  char color[3];
 
  rename(tmpnam(NULL),"temp.bmp");//создаём пустой файл и перемещаем в папку с программой
  file = fopen("temp.bmp", "wb+");//открываем для записи
  //генерируем заголовок
  headr.type[0]='B';
  headr.type[1]='M';
  headr.reserved1 = 0;
  headr.reserved2 = 0;
  headr.compression = 0;
  headr.colorUsed = 0;
  headr.colorImportant = 0;
  
  headr.width = 101;//если ширина больше 100, рисунок получается битым
  headr.height = 102;
  headr.bitPerPixel = 24;
  headr.offset = 54;
  headr.infoSize = 40;
  headr.planes = 1;
  headr.xPerMeter = 3780;
  headr.yPerMeter = 3780;
  
  headr.imageSize = headr.bitPerPixel / 8 * headr.width * headr.height;
  headr.fileSize = headr.imageSize + headr.offset;  
  //записываем заголовок
  cout<<"Writing header...\n";    
  fwrite(&headr,sizeof(headr),1,file);
  //генерация и запись изображения  
  for (int h=0;h<headr.height;h++)
  {
    for (int w=0;w<headr.width;w++)
    {
      // забиваем все точки белым цветом        
        color[0] = 255;
        color[1] = 255;
        color[2] = 255;
        fwrite(color,3,1,file);      
    }  
  }
    
  fclose(file);
  
  return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru