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

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

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

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

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

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

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

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

Можно ли строку (типа string) отсортировать с помощью qsort? - C++
Как можно строку a (типа string) отсортировать с помощью qsort, или это не возможно? На это ... int compare (const void * a, const...

Определить равна ли сумма k цифр дробной части заданного вещественного числа сумме цифр целой части - C++
Помогите доделать задание, исправьте пожалуйста код!!! Срочно! Задание: Выполнить задания, выделяя цифры числа, хранящегося в переменной...

Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной части - C++
Нада написать 2 программки 1. Определения, равна сумма цифр целой части вещественного числа сумме такого же количества цифр в дробной...

Классы. Вывести значение числа цифр в дробной части числа - C++
#include "stdafx.h" #include <locale.h> #include <conio.h> #include <iostream> using namespace std; class Chislo { ...

Вывести старшую цифру дробной части и младшую цифру целой части числа - C++
Искал у вас, не нашел. Я новичок в этом деле, если вам не трудно напишите полностью решение ща контрольная ( 31. Даны натуральные...

11
PaT TEma
17 / 17 / 8
Регистрация: 12.10.2014
Сообщений: 97
10.04.2016, 19:14 #2
http://cppstudio.com/post/891/

Добавлено через 25 секунд
Нет разницы какой тип данных, просто нужно указать его размер
0
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 19:20 #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;
}
1
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 19:21  [ТС] #4
А не подскажете, как это будет выглядеть в коде, а то вообще не понимаю как это реализовать.
0
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 19:26 #5
Цитата Сообщение от 0x0152 Посмотреть сообщение
int compare(const void * x1, const void * x2)
Забыл возвращаемый тип данных надо на float поменять
0
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 19:29  [ТС] #6
Сортировку целой части я смог написать, но как сделать сортировку по дробной части как в задании?
0
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 19:31 #7
Цитата Сообщение от nikita_eliz Посмотреть сообщение
А не подскажете, как это будет выглядеть в коде, а то вообще не понимаю как это реализовать.
Цитата Сообщение от 0x0152 Посмотреть сообщение
qsort("Масив", "Кол-во элементов", "Размер каждого элемента", Функция);
Если так не удобно заверните в класс.
0
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 19:34  [ТС] #8
Цитата Сообщение от 0x0152 Посмотреть сообщение
Если так не удобно заверните в класс.
Так все удобно, просто вы получается сортировали по всему числу, а надо по дробной части числа, вот как по дробной части я немного не понимаю.
0
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 19:45 #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 он не примет
0
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 19:56  [ТС] #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
 
А как сделать так, чтобы он сортировал по дробной, а выводил вместе с целой?
0
0x0152
31 / 31 / 8
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 20:05 #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;
}
1
nikita_eliz
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 10
10.04.2016, 20:08  [ТС] #12
Спасибо большое!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2016, 20:08
Привет! Вот еще темы с ответами:

Отделение дробной части от числа - C++
у меня такое задание: Функци принимает в себя дробное число и возвращает только его дробную часть мне нужно вывести на экран только...

Выделение дробной части из числа - C++
Дано число, например, х=124,556 нужно найти его целую и дробную части, чтобы получилось так: int a(целая),b(дробная) а=124 b=556 ...

Список(List) как отсортировать по убыванию используя функции reverse(); sort(); ао убыванию - C++
Нужно отсортировать список по убыванию используя функции reverse(); и sort(); если можно фул прогу бо завтыкал тему чёто)))))

Последовательность в дробной части вещественного числа - C++
Верно ли, что первые n цифр дробной части заданного по-ложительного вещественного числа образуют возрастающую последовательность? ...


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

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

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