Проверка на не целостность числа и рисование параболы

Тема в разделе "Общие вопросы по С и С++", создана пользователем Neirol, 5 апр 2010.

Статус темы:
Закрыта.
  1. Neirol

    Neirol Гость

    Здравствуйте.

    Разрабатываю программу, решающую квадратные уравнения, которая забирает данные коэффициентов и возвращает результат.
    Разрабатываю на C++ Builder.
    Появилось две проблемы, которые я не могу решить.

    1. Как проверить что введенная информация является не целым числом? Потому что пока моя программа работает с int, но этого не достаточно.
    2. Как лучше всего отрисовывать параболу по полученному уравнению? Пробовал TChart - но он рисует только односторонние графики, а с TImage по Canvas - вообще какая-то чушь получилась. Рисовал я циклом for по x, и для координаты Y использовал функцию = полученному уравнению по заданным коэффициентам.

    Помогите пожалуйста. Заранее огромное спасибо.
     
  2. eReS

    eReS Гость

    1. Как проверить что введенная информация является не целым числом? Потому что пока моя программа работает с int, но этого не достаточно.
    Почитай о sizeof :) она возвражает размер переменной: int - 2, char - 1, double - 8, float 4...

    по втором не помогу так как графики рисую через SDL, с билдером не работал
     
  3. Neirol

    Neirol Гость

    Sizeof мне будет возвращать значение для AnsiString, ведь у меня через него идут данные.
     
  4. zeus

    zeus Гость

    2. Как лучше всего отрисовывать параболу по полученному уравнению? Пробовал TChart - но он рисует только односторонние графики, а с TImage по Canvas - вообще какая-то чушь получилась. Рисовал я циклом for по x, и для координаты Y использовал функцию = полученному уравнению по заданным коэффициентам.

    можно рисовать с помощью x и y, используя формулу преобразования:

    float x,y;

    int sx = x * height / (maxX- minX);
    int sy = y * width / (maxY-minY);

    где maxX,minX,maxY,minY - константы определяющие минимальное и максимальное значения для x и y...
    а height и width высота и ширина формы, соответственно...

    1. Как проверить что введенная информация является не целым числом? Потому что пока моя программа работает с int, но этого не достаточно.
    А зачем вам это проверять? Используйте функцию StrToFloat или навроде этой и работайте с вещественными числам, а при отображении используйте формулу для перевода...
     
  5. Neirol

    Neirol Гость

    1. А что за sx и sy?
    2. Но мне ведь нужно знать, что в конце выводить - double или int.
     
  6. zeus

    zeus Гость

    1. А что за sx и sy?
    это экранные (screen) координаты, по-русски говоря - это те координаты которые используются для рисования на форме...
    и я немножко ошибся в формулах, вот как верно:

    int sx = (x - minX) * width / (maxX- minX);
    int sy = (y - maxY) * height / (minY - maxY);

    2. Но мне ведь нужно знать, что в конце выводить - double или int.
    рисование на форме осуществляется в экранных координатах (тип int) по x от 0 до width и по y от 0 до height...
    а координаты параболы x и y вычисляются и используют тип double...
     
  7. Neirol

    Neirol Гость

    Мне нужно проверять форму на правильность введенных данных.
    По идее мне нужно проверять является ли введенное числом, но типа данных ЧИСЛО нет.
    И я не знаю как в действительности это сделать.

    А насчет координат, я в принципе рассчитывал все эти координаты начала и конца, и в цикле проходился по разным x, но в итоге у меня получалась одна линия.
    Можно пример кода рисования любой параболы?
     
  8. zeus

    zeus Гость

    Давай лучше сам, а я скажу, что не так... но если и после этого не поймешь, я даже не знаю как еще объяснить... может стоит сменить профессию :)
     
  9. Neirol

    Neirol Гость

    Только сейчас вник в смысл твоих первых сообщений.
    Я так понял, чтобы проверить правильность нужно перехватывать с помощью try, а в другом случае все пойдет как обычно.
    А как быть в конце? Выводить вещественное число с нулями после точки не очень красиво.
     
  10. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Про округление слышали когда-нибудь?
    ЗЫ.
    СДается мне, что топикстартер вообще не представляет ничего о программировании.
     
  11. Neirol

    Neirol Гость

    Стоп.
    Округление здесь не поможет.
    Но я догадался сам, можно конечный результат проверять на int, и если true, то переводим в int и выводим.

    Добавлено: ЗЫ. После веба для меня такое представление типов данных и конструкций различных действий не очень привычны. А шаманством я заниматься не хочу.
     
  12. Neirol

    Neirol Гость

    Поменял все на float. Понял что если получается целое float, то выводится без точки.
    Текстовый результат теперь в норме.
    С перехватом ошибки при введении точки вместо запятой - разобрался.
    С графиком я думаю вся проблема в слишком больших числах, так что далее сам также разбирусь.
    Спасибо.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей