Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

Riki_Tiki_Tavi

#include<iostream>using namespace std;class PointSet{float v,r;public:void in(void){cout<<"v r ? "; cin>>v>>r;}void out(void){cout<<"v="<<v<<", r="<<r<<endl;}float acc(void){return v*v/r;}};int main(){PointSet pset1,pset2;pset1.in(); pset1.out(); cout<<"acceleration="<<pset1.acc()<<endl;pset2.in(); pset2.out(); cout<<"acceleration="<<pset2.acc()<<endl;}
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Помогите пожалуйста на языке SCHEME написать задание:

Треугольник задан координатами вершин: А (5, 4) В (1, 3) С (8, -1). Определить функцию которая определяет: высоту, проведенная к стороне АВ, и периметр треугольника ВСD, D-середина стороны АВ. Начало я начал, а дальше не пойму.

#lang racket

;A(x1 y1) B(x2 y2) C(x3 y3) D(x4 y4)

(define x1 5)

(define y1 4)

(define x2 1)

(define y2 2)

(define x3 8)

(define y3 -1)

;

(define x4 1)

(define y4 1)

(define (sq)

(- (* (- x1 x4) (- y2 y4)) (* (- x2 x4) (- y1 y4))))

(sq)

Ссылка на комментарий
Поделиться на другие сайты

Напишите пожалуйста на языке C++.

Пользователь указывает свой ​​возраст. Если он меньше 18-ти лет, то вывести сообщение "Вы несовершеннолетний", иначе - сообщение "Вы совершеннолетний".

Ссылка на комментарий
Поделиться на другие сайты

Напишите пожалуйста на языке C++.

Пользователь указывает свой ​​возраст. Если он меньше 18-ти лет, то вывести сообщение "Вы несовершеннолетний", иначе - сообщение "Вы совершеннолетний".

#include<iostream>using namespace std;int main(){  int age;  cout<<"Введите возраст:"<<endl;  cin>>age;  if(age<18) cout<<"Вы несовершеннолетний"<<endl;  else cout<<"Вы совершеннолетний"<<endl;}
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Хочу понять. Как можно передвинуть поля\фишки в пятнашкам, а не рандомно их сгенерировать перед началом игры? Мне нужна подсказка (или ссылка, где читать). Хочется сделать так, чтобы всегда была выигрышная комбинация, как в игрушках, которые продаются. В инете есть либо рандомное образование с проверками на правильность, либо алгоритм решения пятнашек. Не могу найти то, что меня интересует. Подскажите, пожалуйста.

Ссылка на комментарий
Поделиться на другие сайты

Иазяв

Проверка на правильность - это проверка наличия решения? Тогда непонятно, чем плоха рандомная комбинация. Берем массив из 16 чисел от 1 до 16, тасуем его, и проверяем на наличие решения. Если решения нет, переставляем любые две соседние фишки - получится решаемое расположение фишек. Для получения квадратного поля просто располагаем числа массива по порядку в клетках поля.

Алгоритм тасования есть, например, тут, правда, для индексов от 1 до 16, но переделать для индексов 0..15 пустяк.

Хотя, конечно, можно и иначе - получить комбинацию передвижением фишек из конечного состояния в порядке, обратном решению. Гоняем "пустую фишку" по полю, просто меняя ее местами с выбираемым случайно из ее соседей, после сотни или двух сотен шагов все как следует перепутается. То есть тут работаем с двумерным массивом из тех же чисел.

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Тролль

Я себе представляю это так.

У нас есть массив 4*4. Числа выводятся от 1 до 15, по порядку с переходом на новую строку. Последняя ячейка хранит нуль. И теперь я хочу передвинуть эти значения, как если бы я держала в руках собранные пятнашки и мешала их, чтобы заново собрать. Мне хочется каждый ход так отобразить. Но как это реализовать не понимаю почему-то. Надо делать проверку на ноль и туда сдвигать какую-нибудь фишку. Какую из 2-4 возможных? Сколько раз повторять этот цикл?

Начала читать о Java, но почему-то съехала на Javascript. За три дня прочитала многое о HTML, CSS, DOM, JS. Сейчас пробую применять знания на практике. Там еще есть ответвление XML и ему подобное. Не знаю, как это все можно знать и применять осилю ли я это все. Честно признаюсь, CSS, DOM и JS захватили. Такого азарта в получении знаний давно не испытывала. Но азарт тогда, когда все это вместе.

