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

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

Войти
Регистрация
Восстановить пароль
 
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
#1

Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части - C++

10.04.2016, 19:11. Просмотров 491. Ответов 11
Метки нет (Все метки)

Помогите, пожалуйста.
Дан массив вещественных чисел double arr[N]. Отсортируйте в нем числа с помощью функции qsort() по убыванию дробной части.

qsort же вроде сортирует только целые числа, если я не ошибаюсь.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2016, 19:11     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части
Посмотрите здесь:

C++ Список(List) как отсортировать по убыванию используя функции reverse(); sort(); ао убыванию
C++ Выделение дробной части из числа
C++ Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной части
C++ Можно ли строку (типа string) отсортировать с помощью qsort?
C++ Найти сумму первых 5 цифр дробной части действительного числа.например для числа 23,1680989 она равна 24.програма на С++
C++ Найти сумму первых 5 цифр дробной части действительного числа.например для числа 23,1680989 она равна 24.Програма на С++
C++ Классы. Вывести значение числа цифр в дробной части числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PaT TEma
17 / 17 / 8
Регистрация: 12.10.2014
Сообщений: 97
10.04.2016, 19:14     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #2
http://cppstudio.com/post/891/

Добавлено через 25 секунд
Нет разницы какой тип данных, просто нужно указать его размер
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 19:20     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #3
Цитата Сообщение от nikita_eliz Посмотреть сообщение
Дан массив вещественных чисел double arr[N]. Отсортируйте в нем числа с помощью функции qsort() по убыванию дробной части.
qsort же вроде сортирует только целые числа, если я не ошибаюсь.
Условие поменять.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//пример использования функции qsort
#include <iostream>
#include <cstdlib>
 
float vector[] = { 14.5, 10.23, 11.435, 19.334, 2.32, 25.44 };
 
int compare(const void * x1, const void * x2)   // функция сравнения элементов массива
{
  return *(float*)x2 ) - ( *(float*)x1;              // если результат вычитания равен 0, то числа равны, < 0: x1 < x2; > 0: x1 > x2
}
 
int main ()
{
  qsort(vector, 6, sizeof(float), compare);      // сортируем массив чисел
  for ( int ix = 0; ix < 6; ix++)
      std::cout << vector[ix] << " ";
  return 0;
}
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 19:21  [ТС]     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #4
А не подскажете, как это будет выглядеть в коде, а то вообще не понимаю как это реализовать.
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 19:26     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #5
Цитата Сообщение от 0x0152 Посмотреть сообщение
int compare(const void * x1, const void * x2)
Забыл возвращаемый тип данных надо на float поменять
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 19:29  [ТС]     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #6
Сортировку целой части я смог написать, но как сделать сортировку по дробной части как в задании?
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 19:31     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #7
Цитата Сообщение от nikita_eliz Посмотреть сообщение
А не подскажете, как это будет выглядеть в коде, а то вообще не понимаю как это реализовать.
Цитата Сообщение от 0x0152 Посмотреть сообщение
qsort("Масив", "Кол-во элементов", "Размер каждого элемента", Функция);
Если так не удобно заверните в класс.
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 19:34  [ТС]     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #8
Цитата Сообщение от 0x0152 Посмотреть сообщение
Если так не удобно заверните в класс.
Так все удобно, просто вы получается сортировали по всему числу, а надо по дробной части числа, вот как по дробной части я немного не понимаю.
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 19:45     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstdlib>
#include <cmath>
 
float vector[] = { 14.5, 10.23, 10.24, 19.334, 2.32, 25.44 };
 
int compare(const void * x1, const void * x2)   // функция сравнения элементов массива
{
  return (*((float*)x2 ) - ( *(float*)x1)) * 100;// если результат вычитания равен 0, то числа равны, < 0: x1 < x2; > 0: x1 > x2
}
 
int main ()
{
    for ( int i = 0; i < 6; i++){
        vector[i] = modff(vector[i], &vector[i]);   
    }
 
  qsort(vector, 6, sizeof(float), compare);      // сортируем массив чисел
  for ( int ix = 0; ix < 6; ix++)
      std::cout << vector[ix] << " ";
  return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от 0x0152 Посмотреть сообщение
Забыл возвращаемый тип данных надо на float поменять
Тут я ошибся -Float он не примет
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 19:56  [ТС]     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #10
Цитата Сообщение от 0x0152 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
#include <cmath>
float vector[] = { 14.5, 10.23, 10.24, 19.334, 2.32, 25.44 };
int compare(const void * x1, const void * x2) * // функция сравнения элементов массива
{
* return (*((float*)x2 ) - ( *(float*)x1)) * 100;// если результат вычитания равен 0, то числа равны, < 0: x1 < x2; > 0: x1 > x2
}
int main ()
{
* * for ( int i = 0; i < 6; i++){
* * * * vector[i] = modff(vector[i], &vector[i]); * 
* * }
qsort(vector, 6, sizeof(float), compare); * * *// сортируем массив чисел
* for ( int ix = 0; ix < 6; ix++)
* * * std::cout << vector[ix] << " ";
* return 0;
}
C++
1
 
А как сделать так, чтобы он сортировал по дробной, а выводил вместе с целой?
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 20:05     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdlib>
#include <cmath>
 
float vector[] = { 14.5, 10.23, 10.24, 19.334, 2.32, 25.44 };
 
int compare(const void * x1, const void * x2)   // функция сравнения элементов массива
{
    float tmp = 0;
  return (modff(*((float*)x2 ), &tmp) - modff(*((float*)x1 ), &tmp)) * 10000;
}
 
int main ()
{
 
  qsort(vector, 6, sizeof(float), compare);      // сортируем массив чисел
  for ( int ix = 0; ix < 6; ix++)
      std::cout << vector[ix] << " ";
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2016, 20:08     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части
Еще ссылки по теме:

C++ Вывести старшую цифру дробной части и младшую цифру целой части числа
Отсортировать комплексные числа по возрастанию модуля, убыванию действительной части C++
C++ Отделение целой части числа от дробной
C++ Последовательность в дробной части вещественного числа
Отделение дробной части от числа C++

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

Или воспользуйтесь поиском по форуму:
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 20:08  [ТС]     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части #12
Спасибо большое!
Yandex
Объявления
10.04.2016, 20:08     Отсортировать в массиве числа с помощью функции qsort по убыванию дробной части
Ответ Создать тему
Опции темы

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