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

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

Войти
Регистрация
Восстановить пароль
 
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
#1

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

20.08.2009, 13:33. Просмотров 934. Ответов 9
Метки нет (Все метки)

Найти число с максимальной дробной частью. Я думаю, что надо перевести в символьную строку и после точки посчитать дробную часть. Мне бы только подсказать, а дальше хочу сам. Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2009, 13:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как найти число с максимальной дробной частью. (C++):

В матрице найти число с наибольшей дробной частью в каждой строке. - C++
Доброго утра! Всем! Вообщем требуется подсказка. Есть такая задача: В матрице найти число с наибольшей дробной частью в каждой строке....

В заданном массиве типа double найти число с самой большой дробной частью - C++
Помогите пожалуйста решить задачку. Описать массив типа double с количеством элементов 13. Заполнить его числами в диапазоне от - 20...

Вывести число с наименьшей дробной частью. - C++
Ввести 10 действительных чисел, вывести число с наименьшей дробной частью.

Ввести 10 действительных чисел, вывести число с наименьшей дробной частью - C++
/*16.Ввести 10 действительных чисел, вывести число с наименьшей дробной частью.*/ #include <stdio.h> #include "StdAfx.h" #include...

Найти числа с ненулевой дробной частью - C++
Даны текстовый файл, каждая строка которого изображает целое или действительное число, дополненное слева и справа несколькими пробелами...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
novi4ok
551 / 504 / 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
1386 / 1029 / 139
Регистрация: 26.02.2009
Сообщений: 3,820
Записей в блоге: 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
551 / 504 / 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
1386 / 1029 / 139
Регистрация: 26.02.2009
Сообщений: 3,820
Записей в блоге: 5
20.08.2009, 15:09 #5
novi4ok, это копи-паст из МСДНа
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
20.08.2009, 15:10 #6
дробную часть можно извлечь при помощи функции modf из math.h
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
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
20.08.2009, 16:28 #8
А если присвоить какому-нибудь элементу значение побольше, скажем 15654580810.3?
novi4ok
551 / 504 / 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;
наверняка можно и поизящнее, но нужно думать, а некогда. и все равно нюансы будут иметь место: нужно подумать, как себя вести в случае отрицательных чисел, например. все зависит от конкретного применения. чем аккуратнее нужно это сделать, тем больше нужно думать, и тем дороже результат будет стоить
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2009, 17:57
Привет! Вот еще темы с ответами:

Вывести количество чисел с ненулевой дробной частью и их произведение - C++
С++ Есть текстовый файл, каждая строка которого изображает целое или действительное число, дополненное слева и справа несколькими...

Перевод чисел из двоичной в десятичную систему счисления с дробной частью - C++
Нужно написать программу которая бы переводила числа с дробной частью из 2ичной системы в 10ричную . Не знаю даже как подступиться к...

Дано вещественное число. Найти его вторую цифру в дробной части - C++
Дано вещественное число. Найти его вторую цифру в дробной части.

Найти методом перебора первое десятичное простое число в дробной часть эпсилон - C++
задание найти методом перебора первое десятичное простое число в дробной часть эпсилон. и вот не получается получить 10ти значное число что...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.08.2009, 17:57
Ответ Создать тему
Опции темы

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