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

Как найти число с максимальной дробной частью. - C++

Восстановить пароль Регистрация
 
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
20.08.2009, 13:33     Как найти число с максимальной дробной частью. #1
Найти число с максимальной дробной частью. Я думаю, что надо перевести в символьную строку и после точки посчитать дробную часть. Мне бы только подсказать, а дальше хочу сам. Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2009, 13:33     Как найти число с максимальной дробной частью.
Посмотрите здесь:

В матрице найти число с наибольшей дробной частью в каждой строке. C++
C++ Вывести число с наименьшей дробной частью.
Ввести 10 действительных чисел, вывести число с наименьшей дробной частью C++
Найти натуральное число от 1 до 10000 с максимальной суммой делителей. C++
C++ Найти число с максимальной суммой делителей
Найти натуральное число из заданного диапозона с максимальной суммой делителей C++
Найти число с максимальной суммой делителей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.08.2009, 14:12     Как найти число с максимальной дробной частью. #2
проще всего, наверное, преобразовать это число в целое, потом обратно в вещественное и вычесть его из исходного. получите дробную часть:

C++
1
2
double someDouble = 3.14;
double fraction = someDouble - (double)((long)someDouble);
но вопрос у вас сформулирован иначе, поэтому:

C++
1
2
char buffer [64];
::sprintf (buffer, "%.20f", someDouble);
а дальше давайте сами
snake32
 Аватар для snake32
1318 / 961 / 122
Регистрация: 26.02.2009
Сообщений: 3,531
Записей в блоге: 5
20.08.2009, 14:32     Как найти число с максимальной дробной частью. #3
есть такая ф-ия fcvt
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
// fcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
 
int main()
{
  char * buf = 0;
  int decimal;
  int sign;
  int err;
 
  buf = (char*) malloc(_CVTBUFSIZE);
  err = _fcvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
  
  if (err != 0)
  {
     printf("_fcvt_s failed with error code %d\n", err);
     exit(1);
  }
 
  printf("Converted value: %s\n", buf);  
  
}
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.08.2009, 15:07     Как найти число с максимальной дробной частью. #4
Цитата Сообщение от snake32 Посмотреть сообщение
есть такая ф-ия fcvt
C++
1
2
3
  char * buf = 0;
  buf = (char*) malloc(_CVTBUFSIZE);
}
а зачем это? чтоб _CVTBUFSIZE байт в размере exe-файла сэкономить? но если уже так, то следует освободить память. понятно, что в вашей программе она будет освобождена и так, но чтоб "руку не сбивать", нужно делать это всегда.
snake32
 Аватар для snake32
1318 / 961 / 122
Регистрация: 26.02.2009
Сообщений: 3,531
Записей в блоге: 5
20.08.2009, 15:09     Как найти число с максимальной дробной частью. #5
novi4ok, это копи-паст из МСДНа
rangerx
1918 / 1527 / 139
Регистрация: 31.05.2009
Сообщений: 2,886
20.08.2009, 15:10     Как найти число с максимальной дробной частью. #6
дробную часть можно извлечь при помощи функции modf из math.h
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
20.08.2009, 15:36  [ТС]     Как найти число с максимальной дробной частью. #7
Вот что у меня получилось:

C++
1
2
3
4
5
6
7
8
9
10
11
12
    double mas[10] = {3.14, 4.152, 6.3215, 1.23, 8.654,
                      4.5678, 5.326, 3.00, 7.5, 9.0654}; 
    double max=mas[0] - (int)mas[0];
    float mas1[10]={0};
    int i;
    for(i=0; i<10; i++)   
    {
        mas1[i] = mas[i] - (int)mas[i];
        cout << mas1[i] << "\n";
        if(max < mas1[i]) max = mas1[i];       
    }
    cout << "max = " << max << "\n";
Всем спасибо! Особенно Новичку
rangerx
1918 / 1527 / 139
Регистрация: 31.05.2009
Сообщений: 2,886
20.08.2009, 16:28     Как найти число с максимальной дробной частью. #8
А если присвоить какому-нибудь элементу значение побольше, скажем 15654580810.3?
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
20.08.2009, 17:04     Как найти число с максимальной дробной частью. #9
Цитата Сообщение от rangerx Посмотреть сообщение
А если присвоить какому-нибудь элементу значение побольше, скажем 15654580810.3?
логичный вопрос. сперва нужно придумать как уменьшить в случае необходимости модуль исходного вещественного так, чтобы он не превышал максимального long, и при этом сохранил свою дробную часть. иначе метод будет выдавать ошибку.

обойти можно, например, так (на примере с short, чтоб попроще):
C++
1
2
3
4
5
6
7
8
double dbl = 22.55333333333333333333333333333333333333333e5;
 
double dbl2 = dbl;
while (dbl2 > 0x7fff){
    dbl2 /= 10.0;
}
short shrt = (short) dbl2;
double fract = dbl2 - shrt;
наверняка можно и поизящнее, но нужно думать, а некогда. и все равно нюансы будут иметь место: нужно подумать, как себя вести в случае отрицательных чисел, например. все зависит от конкретного применения. чем аккуратнее нужно это сделать, тем больше нужно думать, и тем дороже результат будет стоить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2009, 17:57     Как найти число с максимальной дробной частью.
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
23.08.2009, 17:57     Как найти число с максимальной дробной частью. #10
Найти число с максимальной дробной частью:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <algorithm>
#include <vector>
#include <set>
#include <conio.h>
#include <iostream>
#include <numeric>
#include <limits>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    float max_number;
    max_number=std::numeric_limits<float>::max();
    std::cout<<max_number<<std::endl;
    _getch();
    return 0;
}
Yandex
Объявления
23.08.2009, 17:57     Как найти число с максимальной дробной частью.
Ответ Создать тему
Опции темы

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