С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295

типы данных

09.06.2009, 12:36. Показов 4556. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
на Си реализовать: (не С++)
построить функцию, возвращающую все байты заданного вещественного х в целом виде.
т.е. нам например вводят 10 как float, а нам нужно вернуть его как int, елси наоборот -это просто.... а вот так...
кто подскажет?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2009, 12:36
Ответы с готовыми решениями:

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си?
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы: 1. Можете ли на понятным для...

Типы данных: чем отличается тип данных int от float?
Всем привет! Помогите пожалуйста, чем отличается тип данных int от float?

Чтение недопустимых данных, динамические массивы, типы данных
Добрый день, реализую метод интерполяции сплайнами на С++, при подсчете одного из коэффициентов появляется данное сообщение. "...

45
 Аватар для BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
09.06.2009, 13:35
Используй объединение (union), как-то так:
C++
1
2
3
4
5
union Q
{
    float F;
    char C[4];
};
Синтаксис проверь, вроде так..
0
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
09.06.2009, 13:37  [ТС]
не понял, можешь по подробней?
и... это не С++ операция?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2009, 13:47
C
1
2
3
4
5
6
7
8
9
10
11
int func (float fval)
{
  union
  {
    float f;
    int i;
  } u;
 
  u.f = fval;
  return u.i;
}
А поподробнее - бери книжку и читай, что такое union
1
 Аватар для BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
09.06.2009, 13:55
Дык я ж погуглил.. Говорят - родная сишная фишка.. Вообще очень полезная штука, а для твоих целей - самое оно..
union - это область памяти, где одновременно могут храниться объекты разных типов.. Ну, это по книжке)) Т.е., в данном случае, ты объявляешь переменную qqq типа Q, вводишь переменную типа float в qqq.F, а потом считываешь каждый байт отдельно из массива qqq.C[], т.к. это тот же самый участок памяти. Посмотри только размер float у себя, как правило, четыре байта, но мало ли.. Я предпочитаю перестраховаться.. Например, у меня int занимает четыре байта, а у кого-то - слово, т.е. два байта.. char всегда байт, соответственно задавай размер массива.. ВооодЪ.. Путано слегка, но, надеюсь, понятно приблизительно?

З.Ы.: Балин, опять не успел..
1
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
09.06.2009, 14:02  [ТС]
попробовал. выдает ноль. вот код:
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
#include <conio.h>
#include <STDLIB.H>
#include <ALLOC.H>
#include <stdio.h>
int func (float fval);
int main()
{
    clrscr();
        float x;
    printf("Enter nomber: ");
    scanf("%f",&x);
    printf("Integer: %i",func(x));
    getch();
    return 0;
}
int func (float fval)
{
  union
  {
    float f;
    int i;
  } u;
 
  u.f = fval;
  return u.i;
}
Добавлено через 3 минуты 36 секунд
BullDogoff,
а можешь быстренько переписать мой код под твою функцию?
я так понял на словах - с синтаксисом таким еще не работал
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2009, 14:03
Между 12 и 13 строками воткни: printf ("x=%f\n", x);
0
 Аватар для RazorQ
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386
09.06.2009, 14:05
Цитата Сообщение от Акелла Посмотреть сообщение
printf("Integer: %i",func(x));
Должно быть
C
1
printf("integer %d", func(x));
0
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
09.06.2009, 14:08  [ТС]
упорно выводит что iteger: 0

Добавлено через 2 минуты 14 секунд
RazorQ, нифига.. он же должен преобразовать в инт.. тем более что попробовал всеравно никак
0
 Аватар для BullDogoff
10 / 10 / 1
Регистрация: 16.05.2009
Сообщений: 30
09.06.2009, 14:11
На плюсах это выглядит следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
 
union Q
{
    float F;
    char C[4];
};
 
main()
{
    Q qqq;
    
    cin>>qqq.F;
    for(int i=0; i<4; i++)
                cout<<int(qqq.C[i])<<" ";
    
    cout<<endl;
 
    return 0;
}
На C переводи сам, я там с вводом-выводом не дружу)) Но структурно именно так.

построить функцию, возвращающую все байты заданного вещественного х в целом виде.
Т.е. выводить нужно не int, а именно char, товарищи.. ИМХО..

я так понял на словах - с синтаксисом таким еще не работал
По сути - работаешь как со структурой, синтаксис тот же..
0
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
09.06.2009, 14:14  [ТС]
бог с нми с выводом.. он выдает правда..эм...
вообще ввожу 5, получаю:
0 0 64 64
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2009, 14:16
Дал тебе подсказку, чтобы можно было понять, scanf у тебя косячит или функция. Ты игронируешь. После этого как-то пропадает жедание помогать

