Ianoș Ştefan-Cristian Ответов: 3

Возрастающий порядок элементов в C


Привет ребята

У меня есть вектор с 9 элементами

vec[20]= 80.59 , 132.40, 81.85, 79.83, 119.96, 111.89, 110.99, 101.21, 118.53

Я пытаюсь поставить их в порядок anscending

вот что показывает мне консоль:
80.59 79.83 81.85 101.21 110.99 111.89 118.53 119.96 132.40


Up-это формула, которую я использовал, но она не работает.
Что же мне делать? Я работаю в программировании на языке Си.

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

for(k=1;k<=i-1;k++)
{
for(j=k+1;j++) {
if(vec[k]>vec[j])
{
    aux=vec[k];
    vec[k]=vec[j];
    vec[j]=aux;
}
}
}

Richard MacCutchan

Вам нужно повторять сортировку до тех пор, пока не будет больше никаких изменений.

3 Ответов

Рейтинг:
2

Patrice T

Язык C основан на 0, это означает, что в массиве первый элемент находится в позиции 0.

vec[20]= 80.59 , 132.40, 81.85, 79.83, 119.96, 111.89, 110.99, 101.21, 118.53

Предположим, что это то, что вы хотите использовать, а не правильный кусок кода на языке Си.
Массив vec имеет размер 20 и элементы находятся в положении от 0 до 19, и только 9 первых элементов инициализируются.
Поскольку ваш код неполон, мы можем только догадываться, что другой ошибки нет.

Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
for(k=1;k<=i-1;k++)
{
  for(j=k+1;j++) {
    if(vec[k]>vec[j])
    {
      aux=vec[k];
      vec[k]=vec[j];
      vec[j]=aux;
    }
  }
}

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]


Рейтинг:
1

OriginalGriff

Не удивлен - это не компилируется:

for(j=k+1;j++) {
Один for петля имеет три секции:
for (init; limit; increment)
   {
   ...
   }
И сделай себе два одолжения:
1) отступ ваш код!
2) Выберите систему брекетинга и придерживайтесь ее!

Смешивание и сопоставление просто запутывает и приводит к ошибкам.
for(k = 1; k < i; k++)
    {
    for(j = k + 1; j < i - 1; j++)
        {
        if(vec[k]>vec[j])
            {
            aux = vec[k];
            vec[k] = vec[j];
            vec[j] = aux;
            }
        }
    }


Рейтинг:
0

CPallini

То C стандартная библиотека языка программирования мягко обеспечивает qsort[^] функция:

#include <stdio.h>
#include <stdlib.h>

int comp ( const void * pa, const void *pb)
{
  return ( *(double *)(pa) > *(double*)(pb));
}


int main()
{
  size_t n;

  double a[]  = { 80.59 , 132.40, 81.85, 79.83, 119.96, 111.89, 110.99, 101.21, 118.53};

  const size_t LENGTH = sizeof(a)/sizeof(a[0]);

  qsort( a, LENGTH, sizeof(a[0]),  comp);

  for (n = 0; n<LENGTH; ++n)
    printf("%g\n", a[n]);

  return 0;
}