Побалуюсь и начну Java изучать. Пробовала программку на Java набрать в eclipse, но что-то у меня не получилось запустить. Фатал еррор. Может, чего-то не хватает eclipse или другую оболочку установить? Что Вы посоветуете? Для C# хочу использовать RAD Studio. Или лучше Visual Studio? Есть еще Visual C++. Но я сомневаюсь в своих способностях. Может, в качестве шапочного знакомства...

Ссылка на комментарий
Поделиться на другие сайты

Иазяв

Не надо делать проверку на 0. Достаточно просто помнить координаты поля с нулем.

В полупроводниках есть такое понятие - дырочная проводимость. Это когда почти у всех атомов есть электроны, сколько полагается, а у одного - электрона нехватает. На пустое место перебирается электрон из соседнего атома, на освободившееся там место - электрон еще от кого-нибудь из соседей и так далее. Получается, что по проводнику путешествует пустое место для электрона, которое зовут дыркой :)

В пятнашках то же самое - по полю путешествует дырка (поле со значением 0, например). Ее просто надо менять местами со случайным соседом, присматривая за тем, чтобы она не выбралась из поля.

Поскольку перемещение дырки связано с перемещением одного из соседей, то после гулянья дырки по полю множество соседей переберется на новые места, и не по одному разу. Сколько ей гулять - ну, скорее всего, за сто шагов она достаточно наследит ;)

Хотя я предпочел бы первый из описанных мной в прошлом посте алгоритмов - там время построения фиксированное и перемешивание не зависит от того, сколько дырка гуляла по полю :) Но как хочешь - если строить гулянием дырки, то можно, например, так:

#include<iostream>#include<iomanip>#include<cstdlib>#include<ctime>using namespace std;int main(){int p[4][4]; int i,j,i1,j1,i2,j2; i1=i2=j1=j2=3; srand(time(NULL));// тут 3 - индекс правого нижнего поля, где сначала сидит дырка// i1,i2,j1,j2 - координаты старого и нового положений дырки при шаге,//   с i - горизонтальные, с j - вертикальныеfor(i=0;i<4;i++)for(j=0;j<4;j++)p[i][j]=(4*i+j+1)%16;// расставляем на поле по порядку числа в каждую клеткуfor(i=0;i<4;i++){for(j=0;j<4;j++)cout<<setw(3)<<p[i][j]; cout<<endl;}cout<<endl;// это вывод поляfor(int k=0;k<100;k++){  // это шаги дырки while(i1+j1==i2+j2)	  // это проверка, не осталась ли дырка на месте - при попытке выхода за границы поля мы не дадим ей шагнуть ;)if(rand()%2)i2=rand()%2?i1+(i1<3):i1-(i1>0);else j2=rand()%2?j1+(j1<3):j1-(j1>0);// случайно выбираем, менять i - координату (то есть по горизонтали), или j - по вертикали//   и делаем шаг по этой координате в случайном направлении с укорочением шага до нуля//   если дырка собирается выйти за пределы поля//   (а можно было вместо укорочения шага, например, проверять выход за пределы поля в старом while//	и если вышла, тоже считать это причиной для новой попытки, можно придумать и другие варианты//	- "девяносто шесть дорог..." :)  ) swap(p[i1][j1],p[i2][j2]); i1=i2; j1=j2;// меняем местами значения соседа и дырки for(i=0;i<4;i++){for(j=0;j<4;j++)cout<<setw(3)<<p[i][j]; cout<<endl;}cout<<endl;}// и выводим новую картинку поляcin.get();// это, как обычно, чтобы окно вывода при работе скомпилированной программы вне среды не закрылось сразу}

Насчет чтения всякой всячины о других языках - знать все на свете не надо, но иметь представление, с чем это кушают, надо :)

Относительно того, в какой среде программировать на Java - я, насколько помню, когда-то использовал JCreator и JDK (Java Development Pack). Но советовать какую-то среду разработки не буду, поскольку все это было совсем давно. Наверно, можно на чем угодно :) Не идет - попробуй другую среду, насильно мил не будешь ;)

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Тролль

Спасибо! Как всегда поразили меня до глубины души! Я точно не программист. Упрусь в одно решение и не вижу другие. И даже тут смешались поиск решения и простое перемешивание.

знать все на свете не надо, но иметь представление, с чем это кушают, надо :)

Мне очень любопытно, есть ли язык программирования, который Вы не знаете? Ваши знания многих вещей из разных областей ошеломляют. Вы же знаете, что я восхищаюсь Вами...

насильно мил не будешь ;)

