
10.05.2009, 09:22
|
|
Познающий
Регистрация: 24.11.2008
Сообщений: 40
С нами:
9190279
Репутация:
0
|
|
вот код скажите плиз че не так?:
Код:
#include <windows.h>
#include <string.h>
#include <time.h>
#include <math.h>
#define ID_TIMER 1
#define TWOPI (2 * 3.14159)
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "AnaClock" ;
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass ;
wndclass.cbSize = sizeof (wndclass) ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = NULL ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
wndclass.hIconSm = NULL ;
RegisterClassEx (&wndclass) ;
hwnd = CreateWindow (szAppName, "Analog Clock",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
if (!SetTimer (hwnd, ID_TIMER, 1000, NULL))
{
MessageBox (hwnd, "Too many clocks or timers!", szAppName,
MB_ICONEXCLAMATION | MB_OK) ;
return FALSE ;
}
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
void SetIsotropic (HDC hdc, int cxClient, int cyClient)
{
SetMapMode (hdc, MM_ISOTROPIC) ;
SetWindowExtEx (hdc, 1000, 1000, NULL) ;
SetViewportExtEx (hdc, cxClient / 2, -cyClient / 2, NULL) ;
SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;
}
void RotatePoint (POINT pt[], int iNum, int iAngle)
{
int i ;
POINT ptTemp ;
for (i = 0 ; i < iNum ; i++)
{
ptTemp.x = (int) (pt[i].x * cos (TWOPI * iAngle / 360) +
pt[i].y * sin (TWOPI * iAngle / 360)) ;
ptTemp.y = (int) (pt[i].y * cos (TWOPI * iAngle / 360) -
pt[i].x * sin (TWOPI * iAngle / 360)) ;
pt[i] = ptTemp ;
}
}
void DrawClock (HDC hdc)
{
int iAngle ;
POINT pt[3] ;
for (iAngle = 0 ; iAngle < 360 ; iAngle += 6)
{
pt[0].x = 0 ;
pt[0].y = 900 ;
RotatePoint (pt, 1, iAngle) ;
pt[2].x = pt[2].y = iAngle % 5 ? 33 : 100 ;
pt[0].x -= pt[2].x / 2 ;
pt[0].y -= pt[2].y / 2 ;
pt[1].x = pt[0].x + pt[2].x ;
pt[1].y = pt[0].y + pt[2].y ;
SelectObject (hdc, GetStockObject (BLACK_BRUSH)) ;
Ellipse (hdc, pt[0].x, pt[0].y, pt[1].x, pt[1].y) ;
}
}
void DrawHands (HDC hdc, struct tm *datetime, BOOL bChange)
{
static POINT pt[3][5] = { 0, -150, 100, 0, 0, 600, -100, 0, 0, -150,
0, -200, 50, 0, 0, 800, -50, 0, 0, -200,
0, 0, 0, 0, 0, 0, 0, 0, 0, 800 } ;
int i, iAngle[3] ;
POINT ptTemp[3][5] ;
iAngle[0] = (datetime->tm_hour * 30) % 360 + datetime->tm_min / 2 ;
iAngle[1] = datetime->tm_min * 6 ;
iAngle[2] = datetime->tm_sec * 6 ;
memcpy (ptTemp, pt, sizeof (pt)) ;
for (i = bChange ? 0 : 2 ; i < 3 ; i++)
{
RotatePoint (ptTemp[i], 5, iAngle[i]) ;
Polyline (hdc, ptTemp[i], 5) ;
}
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static int cxClient, cyClient ;
static struct tm dtPrevious ;
BOOL bChange ;
HDC hdc ;
PAINTSTRUCT ps ;
time_t lTime ;
struct tm *datetime ;
switch (iMsg)
{
case WM_CREATE :
time (&lTime) ;
datetime = localtime (&lTime) ;
dtPrevious = * datetime ;
return 0 ;
case WM_SIZE :
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
return 0 ;
case WM_TIMER :
time (&lTime) ;
datetime = localtime (&lTime) ;
bChange = datetime->tm_hour != dtPrevious.tm_hour ||
datetime->tm_min != dtPrevious.tm_min ;
hdc = GetDC (hwnd) ;
SetIsotropic (hdc, cxClient, cyClient) ;
SelectObject (hdc, GetStockObject (WHITE_PEN)) ;
DrawHands (hdc, &dtPrevious, bChange) ;
SelectObject (hdc, GetStockObject (BLACK_PEN)) ;
DrawHands (hdc, datetime, TRUE) ;
ReleaseDC (hwnd, hdc) ;
dtPrevious = *datetime ;
return 0 ;
case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;
SetIsotropic (hdc, cxClient, cyClient) ;
DrawClock (hdc) ;
DrawHands (hdc, &dtPrevious, TRUE) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY :
KillTimer (hwnd, ID_TIMER) ;
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
}
|
|
|

12.05.2009, 12:26
|
|
Новичок
Регистрация: 09.05.2009
Сообщений: 2
С нами:
8951098
Репутация:
0
|
|
помогите плс
задали вот такое задание в Делфи: написать программу расчитывающаю количество дней,часов,минут,секунд между двумя датами, заданными в формате например 12.01.2009 14:37:59 и системной датой, временем... расчёт должен вестись по всем правилам, с учётом високосных годов....
и если можно плиз с пояснениями.....
|
|
|

10.05.2009, 14:09
|
|
Новичок
Регистрация: 08.05.2009
Сообщений: 8
С нами:
8952904
Репутация:
0
|
|
массив X1,X2,...,Xn попадает на заданный отрезок
Координатами x,y заданы n точек плоскости.
Найти:
• процент точек, удаление которых от начала координат больше заданной величины r и притом обе координаты положительны;
• среднее удаление всех точек от начала координат.
Заранее благодарю
=*
|
|
|

10.05.2009, 14:12
|
|
Новичок
Регистрация: 08.05.2009
Сообщений: 8
С нами:
8952904
Репутация:
0
|
|
з.ы.
должна быть программа с заглушками.
|
|
|

10.05.2009, 17:40
|
|
Познающий
Регистрация: 04.01.2008
Сообщений: 43
С нами:
9658941
Репутация:
20
|
|
Помогите пожалуйста , чтобы работало через Trubo C.
Реализовать команду, переставляющую местами первую и последнюю записи данного файла, состоящего из записей заданной длины.
|
|
|

11.05.2009, 09:45
|
|
Познающий
Регистрация: 05.03.2007
Сообщений: 99
С нами:
10097277
Репутация:
44
|
|
Помогите решить, кому не сложно 
Программа на C
3.Написать подпрограмму сортировки 2-мерного массива целых по строкам (использовать сумму значений строки), сохранив эти значения в главной диагонали массива.
|
|
|

11.05.2009, 15:59
|
|
Познающий
Регистрация: 26.05.2006
Сообщений: 33
С нами:
10504627
Репутация:
2
|
|
Напишите в чем ошибка в предпоследней строчке! Если поставить вместо "а" "3" в предпоследней строке то работает, а так нет, как сделать?
#include<iostream>
using namespace std;
template<class T> T sum(T m, int n) {return m+n;}
template<class T> T sum(T* a, int size)
{
T s = 0;
for(int i=0; i<size; ++i)
s+=a[i];
return s;
}
int main()
{
cout<<sum(1,2)<<endl;
int a[]={1,2,3};
cout<<sum(3,3)<<endl;
return 0;
}
|
|
|

12.05.2009, 13:57
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
С нами:
9185589
Репутация:
128
|
|
Сообщение от Тилль
Напишите в чем ошибка в предпоследней строчке! Если поставить вместо "а" "3" в предпоследней строке то работает, а так нет, как сделать?
#include<iostream>
using namespace std;
template<class T> T sum(T m, int n) {return m+n;}
template<class T> T sum(T* a, int size)
{
T s = 0;
for(int i=0; i<size; ++i)
s+=a[i];
return s;
}
int main()
{
cout<<sum(1,2)<<endl;
int a[]={1,2,3};
cout<<sum(3,3)<<endl;
return 0;
}
Ты передал литерал вместо указателя в первом параметре в обоих случаях использования функции sum.
Не совсем понял вопрос. Функция ждет от тебя указатель, зачем тебе передавать ей тройку, вместо него? Какую из двух перегруженных функций ты хотел использовать?
Программа будет работать в обоих случаях, потому что подставляется перегруженная функция, которая удовлетворяет переданным параметрам (их типам)
Последний раз редактировалось ss88; 12.05.2009 в 14:06..
|
|
|

12.05.2009, 13:54
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
С нами:
9185589
Репутация:
128
|
|
Сообщение от Mozy
2 Тилль
У меня на Microsoft Visual Studio 2008 всё работает
ниодной ошибки не выдаёт
Visual Studio.... это же мутант.... Стандарты? Да он ест их на завтрак, обед и ужин.
Так что о правильности написания кода нельзя судить по словам этого демона 
|
|
|

12.05.2009, 23:06
|
|
Новичок
Регистрация: 28.07.2008
Сообщений: 25
С нами:
9361230
Репутация:
0
|
|
мм.. привет всем.. начали изучать делфи. столкнулся с первой проблемой.. препод сказал нестандартная задача.. как не пробовал не получается.. не совсем понимаю именно сути задачи.. если можно помогите решить.. и будет супер если будет пара комментов.. вот собственно сама задача
Задачка по Делфи.
Суммирование рядов.
для заданного положительного Е и заданного х выччслить сумму ряда с точностью Значение параметра m, входящего в некоторые варианты, вводится с клавнатуры. Суммирование ряда завершается, если модуль очередного слагаемого меньше Е. Значение суммы сравнить с соответствующим значением в левой части равенства. действительные типы объявить ехtended. Предусмотреть ограничение количества слагаемых ряда для предотвращения <зацикливанию> программы.
(1-x)^(-m)=1+m*x+[m*(m+1)/2!]*x^2+[m*(m+1)(m+2)/3!]*x^3+.... |x|<1; m>0
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|