Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2013, 12:20   #1
filin1994
 
Регистрация: 19.03.2013
Сообщений: 6
По умолчанию задача на тему массивы и указатели

Помогите решить, вообще не понимаю как в С++ с дробной частью работать.

Задан массив X(N) дробных чисел. Переместить в массив Y все числа, дробная часть которых больше 5. Вывести на экран абсолютные значения чисел, исходного массива X и значения массива Y после выполнения операций над ним.
filin1994 вне форума Ответить с цитированием
Старый 19.03.2013, 12:22   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Что значит "дробная часть больше 5"? Можете привести пример? В моём понимании, дробная часть числа всегда лежит в полуинтервале [0,1).
Abstraction вне форума Ответить с цитированием
Старый 19.03.2013, 12:24   #3
filin1994
 
Регистрация: 19.03.2013
Сообщений: 6
По умолчанию

например число 5,6 . Вот 6 и будет являться дробной частью.
filin1994 вне форума Ответить с цитированием
Старый 19.03.2013, 12:29   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

А число 5,600 - это не то же самое? Математически - да.
Что ещё хуже, дробь 5.6 не может быть представлена в формате числа с плавающей точкой. "На самом деле" там будет нечто вроде 5.600000000000000027385...

Так что если массив "задан" как массив элементов типа float/double, то задание некорректно, его надо как-то додумывать.
Если же речь о том, что числа вводятся, то каждое нужно читать как строку и интерпретировать её как <целое число>,<целое число>.
Abstraction вне форума Ответить с цитированием
Старый 19.03.2013, 12:37   #5
filin1994
 
Регистрация: 19.03.2013
Сообщений: 6
По умолчанию

Код:
  

#include <functional>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <iomanip>
#include <random>
#include <vector>
#include <ctime>
#include <cmath>
 
int main ()
{
    auto randomGeneration = std::bind(std::uniform_real_distribution <> (0, 10),
                                      std::mt19937 (time(nullptr)));
    std::vector <double> fVector (10);
    std::cout << "First vector: " << std::endl;
    std::generate(fVector.begin(), fVector.end(), randomGeneration);
    std::copy(fVector.begin(), fVector.end(), std::ostream_iterator <double> (std::cout << std::setprecision(2), "  "));
 
    double tempNumber;
    std::vector <double> sVector;
    for (auto currNum: fVector) {
        double fraction = modf(currNum, &tempNumber);
        if (fraction > 0.5)
            sVector.push_back(currNum);
    }
    std::cout << std::endl << "Second vector: " << std::endl;
    std::copy(sVector.begin(), sVector.end(), std::ostream_iterator <double> (std::cout << std::setprecision(2), "  "));
 
    return 0;
}



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!
Модератор.



по этому заданию есть вот такая прога, но она не подходит , на занятиях мы std не используем

Последний раз редактировалось filin1994; 19.03.2013 в 13:10.
filin1994 вне форума Ответить с цитированием
Старый 19.03.2013, 12:54   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Приведённая программа (кстати, используйте тег форума CODE для оформления кода) переносит числа, дробная часть которых больше 0.5. В частности, не будет перенесено число 4.25, так как 0.25<0.5. Вы уверены, что это то, что Вам нужно?
Abstraction вне форума Ответить с цитированием
Старый 19.03.2013, 13:02   #7
filin1994
 
Регистрация: 19.03.2013
Сообщений: 6
По умолчанию

В частности, не будет перенесено число 4.25, так как 0.25<0.5.

ну походу верно, если по условию задачи дробная часть должна быть больше 5.
только прогу другим синтаксисом переписать не получается, ошибок много выдает
filin1994 вне форума Ответить с цитированием
Старый 19.03.2013, 13:08   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Abstraction
переносит числа, дробная часть которых больше 0.5.
я на 99.9% уверен, что автору именно это и нужно!

Цитата:
Переместить в массив Y все числа, дробная часть которых больше 5.
читай - "первая цифра после десятичной точки больше 5"
или "запись дробной части числа начинается с цифры 5 "

что, по сути и означает, что автора темы интересуют числа, где дробная часть больше 0.5


p.s. правда, остаётся открытым вопрос, что делать с отрицательными числами.. но это, как говорится, уже совсем другая история..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.03.2013, 13:10   #9
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
ну походу верно, если по условию задачи дробная часть должна быть больше 5.
Опять за рыбу деньги. Насколько мне известно - и автор приведённой Вами программы со мной согласен, - дробная часть числа лежит в полуинтервале [0,1). Соответственно, дробная часть любого числа будет меньше 5 и Y будет пустым массивом.
Abstraction вне форума Ответить с цитированием
Старый 19.03.2013, 13:41   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Abstraction, ну не может он словами выразить то, что у него на душе...

посмотрите, я в своем сообщении #8 попытался за TC сформулировать условия задачи..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
указатели на массивы и массивы указателей blacktener Общие вопросы C/C++ 16 13.06.2011 20:45
Помогите решить задачу ан тему: Указатели, строки, функции обработки строк Chel Общие вопросы C/C++ 3 11.10.2009 19:48
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39