Показать сообщение отдельно

  #4  
Старый 03.05.2009, 11:46
frostJKE
Новичок
Регистрация: 15.05.2008
Сообщений: 9
С нами: 9468639

Репутация: 1
По умолчанию

Подскажите пожалуйста что здесть не так?

PHP код:
#include <graphics.h> //Подключение библиотек
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <dos.h>
#define mash 40 //Масштаб - количество пикселей равное числу 0.2
#define PI 3.141592653 //Первая математическая константа(Число Пи(^_^))
#define angle5 0.0872665 //Пять градусов в радианах
#define step 0.0001  //Шаг перебора значений переменной t, при маленьких значениях увеличивается время работы, при больших целостность графика теряется


double A,B,C,D,x1,y1,x2,y2,t,anglex=0.0;
int x,y,maxx,maxy,pmsh=0,sdx=0,sdy=0,g=0;

void drawgraph();

void drawset(){   //Начало функции построения системы координат
int i;
clrscr();  //очистка текстового экрана (Возвращение каретки в начало)
setfillstyle(SOLID_FILL0);
bar(0,0,maxx,maxy);  //Очистка графического экрана
printf("\n\n\n  y=%.2lf*(exp(x/2)+exp(-x/2))/2",A);              //Zamenit' na viravnivanie po pravoi stenke!!!
if(A>0.0)
printf("\n  max - none\n  min = %.2lf",A);
if(
A<0.0)
printf("\n  max = 0.0\n  min = 0.0");
if(
A==0.0)
printf("\n  max = %.2lf\n  min - none",A);
//printf("\n\t\t\t\t\t     y=sin(%.2lf+%.2lf*t)*cos(%.2lf+t)",A,B,D);

settextstyle(SMALL_FONTHORIZ_DIR4);    //Выбор шрифта
setlinestyle(SOLID_LINE11); //Выбор пунктирной линии

if(g%2==0){

line(0,maxy/2,maxx,maxy/2);   //Построение линий координатной сетки
line(maxx/2,0,maxx/2,maxy);


moveto(maxx/2+5,maxy/2+5);
outtext("0");
outtextxy(maxx/2-10,5,"Y");
outtextxy(maxx-14,maxy/2-14,"X");


for(
i=1;(i*mash<maxx/2)||(i*(mash+pmsh)<maxy/2);i++){  //Цикл построение шкалы

   
line(maxx/2+i*(mash+pmsh),maxy/2+5,maxx/2+i*(mash+pmsh),maxy/2-5); //Деления на положительной части шкалы абсцисс
   
line(maxx/2-i*(mash+pmsh),maxy/2+5,maxx/2-i*(mash+pmsh),maxy/2-5); //Деления на отрицательной части шкалы абсцисс

   
line(maxx/2-5,maxy/2-i*(mash+pmsh),maxx/2+5,maxy/2-i*(mash+pmsh));  //Деления на положительной части шкалы ординат
   
line(maxx/2-5,maxy/2+i*(mash+pmsh),maxx/2+5,maxy/2+i*(mash+pmsh));  //Деления на отрицательной части шкалы ординат


    
moveto(maxx/2+i*(mash+pmsh)+5,maxy/2+5); //Нанесение значений шкалы х
    
switch(i){
     case 
1outtext("1");break;
     case 
2outtext("2");break;
     case 
3outtext("3");break;
     case 
4outtext("4");break;
     case 
5outtext("5");break;
     case 
6outtext("6");break;
     case 
7outtext("7");break;
     case 
8outtext("8");break;
     }

    
moveto(maxx/2-i*(mash+pmsh)+5,maxy/2+5);  //Нанесение значений шкалы х
    
switch(i){
     case 
1outtext("-1");break;
     case 
2outtext("-2");break;
     case 
3outtext("-3");break;
     case 
4outtext("-4");break;
     case 
5outtext("-5");break;
     case 
6outtext("-6");break;
     case 
7outtext("-7");break;
     case 
8outtext("-8");break;
     }

    
moveto(maxx/2+5,maxy/2-1+i*(mash+pmsh));  //Нанесение значений шкалы у
    
switch (i){
     case  
1outtext("-1");break;
     case  
2outtext("-2");break;
     case  
3outtext("-3");break;
     case  
4outtext("-4");break;
     case  
5outtext("-5");break;
     case  
6outtext("-6");break;
     case  
7outtext("-7");break;
     case  
8outtext("-8");break;
     case  
9outtext("-9");break;
     case 
10outtext("-10");break;
     case 
11outtext("-11");break;
     }

    
moveto(maxx/2+6,maxy/2+1-i*(mash+pmsh)); //Нанесение значений шкалы у
    
switch (i){
     case  
1outtext("1");break;
     case  
2outtext("2");break;
     case  
3outtext("3");break;
     case  
4outtext("4");break;
     case  
5outtext("5");break;
     case  
6outtext("6");break;
     case  
7outtext("7");break;
     case  
8outtext("8");break;
     case  
9outtext("9");break;
     case 
10outtext("10");break;
     case 
11outtext("11");break;
     }
   } 
//Конец цикла
}
drawgraph();

//Конец функции


void drawgraph(){ //Функция построения графика

t=maxx/(2*(mash+pmsh));

for(
x1=-t;x1<=t;x1+=step){ //Перебор ОДЗ t

y1=A*(exp(-x1/2)+exp(x1/2))/2//Получение координаты х

x2=x1*cos(anglex)-y1*sin(anglex); //Смещение координат в случае
y2=y1*cos(anglex)+x1*sin(anglex); //Поворота графика на угол anglex
=x2*(mash+pmsh)+sdx//Координата х с учетом возможного сдвига и масштаба
=-y2*(mash+pmsh)+sdy//Координата у с учетом возможного сдвига ,масштаба и добавочного масштаба для у

putpixel(maxx/2+x,maxy/2+y,5); //Нанесение полученной точки на экран
}
//drawset(); //Вызов функции drawset
//Конец функции построения графика



void main(){ //Основная функция

   
char ci;
   
int gdriver DETECTgmodeerrorcode;

   
clrscr();
   
printf("\nGraffic y=A*(exp(x/2)+exp(-x/2))/2\n");
   
printf("\nEnter A:");
   while(
scanf("%lf", &A)!=1){ //Ввод коэффициентов графика
     
printf("\nError! Re-enter please> ");
     
ci='c'; while((ci!='\n') && (ci!=EOF)) ci=getchar();}
   
clrscr();
   
printf("\nControl:\n\nQ - quit\nG - hide set\n\nA - dicrease \"y\" scale\nS - increase \"y\" scale\nD - reset \"y\" scale\n\nZ - rotate -5gr\nX - rotate  5gr\nC - reset rotate angle");
   
printf("\n\n2 - y-15pix\n8 - y+15pix\n4 - x-15pix\n6 - x+15pix\n5 - reset");
   
getch();


   
initgraph(&gdriver, &gmode"C:\\BORLANDC\\BGI"); //Инициализация графического режима
   
errorcode graphresult();
   if (
errorcode != grOk){
      
printf("Graphics error: %s\n"grapherrormsg(errorcode)); //Вывод сооьветствующего сообщения в случае ошибки инициализации графического режима
      
printf("Press any key to halt:");
      
getch();
      exit(
1);}

   
maxx=getmaxx();//Получение разрешения экрана
   
maxy=getmaxy();

   while(
1){ //Вывод графика и ожидание действий
   
drawset();
   
ci=getch();
   if(
ci=='q') break;
   if(
ci=='g'g++;
   if(
ci=='x'anglex+=angle5;
   if(
ci=='z'anglex-=angle5;
   if(
ci=='a'pmsh-=(mash+pmsh)/10;
   if(
ci=='s'pmsh+=(mash+pmsh)/10;
   if(
ci=='c'anglex=0;
   if(
ci=='d'pmsh=0;
   if(
ci== 50sdy+=15;
   if(
ci== 52sdx-=15;
   if(
ci== 53sdy=sdx=0;
   if(
ci== 54sdx+=15;
   if(
ci== 56sdy-=15;}

   
closegraph(); //Закрытие видеорежима
//Конец программы 
Помогите, заранее благодарен! Спасибо!
 
Ответить с цитированием