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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2009, 19:39   #1
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию Построение сетевого графика

Помогите пожалуйста доделать курсовую!!! График неправильно выводится (функция show_graphic).

http://slil.ru/27726961

Исходные данные - текстовый файл:

1 2 10 ***
2 3 20 ***
2 4 10 ***
2 6 15 ***
2 7 15 ***
3 8 50 ***
4 5 5 ***
5 10 10 ***
6 8 20 ***
7 9 20 ***
8 10 30 ***
9 10 5 ***
10 11 20 ***
10 12 10 ***
10 14 30 ***
11 13 20 ***
12 13 5 ***
13 15 10 ***
14 15 5 ***
15 16 10 ***


График для этих исходных данных нужно вывести без пересечения линий и так, чтобы при изменении длительности какой либо работы график выводился правильно (пересечения возможны).
Компилятор Borland C++

Код:
void show_graphic(void){
   int a=9,b=2;
   int q,i,j,k,p,m,h,d,f=0,r;
   char s[5];
   int t_sob_kr[20],show_sob[20];
   initgraph(&a,&b,"w:\\bc\\BGI\\");
   line(20,getmaxy()-30,getmaxx()-20,getmaxy()-30);
   line(getmaxx()-20,getmaxy()-30,getmaxx()-30,getmaxy()-35);
   line(getmaxx()-20,getmaxy()-30,getmaxx()-30,getmaxy()-25);
   q=t_kr/10+1;
   k=(getmaxx()-40)/(q*10);
   for(i=0;i<q;i++){
      line(20+k*i*10,getmaxy()-32,20+k*i*10,getmaxy()-28);
      outtextxy(20+k*i*10,getmaxy()-25,itoa(10*i,s,10));
      }
   settextjustify(CENTER_TEXT,CENTER_TEXT);
   settextstyle(SMALL_FONT,HORIZ_DIR,0.5);
   i=0;j=0;
   k=(getmaxx()-40)/(q*10);
   moveto(5,getmaxy()/2);
   p=20;
   circle(p,getmaxy()/2,8);
   fillellipse(p,getmaxy()/2,8,8);
   setcolor(0);
   outtextxy(p,getmaxy()/2,"1");
   setcolor(15);  /*
   while(kr_way[i]!=0){
      for(j=0;j<count;j++){
	 if(kr_way[i]==mas[j][1]&&kr_way[i+1]==mas[j][2]){
	    line(p,getmaxy()/2,p+k*mas[j][3],getmaxy()/2);
	    p=p+k*mas[j][3];
	    circle(p,getmaxy()/2,8);
	    fillellipse(p,getmaxy()/2,8,8);
	    setcolor(0);
	    outtextxy(p,getmaxy()/2,itoa(mas[j][2],s,10));
	    setcolor(15);
	    break;
	    }
	 }
      i++;
      } */
   i=0;
   kr_way[i-1]=1;
   t_sob_kr[0]=0;
   while(kr_way[i-1]!=0){
      for(h=0;h<count;h++)
	 if(kr_way[i]==mas[h][1]&&kr_way[i+1]==mas[h][2])
	    t_sob_kr[i+1]=t_sob_kr[i]+mas[h][3];
      i++;
      }
   i=0;

   i=0,j=0,m=1;
   mas_ways[i-1][0]=1;
   while(mas_ways[i-1][0]!=0){
      j=0;p=20;m=1;d=0;
      while(m!=0){
	 m=mas_ways[i][j];
	 f=0;
	 for(h=0;h<count;h++){
	    if(mas_ways[i][j]==mas[h][1]&&mas_ways[i][j+1]==mas[h][2]){
	       if(kr_way[d]!=0){
		  if(kr_way[d]==mas_ways[i][j]&&kr_way[d+1]!=mas_ways[i][j+1]){
		     line(p,getmaxy()/2,p+k*mas[h][3],getmaxy()-60-30*i);
		     p=p+k*mas[h][3];

		     circle(p,getmaxy()-60-30*i,8);
		     fillellipse(p,getmaxy()-60-30*i,8,8);
		     setcolor(0);
		     outtextxy(p,getmaxy()-60-30*i,itoa(mas[h][2],s,10));
		     setcolor(15);

		     f=1;
		     }
		  if(kr_way[d]!=mas_ways[i][j]&&kr_way[d+1]==mas_ways[i][j+1]){
		     line(p,getmaxy()-60-30*i,20+k*t_sob_kr[d+1],getmaxy()/2);
		     p=20+k*t_sob_kr[d+1];
		     circle(p,getmaxy()/2,8);
		     fillellipse(p,getmaxy()/2,8,8);
		     setcolor(0);
		     outtextxy(p,getmaxy()/2,itoa(mas[h][2],s,10));
		     setcolor(15);

		     f=1;
		     }
		  if(kr_way[d]!=mas_ways[i][j]&&kr_way[d+1]!=mas_ways[i][j+1]){

		     line(p,getmaxy()-60-30*i,p+k*mas[h][3],getmaxy()-60-30*i);
		     p=p+k*mas[h][3];

		     circle(p,getmaxy()-60-30*i,8);
		     fillellipse(p,getmaxy()-60-30*i,8,8);
		     setcolor(0);
		     outtextxy(p,getmaxy()-60-30*i,itoa(mas[h][2],s,10));
		     setcolor(15);

		     f=1;
		     }
		  if(kr_way[d]==mas_ways[i][j]&&kr_way[d+1]==mas_ways[i][j+1]){
		     line(p,getmaxy()/2,p+k*mas[h][3],getmaxy()/2);

		     p=p+k*mas[h][3];
		     circle(p,getmaxy()/2,8);
		     fillellipse(p,getmaxy()/2,8,8);
		     setcolor(0);
		     outtextxy(p,getmaxy()/2,itoa(mas[h][2],s,10));
		     setcolor(15);

		     f=1;
		     }
		  d++;
		  }
	       }

	    if(f==1)break;
	    }

	 j++;
	 }
      i++;
      }
   getch();
   closegraph();
   }

график выглядит так
Изображения
Тип файла: jpg IMG_0491.jpg (19.6 Кб, 163 просмотров)

Последний раз редактировалось Sazary; 04.06.2009 в 19:57. Причина: добавил кусок кода
Nina+ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение графика Sasuke-sama Общие вопросы C/C++ 30 31.05.2009 17:59
Построение графика! kiling Мультимедиа в Delphi 0 19.05.2009 21:03
построение графика deadh5n1 Помощь студентам 2 13.09.2008 19:06
(С++) Построение графика tg(x)=y. Panterka Помощь студентам 2 13.12.2007 09:32
Построение Графика Боня Помощь студентам 3 20.01.2007 19:32