Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2016, 23:51   #1
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию не получается переделать под си((

#include <windows.h>
#include <math.h>
#define ROUND(a) ((int) (a + 0.5))
/* set window handle */
static HWND sHwnd;
static COLORREF redColor=RGB(255,0,0);
static COLORREF blueColor=RGB(0,0,255);
static COLORREF greenColor=RGB(0,255,0);
void SetWindowHandle(HWND hwnd){
sHwnd=hwnd;
}
/* SetPixel */
void setPixel(int x,int y,COLORREF& color=redColor)
{
if(sHwnd==NULL){
MessageBox(NULL,"sHwnd was not initialized !","Error",MB_OK|MB_ICONERROR);
exit(0);
}
HDC hdc=GetDC(sHwnd);
SetPixel(hdc,x,y,color);
ReleaseDC(sHwnd,hdc);
return;
}
void ellipsePlotPoints(int xCenter, int yCenter, int x, int y){
setPixel(xCenter + x, yCenter + y);
setPixel(xCenter - x, yCenter + y);
setPixel(xCenter + x, yCenter - y);
setPixel(xCenter - x, yCenter - y);
}
void drawEllipse(int xCenter, int yCenter, int Rx, int Ry){
int Rx2 = Rx*Rx;
int Ry2 = Ry*Ry;
int twoRx2 = 2 * Rx2;
int twoRy2 = 2 * Ry2;
int p;
int x = 0;
int y = Ry;
int px = 0;
int py = twoRx2 * y;
ellipsePlotPoints(xCenter, yCenter, x, y);
/* For Region 1 */
p = ROUND(Ry2 - (Rx2*Ry) + (0.25) * Rx2);
while(px < py){
x++;
px += twoRy2;
if(p < 0){
p += Ry2 + px;
}else{
y--;
py -= twoRx2;
p += Ry2 + px - py;
}
ellipsePlotPoints(xCenter, yCenter, x, y);
}
/* For Region 2*/
p = ROUND(Ry2 * (x + 0.5)*(x + 0.5) + Rx2 * (y - 1)*(y - 1) - Rx2 * Ry2);
while(y > 0){
y--;
py -= twoRx2;
if(p > 0){
p += Rx2 - py;
}else{
x++;
px += twoRy2;
p += Rx2 - py + px;
}
ellipsePlotPoints(xCenter, yCenter, x, y);
}
}
/* Window Procedure WndProc */
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
switch(message){
case WM_PAINT:
SetWindowHandle(hwnd);
drawEllipse(200, 200, 100, 50);
break;
case WM_CLOSE: // FAIL THROUGH to call DefWindowProc
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
break; // FAIL to call DefWindowProc //
}
return DefWindowProc(hwnd,message,wParam,l Param);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow){
static TCHAR szAppName[] = TEXT("Ellipse");
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW|CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
// Register the window //
if(!RegisterClass(&wndclass)){
MessageBox(NULL,"Registering the class failled","Error",MB_OK|MB_ICONERROR );
exit(0);
}
// CreateWindow //
HWND hwnd=CreateWindow(szAppName,"Mid Point Ellipse Drawing - Programming Techniques",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
if(!hwnd){
MessageBox(NULL,"Window Creation Failed!","Error",MB_OK);
exit(0);
}
// ShowWindow and UpdateWindow //
ShowWindow(hwnd,iCmdShow);
UpdateWindow(hwnd);
// Message Loop //
MSG msg;
while(GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
/* return no error to the operating system */
return 0;
}
Романннн вне форума Ответить с цитированием
Старый 01.06.2016, 07:49   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Это вообще-то и есть си...
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 01.06.2016, 07:56   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Может он имел ввиду консоль.

Уважаемый, покажите пример кода (пусть даже другую задачу) под который хотите переделать.
ura_111 вне форума Ответить с цитированием
Старый 01.06.2016, 08:22   #4
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию

Задание:компоненты бинарного файла-записи,
состоящие из четырех чисел-координат центра кольца и его внешнего и внутреннего радиусов.
Определить, какое кольцо имеет наибольшую площадь, какое-наименьшую.
Проиллюстрировать данную задачу, построив все кольца на экране,
кольцо с наименьшей площадью залить зеленым цветом, а с наибольшим-красным.

#include <stdio.h>
#include <stdlib.h>
#define N 9
int input_struct();
void output_struct();
void struct_in file();
void file in arrstruct();
void seach_max_min();
struct ring
{
float x,y,r,R;
} typedef *pr;

int main(void)
{
int i,number;
struct ring[N];
char filename[15];
FILE *f;
puts("input filename");
gets(filename);
if((f=fopen(filename,"a+"))==NULL)
{
printf("can't open '%s',filename);
return 1;
}
printf("input number rings:");
scanf("%d",&number);
printf("input parametes your ring");
for(i=0;i<N;i++)
{
input_struct();
output_struct();
}
struct_in file();
file in arrstruct();
seach_max_min();
fclose(f);
return 0;
}
int input_struct()
{
scanf("%*c");
puts("enter x:");
scanf("%f\n",pr->x);
puts("enter y:");
scanf("%f\n",pr->y);
puts("enter internal radius:");
scanf("%f\n",pr->r);
puts("enter external radius:");
scanf("%f\n",pr->R);
retutn 0;
}
void output_struct(struct ring *pr)
{
printf("\nx=%f\ty=%d\tr=%d\tR=%d\t\ n",pr->x,pr->y,pr->r,pr->R);
return;
}
int struct_in file()
{
fwrite(*pr,sizeof(*pr),f);
return 1;
}
int file in arrstruct()
{
fread(*pr,sizeof(*pr),f);
return 1;
}
int search_max_min()
{
for()
{

}
return 1;
}
это моя прога,но в ней походу куча ошибок)
а графику мы вообще еще не изучали ,но я взял,а теперь уже поздно идти назад,сначала пытался установить SDL,но не получилось.Теперь узнал что можно с windows.h сделать ничего не устанавливая в добавок к среде.Нашел пример вот той функции,хотел разобрать,но она даже не скомпилировалась.Потом я узнал,что она написана под C++,а теперь думаю, как переделать под си и изучить,чтобы написать прогу.

Последний раз редактировалось Романннн; 01.06.2016 в 08:28. Причина: не все дописал
Романннн вне форума Ответить с цитированием
Старый 01.06.2016, 08:29   #5
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию

а,еще чем отличается консоль от си?
Романннн вне форума Ответить с цитированием
Старый 01.06.2016, 08:32   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Потом я узнал,что она написана под C++
Узнавайте дальше, а потом покажите, что в этом коде плюсового...
p51x вне форума Ответить с цитированием
Старый 01.06.2016, 08:41   #7
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию

ну я вообще изучаю си, и С++ от С не могу отличить(я только знаю,что там есть классы и вместо printf там count),но мне сказали что там есть с++,вот я и подумал почему не компилируется в Code blocks,а вообще там писал компилятор про то что не поставлена скобочка или точка с запятой,но я этого не нашел косяка,может вы найдете и не надо будет ничего под си переделывать(может и не надо переделывать(я на сто даже не уверен))))
Романннн вне форума Ответить с цитированием
Старый 01.06.2016, 08:47   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

начните с явных косяков: что это за названия
Код:
void struct_in file();
void file in arrstruct();
что здесь пробелы делают? или это типы? тогда зачем воид?
p51x вне форума Ответить с цитированием
Старый 01.06.2016, 09:13   #9
Романннн
Пользователь
 
Регистрация: 28.02.2016
Сообщений: 37
По умолчанию

то есть в названиях функций пробелов не должно быть?
Романннн вне форума Ответить с цитированием
Старый 01.06.2016, 09:36   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Для вас это новость? Как вы представляете, что компилятор будет отличать "тип название_функции" от "просто такое название" ???
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Android Studio Не получается переделать LazyAdapter под ListFragment AlexVinn Java Мобильная разработка (Android) 1 09.05.2016 16:58
Переделать код под условие Sashaa_i C# (си шарп) 0 06.12.2015 02:48
Переделать VBA под Си Карина Т_Т Помощь студентам 5 13.02.2014 16:59
Переделать под С++ T_h_i_s Помощь студентам 2 21.12.2012 16:49
переделать под windows al072 C/C++ Сетевое программирование 13 16.02.2010 20:57