Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 288
#1

Преобразовать указатель в float - C++

03.12.2013, 11:00. Просмотров 1141. Ответов 27
Метки нет (Все метки)

допустим есть такая структура
C++
1
2
3
4
5
6
7
8
9
10
11
12
    struct lol
    {
        int a;
        float b;
    } ololo;
    ololo.a = 34;
    ololo.b = 2.5;
 
    wchar_t *pt = (wchar_t*)&ololo.a;  //мне нужен такой указатель
    Label1->Caption = (int)*pt;  //выводит прекрасно
    pt++;pt++;
    Label2->Caption = (float)*pt; //выводит бред
как вывести float в таком случае? и можно ли?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 11:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразовать указатель в float (C++):

Почему указатель на указатель объявляется как float **A; - C++
Почему float?

Преобразовать указатель одного типа в указатель другого. - C++
Всем привет. Мне нужно выполнить задание "Преобразовать указатель одного типа в указатель другого. " Что-то совсем не понимаю. Помогите...

double указатель и float матрица - C++
Очень срочно нужно. Есть 2-мерный массив типа float. Есть указатель на double. double *pj=NULL; float h; Как правильно...

Преобразовать строку в float - C++
Итак у меня есть переменная Char. В ней записано '5.2'. И есть переменная float. Как мне поместить 5.2 в переменную типа float ? Типа...

Преобразовать из float в string - C++
Скажите, пжл, какие существуют ф-ии для конвертации из float в string?

Преобразовать string в float - C++
Привет! Подскажите, пожалуйста, наиболее простой способ, как преобразовать значение типа string в float.

27
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 288
03.12.2013, 11:45  [ТС] #16
Цитата Сообщение от newbie666 Посмотреть сообщение
Label2->Caption = *(float*)pt;

а так?
Цитата Сообщение от newbie666 Посмотреть сообщение
чё молчишь? как в моём посте номер 8 правильно выводит же ?
прошу прощения не заметил, правильно) спасибо

Добавлено через 2 минуты
Цитата Сообщение от palva Посмотреть сообщение
Если у ТС с-builder, то нужно еще IntToStr применять. Но ТС утверждает, что у него и без этого целое выводится правильно. Так что не знаю, может он где-то операцию = перегрузил...

Добавлено через 4 минуты

Вы лучше скажите, у вас Builder или что? Сишный программист обитаемый на этом форуме понятия не имеет о том, как выводить на Label2->Caption.
Целые числа разве у вас правильно выводит?
rad studio 10
да всё правильно выводит... только проблема была с float
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
03.12.2013, 11:47 #17
Цитата Сообщение от lips Посмотреть сообщение
не надо путать
Путаетесь только вы. Перечитайте и вникните.
0
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 288
03.12.2013, 11:50  [ТС] #18
Цитата Сообщение от ValeryS Посмотреть сообщение
а вот так вот нельзя разве?
C++
1
2
int * a=&ololo.a;
float * b =&ololo.b;
зачем здесь адресная арифметика?
зачем приведения к разным типам?
просто мне надо вывести очень очень много структур... с очень очень большим кол-вом полей и ещё + структуры в структуре, и тд...
мне проще будет создать массив указателей на начало каждой структуры(что я и сделал циклом) и вывести таким образом все
0
palva
2686 / 1913 / 288
Регистрация: 08.06.2007
Сообщений: 7,043
Записей в блоге: 4
03.12.2013, 12:03 #19
Цитата Сообщение от lips Посмотреть сообщение
только проблема была с float
Возможно, у вас операция = с float не перегружена. Попробуйте использовать тип double.

Добавлено через 3 минуты
Цитата Сообщение от lips Посмотреть сообщение
просто мне надо вывести очень очень много структур...
Не используйте ваш кастинг в рабочей программе. В такой программе потом невозможно будет разобраться. Пишите проще.

Добавлено через 4 минуты
Указатель должен быть на структуру, а не на элемент структуры.
C++
1
2
3
4
5
6
7
8
9
10
    struct lol
    {
        int a;
        float b;
    } ololo, *pt;
    ololo.a = 34;
    ololo.b = 2.5;
 
    Label1->Caption = pt->a;
    Label2->Caption = pt->b;
Добавлено через 4 минуты
Я бы даже так написал последнюю строчку
C++
1
    Label2->Caption = FloatToStr(pt->b);
