Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> построить график выбранной функции.. графика С++ 
:(
    Опции темы
lisica198808
  Дата 4.5.2013, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 30.11.2012

Репутация: нет
Всего: нет



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

чтото вроде этого должно быть::
Код

x1=x0+int(mx*x); 
y1=y0-int(my*y); 
moveto(x1,y1);lineto(x1,y1);


где x0=320(640/2); y0=240(480/2);- это начало координат в центре экрана 
mx и my - масштаб на который нужно умножать.. вот его то я и незнаю как правильно посчитать.. 
mx=620/(реальные значения)-начальные и конечные значения графика у меня разные могут быть,потому что  все три функции на разных интервалах вызываются,как правильно записать незнаю:cry:

my=440/максимум принятых значений функции - их тоже разное колличество.. как записать незнаю...

подскажите как.
Я хоть немного на верном пути рассуждаю??
на всякий случай программа с функциями  для которых нужен график
Код

#include <graphics.h> // vkljy4it' opisanie grafi4eskix fynkcij С/С++ Borland'ah
#include<stdio.h>
#include <conio.h>      // opisanie fynkcij vvoda-vivoda s konsoli(dlja getch())
#include <math.h>      // opisanie matemati4eskix fynkcij (dlja sin)
#include<stdlib.h>
#include <fstream>//rabota s failami

float f1(float x)/*vira*enie 1*/
 {return (x*cos(x))/(1+ pow(x,2));}
 
float f2 (float x) /*vira*enie 2*/
{return(exp(x)/x);}
 
float f3 (float x)/*vira*enie 3*/
{return (1/(3+2*cos(x)));}
 


float proizv1(float (*f)(float),float x)
{/* pervaja proizvodnaja iz klassi4eskogo opredelenija eto f'(x)=(f(x0)-f(x))/(x-x0) */
 /* opredelim proizvodnyjy s tochnost'jy h=x-x0=0.001 */  
 /* znachit x0=x-h */
/*polychaem znachenie dlja proizvodnoj (f(x-h)-f(x)/h */
   float h;float res;
   h=0.001; 
   res = ( (*f)(x) - (*f)(x - h) ) / h;
   return res;     
}


float proizv2( float (*f)(float), float x)
{/*vtoraja proizvodnaja iz klassi4eskogo opredelenija*/
/* eto f''(x)=(f'(x))' proizvodnaja ot proizvodnoj*/
  float h;   float res;
  h=0.001;
  res = (proizv1( f, x ) - proizv1(f, x - h)) / h;
   return res; 

}
 
 int grafik()
 {setcolor(5);
line(320,0,320,480);
line(0,240,640,240);}





float tochki(float (*t)(float),float xn,float xk,float dx)    //vizov bydet tochki(proizv2,xn,xk,dx)
{float x1,y; int i;
 system("cls");
 FILE *toch;
 toch=fopen("reshenie.txt","w");
 printf(" __________________________\n");
 printf("|___i____|___x___|_____y___|\n");
 fprintf(toch," __________________________\n");
 fprintf(toch,"|___i____|___x___|_____y___|\n");
  i=0;
  for (x1=xn;x1<=xk;x1+=dx)
   {proizv2(t,x1);
    i++;
    printf("|___%d____|___%1.f__|__%.5f__|\n",i,x1,proizv2(t,x1));
    fprintf(toch,"|___%d____|___%1.f__|__%.5f__|\n",i,x1,proizv2(t,x1));
   }
    printf("tochka peregiba:\n");
    fprintf(toch,"tochka peregiba:\n");
   
  /*yslovie syshestvovanija tochki peregiba*/
grafik();
      for (x1=xn;x1<=xk;x1+=dx)
          {
                if ( (proizv2(t,x1))*(proizv2(t,x1+1))<=0 )
                { printf(" x=%1.f y=%.5f\n",x1,proizv2(t,x1));
                 fprintf(toch," x=%1.f y=%.5f\n",x1,proizv2(t,x1));
                }
                //tochka peregiba tam, gde fynkcija menjaet znak        
          }
fclose(toch);
    
}

 int menu_vibor_usl3()//OFORMLENIE MENU DLJA YSLOVIJ
 {cleardevice();
 setcolor(2);
 line(160,40,545,40);//gorizontali
 outtextxy(250,45," 1.  x*cos(x))/(1+ pow(x,2) ");
 line(160,70,545,70);
 outtextxy(300,75," 2. exp(x)/x ");
 line(160,100,545,100);
 outtextxy(280,105," 3. 1/(3+2*cos(x)) ");
 line(160,130,545,130);

 line(160,40,160,130);//vertiikali
 line(545,40,545,130);
 
}

void vibor_f(  )
{int n;
system("cls");
menu_vibor_usl3();
printf("S kakoj fynkciej bydem rabotat'?\n");
  scanf("%d",&n);
   switch(n)
            {case 1: tochki(f1,-4,4,1); break;//dlja pervoj fynkcii na intervale -4 4
             case 2: tochki(f2,-6,1,1); break;//dlja vtoroj fynkcii na intervale -6 1     
             case 3: tochki(f3,0,4,1); break;//dlja tret'ej fynkcii na intervale 0 4
             case 0: break;    
             default:printf("Nevernij re*im\n");  
             }
}     
void o_zadanii3()
 {system("cls");
  printf("Opredelit' est' li tochka peregiba na zadannom intervale:\n\n");
  printf("    (x*cos(x))/(1+ pow(x,2)) na prome*ytke -4 4 \n\n");
  printf("    exp(x)/x na prome*ytke -6 1 \n\n");
  printf("    1/(3+2*cos(x))na prome*ytke 0 4 \n\n");

  FILE *z;//rabota s failom
  z=fopen("zadanie.txt","w");
  fprintf(z,"Opredelit' est' li tochka peregiba na zadannom intervale:\n\n");
  fprintf(z,"   (x*cos(x))/(1+ pow(x,2)) na prome*ytke -4 4 \n\n");
  fprintf(z,"   exp(x)*pow(x,-1) na prome*ytke -6 1 \n\n");
  fprintf(z,"   1/(3+2*cos(x)) na prome*ytke 0 4 \n\n");
  fclose(z);
  
   }


void yslovie3()
{system("cls");
printf("Neobkhodimoe uslovie sushchestvovaniya tochki peregiba:\n");
printf("esli funkciya f(x),dvazhdi differentsiruemaya v nekotoroy okrestnosti tochki x0,\n");
printf("imeet v x0 tochku peregiba, to f''(x0)=0\n\n");


FILE *y;//rabota s failom
y=fopen("yslovie.txt","w");
fprintf(y,"Neobkhodimoe uslovie sushchestvovaniya tochki peregiba:\n");
fprintf(y,"esli funkciya f(x),dvazhdi differentsiruemaya v nekotoroy okrestnosti tochki x0,\n") ;
fprintf(y,"imeet v x0 tochku peregiba, to  f''(x0)=0\n\n");
fclose(y);

}
void programma3()
 {
  system("cls");
  printf("Programmy vipolnila i sostavila stydentka gryppi IUSz-12\n");
  printf("Udal'cova Marina Aleksandrovna\n\n");
 
  FILE *p;//rabota s failom
  p=fopen("programma.txt","w");
  fprintf(p,"Programmy vipolnila i sostavila stydentka gryppi IUSz-12\n");
  fprintf(p,"Udal'cova Marina Aleksandrovna\n");
  fclose(p);
  }
int menu3()
 
{system("cls");
 cleardevice();
 setcolor(15);
 line(160,40,430,40);//gorizontali
 outtextxy(250,45," 1.O ZADACHE ");
 line(160,70,430,70);
 outtextxy(165,75," 2.YSLOVIE VIPOLNENIJA PROGRAMMI ");
 line(160,100,430,100);
 outtextxy(200,105," 3.VIPOLNENIE PROGRAMMI ");
 line(160,130,430,130);
 outtextxy(235,135," 4.O PROGRAMME ");
 line(160,160,430,160);
 outtextxy(260,165," 0.VIHOD ");
 line(160,190,430,190);
 
 line(160,40,160,190);//vertikali
 line(430,40,430,190);
 
}
 void vibor3()//VIBOR PYNKTA MENU
{int n;
met:  menu3();
 scanf("%d",&n);
 switch (n)
      {case 1:o_zadanii3();break;
       case 2:yslovie3();break;
       case 3:vibor_f(); break;
       case 4:programma3();break; 
       case 0:break;
       default:printf("Nevernij re*im\n");
       }
     system("pause");
     goto met;                          
}  
   
   
int main()
{
/* Avtomati4eskoe opredlenie grafi4eskix parametrov */
int gdriver = DETECT, gmode;
initgraph(&gdriver, &gmode, "");     // Inicializacija grafi4eskogo re*ima
setbkcolor(0);               // delaem cvet fona
setcolor(0);           //  i cvet menu
vibor3();
system("pause");                 // o*idanie na*atija pol'zovatelem  ljyboj klavishi
closegraph();        // vihod iz grafi4esogo re*ima
return 0;
}
  



x у меня это x1 и все значения которые в цикл с ним относятся.. y это proizv2(t,x1)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.