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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2009, 09:28   #1
Cry
Новичок
Джуниор
 
Регистрация: 21.10.2009
Сообщений: 1
Вопрос Как закончить программу?

Вот программа, которая выводит на экран синус, косинус, тангенс в Линукс. Нужно также, чтобы в этой программе отображался график x,y . Я пыталась сделать сама,Ю только запуталась.

Код:
#include <gtk/gtk.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>

#define max(x,y) ((x)>(y)?(x):(y))


float s( float x )
{
	return sin(x);
}

float c(float x )
{
   return cos(x);
} 
float t(float x) 
{
   return tan(x);
}
void drawfunc( GdkDrawable *w, GdkGC * gc, int XX1, int YY1, int XX2, int YY2, float x1, float y1, float x2, float y2, float f(float ))
{
	float x, X1, Y1, X2, Y2;
	int X, Y;

	X1 = (float)XX1; X2 = (float)XX2; Y1 = (float)YY1; Y2 = (float)YY2;

	for( X = XX1; X <= XX2; X++ )
	{
		x =  (float)(((float)X - X1 )/( X2 - X1 ))*( x2 - x1 ) + x1;

		Y = (int)(( -f(x)- y1 )/( y2 - y1 )*( Y2- Y1 ) + Y1);

		gdk_draw_point( w, gc, X, Y );
	}

}
gboolean on_draw (GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
   GdkGC * gc = widget->style->fg_gc[GTK_WIDGET_STATE (widget)];
   GdkColor * clr = new GdkColor();
   clr->pixel = 0;
   clr->red   = 0xffff;
   clr->green = 0;
   clr->blue  = 0;
gdk_gc_set_rgb_fg_color( gc, clr ); 
 drawfunc(widget->window, gc, 0,0, widget->allocation.width, widget->allocation.height, -3.14, -1, 3.14, 1 , s);

   
   clr->pixel = 0;
   clr->red   = 0;
   clr->green = 0xffff;
   clr->blue  = 0;
  gdk_gc_set_rgb_fg_color( gc, clr ); 
drawfunc(widget->window, gc, 0,0, widget->allocation.width, widget->allocation.height, -3.14, -1, 3.14, 1 , c); 
    
   
   clr->pixel = 0;
   clr->red   = 0;
   clr->green = 0;
   clr->blue  = 0xffff;
  gdk_gc_set_rgb_fg_color( gc, clr ); 

  drawfunc(widget->window, gc, 0,0, widget->allocation.width, widget->allocation.height, -3.14, -1, 3.14, 1 , t);
  
  return TRUE;

}



int main ( int argc, char ** argv ) 
{
	gtk_init( &argc, &argv);
	GtkWidget * window =  gtk_window_new (GTK_WINDOW_TOPLEVEL);
	gtk_widget_set_size_request (window, 400, 400);
	g_signal_connect (G_OBJECT (window), "expose_event", G_CALLBACK (on_draw), NULL);
	gtk_widget_show_all(window);
	gtk_main();
	return 0;
}

Последний раз редактировалось Rembo; 21.10.2009 в 13:42.
Cry вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Функции (Помогите закончить 1 Курс) moltes Помощь студентам 3 06.04.2010 18:04
помогите закончить решение задачи. gilex Помощь студентам 1 28.12.2008 21:36
Помогите закончить с лабой qip2005 Помощь студентам 6 17.12.2008 01:38
при введении любого номера года нашей эры, программа выводит его название за старым японским календарем mobi_vic Общие вопросы C/C++ 1 06.06.2007 12:33