Бросила учебу. Сначала сильно страдала, плакала, сердце кровью обливалось. Пока не поняла, что теперь я могу летать! "Куда хочу, туда лечу!" Еще поняла, что учеба перестала приносить радость давно, что это был чемодан без ручки. Теперь я больше времени могу выделить на то, что мне действительно интересно, восполнить какие-то пробелы, не заниматься ерундой. Одно только плохо, фантазия какая-то бедная, чтоб придумать что-то свое и грандиозное.

Ссылка на комментарий
Поделиться на другие сайты

Привет всем, и снова неприятная задачка... Помогите пожалуйста (паскаль abc)

Дана действительная матрица размера n x m, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на её наибольший по модулю элемент.

Безымянный.JPG

post-114802-0-94962700-1351871016_thumb.

Ссылка на комментарий
Поделиться на другие сайты

Атин

var a:array[1..20,1..20]of real; s:real; i,j,m,n:integer;beginwrite('Размеры матрицы (строк столбцов) ? '); readln(n,m); s:=0;  for i:=1 to n dobeginwrite('Введите значения (',m,' шт.) строки ',i:2,' : ');for j:=1 to m do read(a[ i,j]); readlnend;writeln; writeln('Исходная матрица:');for i:=1 to n do begin for j:=1 to m do write(a[i,j]:8:2); writeln end;for i:=1 to n do for j:=1 to m do if abs(a[i,j])>abs(s) then s:=a[i,j];for i:=1 to n do for j:=1 to m do a[i,j]/=s;writeln; writeln('Полученная матрица:');for i:=1 to n do begin for j:=1 to m do write(a[i,j]:8:2); writeln end;writeln; writeln('Нажмите Enter для выхода'); readlnend.
Ссылка на комментарий
Поделиться на другие сайты

Хм.. немного не так работает задача, она просто выводит матрицу, состоящую из максимального элемента первой матрицы

Ссылка на комментарий
Поделиться на другие сайты

Атин

Дело, видимо, в том, что я попробовал эту программу в PascalABC.NET, который сейчас у меня стоит на компьютере, поскольку просто PascalABC уже давно считается устаревшим и пять лет назад перестал вообще поддерживаться. В PascalABC.NET все работало. Вообще-то для такой простой программы, казалось бы, обе версии должны работать одинаково, но раз что-то не то, пришлось вытащить на свет Божий и запустить старый PascalABC. Оказалось, что действительно есть расхождения. Попробуй этот вариант, у меня он в старом PascalABC работает:

var a:array[1..20,1..20]of real; s:real; i,j,m,n:integer;beginwrite('Размеры матрицы (строк столбцов) ? '); readln(n,m); s:=0;  for i:=1 to n dobeginwrite('Введите значения (',m,' шт.) строки ',i:2,' : ');for j:=1 to m do read(a[ i,j]);end;writeln; writeln('Исходная матрица:');for i:=1 to n do begin for j:=1 to m do write(a[i,j]:8:2); writeln end;for i:=1 to n do for j:=1 to m do if abs(a[i,j])>abs(s) then s:=a[i,j];for i:=1 to n do for j:=1 to m do a[i,j]:=a[i,j]/s;writeln; writeln('Полученная матрица:');for i:=1 to n do begin for j:=1 to m do write(a[i,j]:8:2); writeln end;writeln; writeln('Нажмите Enter для выхода'); readlnend.
Ссылка на комментарий
Поделиться на другие сайты

Напишите пожалуйста на С++

Для всех перечисленных ниже задач предусмотреть возможность повторного ввода данных и получения результата без перезапуска программы (использовать цикл с после условия).

Пользователь указывает шести цифровое число. Выяснить, будет ли это число "счастливым" (сумма первых трех цифр равна сумме последних трех цифр).

Ссылка на комментарий
Поделиться на другие сайты

Riki_Tiki_Tavi

#include<iostream>using namespace std;int main(){long a,b,c;do{ cout<<"Enter the six-digit number: "; cin>>a;   b=a/1000; c=a%1000; cout<<"The number is "<<(b/100+b/10%10+b%10==c/100+c/10%10+c%10?"":"not ")<<"lucky."<<endl; cout<<"Once more (1/0)? "; cin>>a; cout<<endl;}while(a);}
Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Riki_Tiki_Tavi

