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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2010, 11:35   #11
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Код:
#include <conio.h>
#include <iostream.h>
#include <math.h>

double fun( double x ) {
   return fabs(sin(x)) - fabs(cos(x));
}

int main() {

   const int w = 80; // Output field width (in characters)
   char     cLine[w];
   int        kXAxis, kF, n, i, j;
   double  a = 0,
               b = 4.*atan(1.),
               dmy,
               x, dx, ymax, ymin, y;

   cout <<"Vvedit' kil'kist' vidrizkiv rozbytt'a ";
   cin >> n;
   dx = (b-a)/n;
   x = a;
   ymax = ymin = fun( x );

   for (i=1; i<=n; i++) {
      x += dx;
      y = fun( x );
      if (y > ymax) 
         ymax = y;
      else if (y < ymin) 
         ymin = y;
   }  
	    
cout <<"ymax= "<<ymax<<"\n";
cout <<"ymin= "<<ymin<<"\n";

   dmy = (ymax-ymin)/(double)(w-1); // Scaling factor
   kXAxis = (int) fabs(ymin)/dmy;   // At what position to place the 'I' for the OX axis
   
   // Plot the OY axis (horizontal, from left to right)   
   for (i=0; i<kXAxis; i++)
      cout << "-";
   cout << "+";   // Crossing with the OX axis
   for (i=kXAxis+1; i<w-1; i++)
      cout << "-";
   cout << ">";    // The "arrow"

   // Blank pattern line
   for (i=0; i<w; i++)
      cLine[i] = ' ';
   cLine[kXAxis] = 'I';    // OX axis

   // Function plot
   x = 0.;
   for (i=0; i<n; i++) {
      y = fun( x );
      kF = (y-ymin)/dmy;   // Where to place the asterisk for the current function value
      cLine[kF] = '*';
      for (j=0; j<w; j++)  // Output the line
        cout << cLine[j];
      cLine[kF] = kF == kXAxis ? 'I' : ' ';    // Restore the kF-th position of the output line
      x += dx;
   }
   
   // The "arrow" at the end of the OX axis
   for (i=0; i<kXAxis; i++)
      cout << " ";
   cout << "V" << endl;
	    
   getch();

   return 0;

}
Vago вне форума Ответить с цитированием
Старый 08.03.2010, 13:51   #12
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Vago
Огромное Вам спасибо! Изучу Ваш вариант и буду выяснять, почему не получалось у меня
Еще раз огромное спасибо!
MR_Andrew вне форума Ответить с цитированием
Старый 09.03.2010, 20:13   #13
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Да, программист из меня...
Их того,что я делал - обнять и плакать. Короче говоря, надо срочно доделать то, что есть. График вышел, а ось х разъехалась. Надо в кучу собрать, не выходит. Разметка и надписи - фиг с ними уже, надо хоть как-то...
Код:
#include <iostream.h>
#include <math.h>

int main()
{
	int n,i,j;
	float a,b,x,dx,ymax,ymin,k,yR,y;
	a=0; b=3.14159;
	cout <<"Vvedit' kil'kist' vidrizkiv rozbytt'a";
	cin >>n;
	dx=(b-a)/n;
	x=a;
	ymax=ymin=fabs(sin(x))-fabs(cos(x));

	for(i=0; i<n; i++)
    	{
	         y=fabs(sin(x))-fabs(cos(x));
	         x=dx*(i+1);
	         if (ymax<y) ymax=y;
	         if (ymin>y) ymin=y;
	    }

cout <<"ymax= "<<ymax<<"\n";

  for (i=0; i<79; i++)
	        {
                  cout<<"-";
            }
             cout <<">";





      k=79/(ymax-ymin);
      x=a;
      for (i=0; i<n; i++)
     	{
	         y=fabs(sin(x))-fabs(cos(x));
	         yR=k*y;


	   for (j=1; j<yR+(fabs(ymin)*k); j++)
	    {
            if( j==38 ) 
            
            cout << "|";
            else cout <<" ";
	    }
cout<<"*";
	   

	    if(  i == 38 ) { cout << "\n"; continue; }
	      {
	   for (; j<39; j++)
	     {
            if( j==38 ) cout << "|";
            else cout <<" ";
          }
          
          }


	    cout << "\n";

	    x=dx*(i+1);
	    }


    system("PAUSE");
	return 0;
}
Пусть будет так, но надо ось на один уровень поставить. но только не прибегая сложным методам и операторам.

Расположение выставлял исходя из того, что ось должна быть по середине.
MR_Andrew вне форума Ответить с цитированием
Старый 10.03.2010, 19:58   #14
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Все, огромное спасибо, уже не надо
MR_Andrew вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построить график с выводом на экран в Паскале.. semen4ik_pro Помощь студентам 0 28.01.2010 11:54
Проблема с выводом на экран NeveX Общие вопросы .NET 3 20.12.2009 13:57
Класс матрица, вывод результатов на экран Student_911 Помощь студентам 0 03.10.2009 20:55
Проблема с чтением и выводом содержимого текстового файла на экран -=PascaL=- Помощь студентам 16 08.08.2009 07:13