R!sh! Ответов: 2

Сортировка значений ближе к нулю и печать их расположения


у меня есть массив float datatype. arr=[-0.05,0.03,0.09,0.1]; теперь я написал код таким образом, что он будет отображать ближайшее значение к нулю и их местоположение.
но теперь мне нужно сделать так, чтобы все значения массива были на порядок ближе к нулю.
если индекс массива начинается с нуля.
выход должен быть таким
1. 0,03 локации=1
2. -0.05 местоположение=0
3. 0.09 местоположение=2
4. 0.1 местоположение=3

Что я уже пробовал:

#include<stdio.h>
int main() 
{
    float array[100], minimum;
    int size, c, location = 1;
 
    printf("Enter the number of elements in array\n");
    scanf("%d",&size);
 
    printf("Enter %d integers\n", size);
 
    for ( c = 0 ; c < size ; c++ )
        scanf("%f", &array[c]);
 
    minimum = array[0];
 
    for ( c = 0 ; c < size ; c++ ) 
    {
	   if(array[c]<0 && minimum<0)
		{
	if ( (-array[c]) < (-minimum ) )
        {
           minimum = array[c];
           location = c+1;
        }	
		}
else if(array[c]<0 && minimum>0)
{
if ( (-array[c]) < (minimum ) )
        {
           minimum = array[c];
           location = c+1;
        }	
}
else if(array[c]>0 && minimum<0)
{
if ( (array[c]) < (-minimum ) )
        {
           minimum = array[c];
           location = c+1;
        }	
}
else{
        if ( array[c] < minimum ) 
        {
           minimum = array[c];
           location = c+1;
        }}
    } 
 
    printf("Minimum element is present at location %d and it's value is %f.\n", location, minimum);
    return 0;
}

2 Ответов

Рейтинг:
2

CPallini

Используйте qsort[^] функция для этой цели.


Рейтинг:
2

Jochen Arndt

Вы должны отсортировать массив. Поскольку вам нужно распечатать начальную позицию после сортировки,вы должны сохранить и ее. Решение состоит в том, чтобы использовать структуру:

typedef struct
{
    int position;
    float value;
} val_struct;

int main()
{
    val_struct array[100];
    /* ... */
    for ( c = 0 ; c < size ; c++ )
    {
        array[c].position = c;
        scanf("%f", &array[c].value);
    }
    /* ... */
}

Теперь отсортируйте массив и распечатайте все элементы по мере необходимости. Поскольку кажется, что это какое-то домашнее задание, он не будет публиковать окончательное решение. Вы можете искать в интернете алгоритмы сортировки или использовать ссылка на qsort - C++ [^].


R!sh!

Это не мое домашнее задание. если я получу правильный код, мой проект будет завершен. это та часть, которая осталась.

Jochen Arndt

В чем проблема?
Все, что вам нужно сделать, это реализовать функцию сравнения сортировки, вызвать qsort и распечатать результат.