Цитата Сообщение от Evg Посмотреть сообщение
Между 12 и 13 строками воткни: printf ("x=%f\n", x);
0
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
09.06.2009, 14:19  [ТС]
воткнул. косячит у меня функция. уж такое то я контролирую...
ввожу 5, printf ("x=%f\n", x); выводит мне 5.0000 с ноликами то бишь
а функция выдает просто голый ноль
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2009, 14:23
Цитата Сообщение от BullDogoff Посмотреть сообщение
Т.е. выводить нужно не int, а именно char, товарищи.. ИМХО..
В задче написано, написать функцию, ВОЗВРАЩАЮЩУЮ
Хотя спорить не хочется, ибо какая в пень разница, так делать или эдак

Добавлено через 1 минуту 38 секунд
К тому же у меня всё отработало
Code
1
2
Enter nomber: 1.234
Integer: 1067316150
Добавлено через 1 минуту 52 секунды
Цитата Сообщение от Акелла Посмотреть сообщение
воткнул. косячит у меня функция. уж такое то я контролирую...
Ну хотьнапиши об этом, чтобы не было ощущения, что говорю впустую

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int func (float fval)
{
  union
  {
    float f;
    int i;
  } u;
 
  printf ("sizes = %d %d\n", sizeof (u.i), sizeof (u.f));
  printf ("fval=%f\n", fval);
  u.f = fval;
  printf ("u.i=%d\n", u.i);
  return u.i;
}
0
инженер-системотехник
 Аватар для Haster
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
09.06.2009, 14:28
А разве не будет косяков из-за такой записи?
C++
1
2
3
4
5
  union
  {
    float f;
    int i;
  } u;
Тип float явно длиннее, чем int, следовательно что-то в int не попадет
Наверно, правильней так
C++
1
2
3
4
5
  union
  {
    float f;
    long i;
  } u;
поправьте, если не прав )
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2009, 14:33
Цитата Сообщение от Haster Посмотреть сообщение
А разве не будет косяков из-за такой записи?
Если писать на все случаи жизни - то вообще неизвестно, что должно быть, ибо язык Си тебе не даёт вообще никакой гарантии, что у тебя float 4 байта и что какойто целый тип занимает 4 байта.

Я так понимаю, что у автора всё-таки компилятор под винду под режим 32 и писал в этом предположении. Но на всякий случай в своём последнем посте воткнул печать размеров типов
1
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
09.06.2009, 14:44  [ТС]
тем не менее... ребят, вы мне объясните принцип как это делаеться -я сам лучше напишу.. хоть воткну... а то я что то слабо улавливаю когда так
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2009, 14:50
Принцип я тебе написал. Почему оно у тебя не работает - вопрос. Я тебе в 14-м посте написал, какой код адо воткнуть и показать печати. Чтобы понять, в каком месте у тебя проблема.
0
Сонный металюга
 Аватар для Акелла
46 / 46 / 13
Регистрация: 10.05.2009
Сообщений: 295
09.06.2009, 17:09  [ТС]
не, ребят. я упорно не понимаю.. либо мы о разном говорим..
смотрите -вводиться например у нас 10.000 ну то бишь вещественное.. .а вернуть должно 10 то есть целое...
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
09.06.2009, 17:11
Цитата Сообщение от Акелла Посмотреть сообщение
не, ребят. я упорно не понимаю.. либо мы о разном говорим..
смотрите -вводиться например у нас 10.000 ну то бишь вещественное.. .а вернуть должно 10 то есть целое...
C
1
2
3
4
int func (float f)
{
  return (int)f;
}
Но начальная постановка задачи всё-таки похожа на то, о чём мы тебе тут толковали
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2009, 17:11
Помогаю со студенческими работами здесь

Типы данных
Здравствуйте! В результате программа должна выводить типы данных переменных и их значения. Но почему-то вместо полного названия типа,...

Типы данных
__int64 Z = pow(a,x); long double Y = 9/Z; cout&lt;&lt;Y //Y = 0 Как вывести подробней? Добавлено через 6 минут И при Y%Z не...

типы данных
какой диапазон данных у main, getch? и какой тип данных у getch?

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

типы данных
int x1, x2; float summa; x1 = 5; x2 = 6; summa = (x1 + x2)/2; cout &lt;&lt; summa &lt;&lt; endl; почему в результате 5, а не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru