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

Простановка чисел на координатных осях... - C++

Войти
Регистрация
Восстановить пароль
 
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
09.04.2011, 15:06     Простановка чисел на координатных осях... #1
Пишу класс на Qt для вывода графиков, никак не могу придумать нормальный алгоритм для проставления чисел на осях... т.е. левое число double и правое double, нужно взять между ними n (3-10) "красивых" чисел, уверен, алгоритм заезженный и у кого-то есть готовое решение...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2011, 15:06     Простановка чисел на координатных осях...
Посмотрите здесь:

C++ Задана последовательность из n чисел. Найти количество чисел больше своего номера
Вывод координат на осях графика C++
найти номера координатных четвертей для трех точек с данными ненулевыми координатами C++
Если сумма двух чисел меньше 1, то большее из чисел заменить их произведением C++
Дано n различных натуральных чисел (n=5). Напечатать все перестановки этих чисел C++
найти номера координатных четвертей для трех точек с данными ненулевыми координатами C++
Найти разность 2-х чисел (max и min) из последовательности чисел, введенное с клавиатуры (n = 5) C++
Проставить шкалу на осях координат C++
C++ Запросить ввод нескольких чисел, и определить, сколько из этих чисел отрицательны
C++ Дан одномерный массив из 25 чисел. Найти суму первых непарных 11 чисел
C++ Найти номера координатных четвертей расположения указанных точек, определив соответствующую функцию
В заданной символьной строке, состоящей из букв и чисел, найти сумму чисел C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
14476 / 9190 / 1325
Регистрация: 24.12.2010
Сообщений: 16,838
09.04.2011, 17:28     Простановка чисел на координатных осях... #2
Что-то в этом роде
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static int nno[3]={ 1,2,5 };     /* Осевой ряд */
/* --------- */
static int step_razm(double s)  /* Определение шага разметки */
{  int k, kp, j;
 
   kp = k = 1;
   while(s>=k) {
     for(j=0;j<3;j++) { k = nno[j]*kp; if (s<=k) break; }
     if (j<3) break;
     kp *= 10;
   }
   return(k);
}
/*************/
Добавлено через 49 секунд
Доработай под себя
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
10.04.2011, 15:08  [ТС]     Простановка чисел на координатных осях... #3
вот как получилось:
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
#include<iostream>
 
double step(double length, int limOfSteps)  /* Определение шага разметки исходя из длины размечаемого отрезка и числа чисел умещаемых на ось */
{
    static const double arrayOfSteps[]={ 1, 2, 2.5, 3, 5, 10, 20, 25, 30, 50 }; /* возможная длинна шага при длине отрезка от 10 до 100 */
    short i = 10/*количество элементов в массиве*/;
 
    double k = 1;//коэффициент при длине отрезка. 10 <= length * k < 100, причём k такое, что в равенстве k = 10^x x - целое.
    while( length * k >= 100 )
        k /= 10;
    while( length * k < 10 )
        k *= 10;
 
    while(i--)
        if(arrayOfSteps[i] * limOfSteps < length * k)
            return arrayOfSteps[++i] / k;
 
    return 0;//возвращается если исходные данные бессмысленны
}
 
void main()
{
    double a = 774., b = 30554.;
 
    double stepLength = step(b - a, 5);
 
    if(stepLength)
        while(a < b)
            std::cout << ( a += stepLength ) << '\t';
}
в целом очень доволен результатом, спасибо...
Yandex
Объявления
10.04.2011, 15:08     Простановка чисел на координатных осях...
Ответ Создать тему
Опции темы

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