Но настаивать не буду - мне негде проверить этот код.
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
03.12.2013, 12:04 #20
Цитата Сообщение от palva Посмотреть сообщение
Указатель должен быть на структуру, а не на элемент структуры.
Можно, с осторожностью: offsetof
0
newbie666
Заблокирован
03.12.2013, 12:04 #21
Цитата Сообщение от lips Посмотреть сообщение
просто мне надо вывести очень очень много структур... с очень очень большим кол-вом полей и ещё + структуры в структуре, и тд...
это ты всё про свой бинарный файл с кучей дерьма ?
1
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 288
03.12.2013, 12:31  [ТС] #22
Цитата Сообщение от newbie666 Посмотреть сообщение
это ты всё про свой бинарный файл с кучей дерьма ?
ага
я начинающий программист, возможно профи бы сделал всё гораздо быстрей и проще... но ведь я изобретаю велосипед как всегда...
мне подсказывают какие то умные советы, но я всё равно не могу или не хочу их понимать... делаю как я знаю и все
0
Kuzia domovenok
2055 / 1900 / 174
Регистрация: 25.03.2012
Сообщений: 6,542
Записей в блоге: 1
03.12.2013, 13:14 #23
Вообще я поражён, что тема скатилась в какие-то вредные советы по адресной арихметике!
Всё, что надо автору это преобразовать поля структуры типа float и int в строку. Однако, он вместо того, чтоб спросить про string stream или про sprintf или даже про ftoa стал чего-то мудрить с адресами...
А вы все и рады поддержать его в этом!
0
palva
03.12.2013, 13:22
  #24

Не по теме:

Kuzia domovenok, Когда я понял, что он это делает не в исследовательских целях, а в рабочей программе, я ему сразу это отсоветовал. Хотя задавать вопросы на форуме не усвоив учебника, в котором приводятся примеры правильной работе со структурами, тоже странно. Но не учить же здесь человека жизни. Что спросил, то и получил.

0
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 288
03.12.2013, 13:58  [ТС] #25
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Вообще я поражён, что тема скатилась в какие-то вредные советы по адресной арихметике!
Всё, что надо автору это преобразовать поля структуры типа float и int в строку. Однако, он вместо того, чтоб спросить про string stream или про sprintf или даже про ftoa стал чего-то мудрить с адресами...
А вы все и рады поддержать его в этом!
Цитата Сообщение от palva Посмотреть сообщение

Не по теме:

Kuzia domovenok, Когда я понял, что он это делает не в исследовательских целях, а в рабочей программе, я ему сразу это отсоветовал. Хотя задавать вопросы на форуме не усвоив учебника, в котором приводятся примеры правильной работе со структурами, тоже странно. Но не учить же здесь человека жизни. Что спросил, то и получил.

пожалуйста скажите тогда как сделать проще... желательно с примером... заранее благодарен
хотелось бы понять как вывести данные структуры не ссылаясь на её поля
0
newbie666
Заблокирован
03.12.2013, 14:11 #26
создавай заново свою тему тогда , чё тут то оффтопить
0
palva
2686 / 1913 / 288
Регистрация: 08.06.2007
Сообщений: 7,043
Записей в блоге: 4
03.12.2013, 15:03 #27
Цитата Сообщение от lips Посмотреть сообщение
бы понять как вывести данные структуры не ссылаясь на её поля
Это можно сделать через указатели, что вы частично и делаете. Только вас убеждают делать так только в том случае, если задачу с таким идиотским требованиям дал вам начальник. Тут уж ничего не поделаешь. Он платит деньги, а "за ваши деньги любой каприз".

Вам удалось вывести правильный float?

Добавлено через 1 минуту
FloatToStr вставили?
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,245
03.12.2013, 18:08 #28
Цитата Сообщение от lips Посмотреть сообщение
просто мне надо вывести очень очень много структур... с очень очень большим кол-вом полей и ещё + структуры в структуре, и тд...
мне проще будет создать массив указателей на начало каждой структуры
нарваться можешь
гарантируют только что элементы в структуре лежат один за другим, никто не гарантировал расстояние между ними
другой компилятор может сгенерить другой код, или тот же компилятор но с другими настройками
и вот так будет и проще и правильней
C++
1
2
3
lol *pt = (wchar_t*)&ololo;
Label1->Caption = pt->a;
Label2->Caption = pt->b;
допустим массив из десяти структур
C++
1
2
3
4
5
for(int i=0;i<10;i++,pt++)
{
Label1->Caption = pt->a;
Label2->Caption = pt->b;
}
0
03.12.2013, 18:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 18:08
Привет! Вот еще темы с ответами:

Ошибка. Невозможно преобразовать CString в float - C++
Здравствуйте! Программа заключается в следующем - пользователь добавляет в EditControl данные, нажимает на ОК, и эти данные попадают в...

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing - C++
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; float f1(float x)/*vira*enie 1*/ {return (x*cos(x))/(1+ pow(x,2));} ...

На входе дробное число, которое надо преобразовать во float - C++
Здравствуйте, столкнулся со следующей проблемой: на входе дробное число которое читается из потока посимвольно (состоит из 3 знаков 3.2 ...

Как преобразовать число float в int без потери данных? - C++
Здравствуйте, форумчане. Столкнулась с такой проблемой: для работы программы требуется целое число, но вводится число типа float. Так вот,...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.