Форум программистов, компьютерный форум CyberForum.ru

Проставить шкалу на осях координат - C++

Восстановить пароль Регистрация
 
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
01.06.2014, 16:19     Проставить шкалу на осях координат #1
Здравствуйте. Мне необходимо проставить шкалу на осях координат. Составил следующий код программы:
C++
1
2
3
4
5
k=800*0.3/(n2-n1);
outtextxy (X0, Y0, "0");
for(i=1;i<=1000;i++)
{outtextxy (X0, Y0-i*k, "1");
     outtextxy (X0+i*k, Y0, "1");}
X0 и Y0 равны 400, 800 - ширина окна (само окно 800х800). Подставив этот цикл я получаю шкалу на осях координат по положительным направлениям, но при этом у меня везде стоят единицы, а нужно чтобы шкала ставилась в таком виде: 1 2 3 4 5...
Не знаю, что делать. Буду признателен за любую помощь. Полностью код программы приведен ниже:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale>
#include <graphics.h>
 
int main()
{
 setlocale(LC_ALL,"Russian");
const int X0=400;
const int Y0=400;
float a,b,c,x,y,n1,n2,k,i,h,sh=0.001,m;
 FILE *in;
int l;
in = fopen("output.txt", "r");
        if (in)
        {
            if (fscanf(in, "%f %f %f %f %f %f", &a, &b, &c, &n1, &n2, &h) == 6)
            {
                printf("a: %f, b: %f, c: %f, n1: %f, n2: %f, h: %f\n", a, b, c, n1, n2, h);
            }
            else
            {
                puts("ÍåâîçìîæГ*Г® Г±Г·ГЁГІГ*ГІГј Г·ГЁГ±Г«Г*");
                fclose(in);
                return 1;
            }
            fclose(in);
}
initwindow(800,800);
        line (X0,0,X0,799);
        line (0,Y0,799,Y0);
k=800*0.3/(n2-n1);
outtextxy (X0, Y0, "0");
for(i=1;i<=1000;i++)
{outtextxy (X0, Y0-i*k, "1");
     outtextxy (X0+i*k, Y0, "1");}
        for (x=n1;x<=n2;x+=sh)
        {
            y=a*x*x*x+b*x+c;
 
            putpixel(x*50+getmaxx()/2,getmaxy()/2-(y*20), 5);
 
        } 
        
        setcolor(9);
        for (x=n2;x>n1+h;x-=h)
{
    y=a*x*x*x+b*x+c;
    
    line(x*50+getmaxx()/2, getmaxy()/2, x*50+getmaxx()/2, getmaxy()/2-(y*20));
    line(x*50+getmaxx()/2, getmaxy()/2-(y*20), -h*50-h/2+x*50+getmaxx()/2, getmaxy()/2-(y*20));
    line(-h*50-h/2+x*50+getmaxx()/2, getmaxy()/2-(y*20), -h*50-h/2+x*50+getmaxx()/2, getmaxy()/2);
}
    getch();
}
Добавлено через 5 часов 19 минут
Неужели никто не знает? Очень надо(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 16:19     Проставить шкалу на осях координат
Посмотрите здесь:

C++ Перемещение в системе координат
Оси координат C++
Вывод координат на осях графика C++
Простановка чисел на координатных осях... C++
C++ Декартова система координат
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ogniel
 Аватар для Ogniel
24 / 24 / 1
Регистрация: 30.05.2011
Сообщений: 127
02.06.2014, 10:59     Проставить шкалу на осях координат #2
ну ясен пень. у тебя же стоит "поставить везде единицы в заданных позициях (X0, Y0-i*k либо X0+i*k, Y0)". для рассчета стринга используй ту же переменную i, но приведенную к стрингу. к примеру

C++
1
2
3
4
5
k=800*0.3/(n2-n1);
outtextxy (X0, Y0, "0");
for(i=1;i<=1000;i++)
{outtextxy (X0, Y0-i*k, FloatToStr(i));
     outtextxy (X0+i*k, Y0, FloatToStr(i));}
вроде так (проверь, я давно не программировал, могу и ошибиться)
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
02.06.2014, 11:21     Проставить шкалу на осях координат #3
Цитата Сообщение от Ogniel Посмотреть сообщение
FloatToStr
Откуда взята такая функция?
Есть fcvt, но она неудобная.
Лучше через
C++
1
2
3
char str[20];
sprintf(str,"%d",i);
outtextxy (X0, Y0-i*k,str);
Ogniel
 Аватар для Ogniel
24 / 24 / 1
Регистрация: 30.05.2011
Сообщений: 127
02.06.2014, 11:38     Проставить шкалу на осях координат #4
Цитата Сообщение от zss Посмотреть сообщение
Откуда взята такая функция?
1 function FloatToStr ( Value : Extended ) : string;
2 function FloatToStr ( Value : Extended; const FormatSettings : TFormatSettings ) : string;

Функция FloatToStr преобразовывает значение Value плавающей запятой в визуализуемую строку.
Значение отображается с 15 цифрами точности.
Типом Value может быть любой из типов с плавающей запятой.
Если значения перед десятичной точкой (мантиссой) превышают вместимость дисплея (15), то используется значение экспоненты, типа 1.2E9.
возможно, ересь (на опыте не проверял)
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
02.06.2014, 11:41     Проставить шкалу на осях координат #5
Ogniel, Мне кажется, Вы путаете с С#. В библиотеках С++ (VS 2008) такой функции нет.
volvo
Супер-модератор
 Аватар для volvo
21680 / 14153 / 3938
Регистрация: 22.10.2011
Сообщений: 25,005
Записей в блоге: 2
02.06.2014, 13:07     Проставить шкалу на осях координат #6
Цитата Сообщение от zss Посмотреть сообщение
В библиотеках С++ (VS 2008) такой функции нет
Кроме VS существуют еще компиляторы С++, например, Билдер, из хелпа которого и взято описание этой функции...
zaqwerty
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 108
02.06.2014, 17:46  [ТС]     Проставить шкалу на осях координат #7
Ogniel, UI, zss, составил такой цикл:
C++
1
2
3
4
5
6
7
char str[2000];
for(i=1;i<=1000;i++)
{sprintf(str,"%d",i);
    outtextxy (X0, Y0-i*k, str);
     outtextxy (X0+i*k, Y0, str);
     
     }
Шкала есть, только везде ставятся нули. В чем может быть проблема?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2014, 09:24     Проставить шкалу на осях координат
Еще ссылки по теме:

C++ Система координат в С++
C++ 3D система координат
C++ Ввод координат вручную

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ogniel
 Аватар для Ogniel
24 / 24 / 1
Регистрация: 30.05.2011
Сообщений: 127
04.06.2014, 09:24     Проставить шкалу на осях координат #8
как-то не так у тебя функция подвязалась. сделай i интовой и спокойно переводи ее в стринг - и проще, и менее громоздко
Yandex
Объявления
04.06.2014, 09:24     Проставить шкалу на осях координат
Ответ Создать тему
Опции темы

Текущее время: 22:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru