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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2010, 20:59   #1
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию С++: Программирование с выводом результатов в виде графиков на экран алфавитно-цифрового дисплея

Вечер добрый
Начали мы изучать С++, первую лабу сам сделал и защитил на "А", на второй уже сел...

Итак, суть. Из заголовка уже кое-что, думаю, понятно. На пальцах: дана функция. Нужно постоить ее график. Ось х - вверху, с лева на право, ось у - сверху вниз. Указатели:
оси: ->, v
ось х: ------
ось у: | или i или !
пересечение осей: +
График рисовать через *, на пересечении графика и оси ставить *

Задания нам берут из "Алексеева",



Тут это лаба 9.
Мой вариант - 4
Итак, из того, что нам объяснили, мне удалось нарисовать график. Хоть что-то. Нарисовал ось х, а первая * у меня в конце выходит, а оно пересекать должно. Вот уже первое не ясно, надо как-то указать, что есть уже есть "-", то больший приоритет имеет " * ".
Ось у вообще пока не знаю, но идея есть.

Еще говорили подписать оси, типа координаты, но это у меня даже идей нету как сделать. Пока хотелось бы оси, график и правильное пересечение. Очень прошу помочь.
Вот мои "наработки":
Код:
#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<78; 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++)
	    {
	        cout<<" ";
	    }
	    
	    cout<<"*"<<"\n";
	    
	    x=dx*(i+1);
	}




    system("PAUSE");
	return 0;
}
MR_Andrew вне форума Ответить с цитированием
Старый 07.03.2010, 21:28   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от MR_Andrew Посмотреть сообщение
Вечер добрый
Начали мы изучать С++, первую лабу сам сделал и защитил на "А", на второй уже сел...

Итак, суть. Из заголовка уже кое-что, думаю, понятно. На пальцах: дана функция. Нужно постоить ее график. Ось х - вверху, с лева на право, ось у - сверху вниз.
Как, всё-таки, оси должны быть расположены? В вашей методичке, что в "объяснении", что в примерах, - OX - сверху вниз, а OY - слева направо.
Vago вне форума Ответить с цитированием
Старый 07.03.2010, 21:33   #3
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию



Ось 0Y - с лева на право.
Ось 0Х - с верху вниз.
MR_Andrew вне форума Ответить с цитированием
Старый 07.03.2010, 21:35   #4
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
В вашей методичке, что в "объяснении", что в примерах, - OX - сверху вниз, а OY - слева направо.
Методичка - это нам дают только для примера, задания выдают не такие, похожие. Как преподаватель скажет - так и делаем.
MR_Andrew вне форума Ответить с цитированием
Старый 07.03.2010, 22:02   #5
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от MR_Andrew Посмотреть сообщение
Ось 0Y - с лева на право.
Ось 0Х - с верху вниз.
Так у Вас тогда в методичке болванка на трёх языках есть!
Vago вне форума Ответить с цитированием
Старый 07.03.2010, 22:08   #6
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Так у Вас тогда в методичке болванка на трёх языках есть!
Так то для умных людей написано...

Я думаю как сделать пересечение, и ничего не выходит...
MR_Andrew вне форума Ответить с цитированием
Старый 07.03.2010, 22:53   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Даны (найдены) Ymin и Ymax. На экране диапазон [Ymin;Ymax] нужно впихнуть в строку шириной w позиций. Считаем для простоты, что гарантированно Ymin < 0, Ymax > 0. Вопрос: в какой позиции k нужно вывести симол 'I', обозначающий идущую сверху вниз ось OX или символ '+', обозначающий её пересечение с осью OY?

Пропорции в школе сейчас ещё учат?...

|Ymin| / (Ymax-(-Ymin)) = k / w

Чему равно k?... (ну и не забыть потом, что в Це принято эл-ты массива нумеровать с 0).
Vago вне форума Ответить с цитированием
Старый 07.03.2010, 23:54   #8
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Пропорции в школе сейчас ещё учат?...

|Ymin| / (Ymax-(-Ymin)) = k / w

Чему равно k?... (ну и не забыть потом, что в Це принято эл-ты массива нумеровать с 0).
Ничему. Точнее бесконечности.
а может
|Ymin| / (Ymax-Ymin) = k / w
?

f(0)=-1
f(Pi/2)=1
f(Pi)=-1
MR_Andrew вне форума Ответить с цитированием
Старый 07.03.2010, 23:58   #9
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Елки-палки, только заметил: я в шапке ошибку сделал!
То я ось ОУ вывел, и то криво. У меня ОХ не выходит. Да нормально и ОУ тоже..
MR_Andrew вне форума Ответить с цитированием
Старый 08.03.2010, 00:13   #10
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<78; i++)
	        {
                  cout<<"-";
            }
             cout <<">";



  for (i=0; i<39; i++)
	        {
                   cout <<"\n";
                  for (j=1; j<38; j++)
	    {
	        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++)
	    {
	        cout<<" ";
	    }
	    
	    cout<<"*"<<"\n";
	    
	    x=dx*(i+1);
	}




    system("PAUSE");
	return 0;
}
Я, наконец-то, нарисовал вторую ось. Но она подвинула график, а их надо совместить. И никак не могу понять как выставить в конце ОХ символ "V". Оно у меня или в цикле выходит, или вообще через одно место
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