#include<iostream>using namespace std;int main(){long a,b,c;do{ cout<<"Enter the six-digit number: "; cin>>a;   b=a/1000; c=a%1000; cout<<"The number is "<<(b/100+b/10%10+b%10==c/100+c/10%10+c%10?"":"not ")<<"lucky."<<endl; cout<<"Once more (1/0)? "; cin>>a; cout<<endl;}while(a);}

А можете пожалуйста написать используя do while или repeat.

Ссылка на комментарий
Поделиться на другие сайты

Riki_Tiki_Tavi

#include<iostream>

using namespace std;

int main(){

long a,b,c;

do{

cout<<"Enter the six-digit number: "; cin>>a; b=a/1000; c=a%1000;

cout<<"The number is "<<(b/100+b/10%10+b%10==c/100+c/10%10+c%10?"":"not ")

<<"lucky."<<endl;

cout<<"Once more (1/0)? "; cin>>a; cout<<endl;}

while(a);}

Именно так и было сделано :) Изменено пользователем Тролль
  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

Именно так и было сделано :)

Я извиняюсь!)

А напишите пожалуйста вот эту программу:

Разработать класс линейного массива из N целых чисел (N> 0 - константа). В классе должна быть описана единая свойство - массив из N элементов. Также в классе должны быть описаны следующие функции:

1) ввода / вывода элементов массива;

2) вычисление суммы элементов массива;

3) поиск первого максимального элемента в массиве и его индекса;

4) поиск первого минимального элемента массива и его индекса;

5) упорядочения элементов массива;

6) бинарный поиск элемента массива;

7) подсчет количества максимальных элементов массива;

8) подсчет количества различных элементов массива.

В главной программе создать объект класса линейного массива и выполнить тестирование его функций.

Ссылка на комментарий
Поделиться на другие сайты

Помогите, пожалуйста, решить на С++ две задачи:

1)Написать функцию,которая находит в строке десятичные константы и заменяет их на шестнадцатеричные с тем же значением, например, «ааааа258ххх» на «ааааа0х102ххх».

2) Строка состоит из слов, разделенных одним или несколькими пробелами. Найти слово, состоящее только из различных символов. Если таких слов несколько, найти первое из них. В этой задаче запрещено использовать стандартные функции по обработке строк и класс string.

Ссылка на комментарий
Поделиться на другие сайты

1)Написать функцию,которая находит в строке десятичные константы и заменяет их на шестнадцатеричные с тем же значением, например, «ааааа258ххх» на «ааааа0х102ххх».
#include<stdio.h>int main(){char s[200],q[200]; int i,j=0; unsigned long r;printf ("string?\n"); gets(s);for(i=0;s[i];i++)  if(s[i]>='0'&&s[i]<='9')  {q[j++]=s[i];   if(!(s[i+1]>='0'&&s[i+1]<='9'))	 {q[j]=0; sscanf(q,"%lu",&r); printf("0X%lX",r);}}  else{printf("%c",s[i]); j=0;}printf("\n"); getchar(); return 0;}
2) Строка состоит из слов, разделенных одним или несколькими пробелами. Найти слово, состоящее только из различных символов. Если таких слов несколько, найти первое из них. В этой задаче запрещено использовать стандартные функции по обработке строк и класс string.
#include<stdio.h>int main(){char t[255];int j,i=0,k=0,m,b;printf("Enter the string:\n"); gets(t);do if(t[i]>='0')k++; else{if(k){b=1; for(j=i-k;j<i;j++)for(m=j+1;m<i;m++)if(t[j]==t[m])b=0;   if(b){for(j=i-k;j<i;j++)putchar(t[j]); break;} k=0;}}while(t[i++]); putchar('\n'); getchar(); return 0;}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

А напишите пожалуйста вот эту программу:

Разработать класс линейного массива из N целых чисел (N> 0 - константа). В классе должна быть описана единая свойство - массив из N элементов. Также в классе должны быть описаны следующие функции:

1) ввода / вывода элементов массива;

2) вычисление суммы элементов массива;

3) поиск первого максимального элемента в массиве и его индекса;

4) поиск первого минимального элемента массива и его индекса;

5) упорядочения элементов массива;

6) бинарный поиск элемента массива;

7) подсчет количества максимальных элементов массива;

8) подсчет количества различных элементов массива.

В главной программе создать объект класса линейного массива и выполнить тестирование его функций.

#include<iostream>using namespace std;class array{int *a,n;public:array(int m){n=m; a=new int[m];}~array(){delete []a;}void output(){for(int i=0;i<n;i++)cout<<a[i]<<' '; cout<<endl;}void input(){cout<<n<<" elements: "; for(int i=0;i<n;i++)cin>>a[i];}int sum(){int s=0; for(int i=0;i<n;i++)s+=a[i]; return s;}int max(){int m=a[0]; for(int i=n-1;i>=0;i--)if(a[i]>m)m=a[i]; return m;}int imax(){int m=0; for(int i=n-1;i>=0;i--)if(a[i]>a[m])m=i; return m+1;}int min(){int m=a[0]; for(int i=n-1;i>=0;i--)if(a[i]<m)m=a[i]; return m;}int imin(){int m=0; for(int i=n-1;i>=0;i--)if(a[i]<a[m])m=i; return m+1;}void sort(){for(int i=1;i<n;i++)for(int j=0;j<n-1;j++)if(a[j]>a[j+1]){int k=a[j];a[j]=a[j+1];a[j+1]=k;}}int bsearch(int k){sort(); int f=0,l=n; while(f<l) {int m=f+(l-f)/2; if(k<=a[m])l=m; else f=m+1;} return l<n&&a[l]==k?l+1:-1;}int qmax(){int k=0,m=max(); for(int i=0;i<n;i++)k+=m==a[i]; return k;}int diff(){int k=n; for(int i=1;i<n;i++)for(int j=0;j<i;j++)if(a[i]==a[j]){k--;break;} return k;}};int main(){int n; cout<<"n? "; cin>>n; array a(n);a.input(); a.output();cout<<"sum="<<a.sum()<<endl;cout<<"max="<<a.max()<<endl;cout<<"imax="<<a.imax()<<endl;cout<<"min="<<a.min()<<endl;cout<<"imin="<<a.imin()<<endl;a.sort(); a.output();int k; cout<<"number for search? "; cin>>k; cout<<"index is "<<a.bsearch(k)<<endl;cout<<"There is "<<a.qmax()<<" maximal elements"<<endl;cout<<"There is "<<a.diff()<<" different elements"<<endl;cin.get();}

P.S. Индексы у меня для удобства при выводе считаются идущими с 1, а не с 0, как принято внутри C++.

Функция двоичного поиска выдает индекс найденного элемента или -1, если элемент не найден.

Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Начинаю писать шахматы на чистом С ,с использованием WinAPI/OpenGL,и есть много вопросов))

Первый вопрос это создания шахматной доски, то есть её просто рисуешь через опенджл или как??

Как сделать чтоб можно было передвигать фигуры( то есть нажал на фигуру ,потом на какую клетку поставить)??

Как сделать чтоб можно было ходить фигурами правильно?? И что на счёт игры против компьютера,я так понял для этого используется шахматный движок(В моём случае это UCI)? Вообщем меня интересует всё))

Приму любую помощь. (книги,обяснения,куски кода и т.п.).

Ссылка на комментарий
Поделиться на другие сайты

Здраствуйте, мне нужно написать конвертер изображений BMP -> JPEG на чистом Си, с использованием только стандартных функций (пишу на Pelles C). Вот в чём проблема:

1) Когда считываю BMP-файл, я вывожу все данные о файле на экран, но они немного криво показываются (например высота и ширина изображения), хотя я пользовался данными с википедии...

2) Я так понимаю чтобы мне перевести BMP в JPEG, нужно получить двумерный массив RGB значений (так мне сказали), для последующего перевода этих значений в JPEG. Значения RGB-палитры у меня есть, но я не знаю как правильно загнать их в двумерный массив.

Мне подсказывали, что надо записывать как-то так: "когда получишь двухмерный массив из [R,G,B] значений, его надо будет просто закодировать в жпег.

В шапке у тебя есть размеры рисунка Width х Height (Ширина х Высота, например 1024 х 768), есть одномерный массив array1d, ну а индексы по схеме.

array2d[i/Width][i%Width] = array1d", но всё сводится к тому, что программа криво выдаёт Ширину и Высоту изображения.

Вообщем кто сможет чем-либо помочь - буду очень благодарен!

#include <stdio.h>#include <string.h>#include <locale.h>// Структура BITMAP FILE HEADER ---------------------------------------------------------------------------------------------------------typedef struct{unsigned char  b1, b2;   //Тип файла, Символы BM (смение 0, длина 2)unsigned long  bfSize;   //Размер файла в байтах (Смещение 2, длина 4)unsigned short bfReserved1;		 //Бесполезно (Смещение 6, длина 2)unsigned short bfReserved2;		 //Бесполезно (Смещение 8, длина 2)unsigned long bfOffBits;		  //Смещение до самого изображения (Смещение 10, длина 4)} BmpHeader;// Структура BITMAP INFO HEADER ---------------------------------------------------------------------------------------------------------typedef struct{unsigned long   biSize;						  //Размер данной структуры в байтах. Опред. версия форматаunsigned long   biWidth;					  //Ширина изображения в пикселях.unsigned long   biHeight;					 //Высота изображения в пикселях.  unsigned short biPlanes;					 //Количество цветовых плоскостей и в формате BMP содержит единицу.  unsigned short biBitCount;				 //Количество бит на пиксель.  unsigned short biCompression;		 //Тип сжатия для сжатых изображений  unsigned short biSizeImage;			   //Размер изображения в байтах. Может содержать ноль для BI_RGB-изображений.unsigned long   biXPelsPerMeter;	  //Горизонтальное разрешение в пикселях на метр для целевого устройства.unsigned long   biYPelsPerMeter;	  //Вертикальное разрешение в пикселях на метр для целевого устройства.  unsigned short biClrUsed;				  //Количество используемых цветовых индексов в палитре.  unsigned short biClrImportant;		 //Количество элементов палитры, необходимых для отображения изображения.} BmpImageInfo;// Структура палитры ---------------------------------------------------------------------------------------------------------typedef struct {   unsigned char rgbBlue;   unsigned char rgbGreen;   unsigned char rgbRed;   unsigned char rgbAlpha; } RGB;// Основная программа------------------------------------------------------------------------------------------------------------------------int main(){setlocale(LC_ALL, "");BmpHeader header;	 BmpImageInfo info;	 RGB *palette, *pixel;int i = 0;FILE *BmpInput, *BmpPalette;if ((BmpInput = fopen("E:\\qwe.bmp", "rb")) == NULL) return -1;if( !BmpInput ) printf("Ошибка чтения BMP-файла.\n");if ( fread (&header, sizeof(BmpHeader), 1, BmpInput) != 1 ) printf("Ошибка чтения заголовка изображения.\n");if ( fread (&info, sizeof(BmpImageInfo), 1, BmpInput) != 1 )   printf("Ошибка чтения информации изображения.\n");printf("_______Данные_о_BITMAP_FILE_HEADER_______\n");printf("Тип файла			   : %c%c\n", header.b1, header.b2);printf("Размер файла		    : %d bytes\n", header.bfSize);printf("Резервный слот 1	    : %d\n", header.bfReserved1);printf("Резервный слот 2	    : %d\n", header.bfReserved2);printf("Смешение до изображения : %d\n\n", header.bfOffBits);printf("_______Данные_о_BITMAP_INFO_HEADER_______\n");printf("Размер структ. в байтах : %d bytes\n", info.biSize);printf("Ширина изображения	  : %d px\n", info.biWidth);printf("Высота изображения	  : %d px\n", info.biHeight);printf("Кол. цветовых плоск.    : %d\n", info.biPlanes);printf("Кол. бит на пиксель	 : %d\n", info.biBitCount);printf("Тип сжатия			  : %d\n", info.biCompression);printf("Размер изобр. в байтах  : %d bytes\n", info.biSizeImage);printf("Горизонт. разрешение    : %d px\n", info.biXPelsPerMeter);printf("Вертикальное разрешение : %d px\n", info.biYPelsPerMeter);printf("Кол. цветов. инд. в пал.: %d\n", info.biClrUsed);printf("Кол. элементов палитры  : %d\n\n", info.biClrImportant);// Считываем Цветовые индексы-------------------------------------------------------------------------------------------------------------------if ( info.biSizeImage > 0 ){   palette = (RGB*)malloc(sizeof(RGB) *info.biSizeImage);   if ( fread(palette, sizeof(RGB), info.biSizeImage, BmpInput) != info.biSizeImage )   printf("Ошибка чтения палитры изображения.\n");}printf("Цветовые индексы считаны.\n");// Записываем Цветовые индексы в файл------------------------------------------------------------------------------------------------------ BmpPalette = fopen("E://BmpMapColor.txt", "wr"); if(!BmpPalette) printf("Файл не может быть создан в данном разделе.\n"); for(int i=0; info.biSizeImage>i; i++) {   pixel = &palette[i]; if( fprintf(BmpPalette, "R:%d, G:%d, B:%d\n", pixel->rgbRed, pixel->rgbGreen, pixel->rgbBlue) < 0); //Записываем RGB значения в файл }fclose(BmpInput);fclose(BmpPalette);return 0;}
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...