Сортировка динамического массива (исправить код) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Написал программу, которая должна сортировать динамический массив. Но она его не сортирует, а выдаёт все элементы по порядку, причём, когда массив статический, всё работает корректно, подскажите, в чем дело. Заранее спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
double *t;
int i,n, j,tmp;
printf("\n n=");
scanf("%d", &n);
t=(double *)malloc(n*sizeof(double));
printf(" Isxodny massiv:\n ");
for ( i=0; i<n; i++)
{printf("x[%d]=",i);
scanf("%lf", &t[i]);}
 
printf("\n");
for ( i=0; i<n; i++)
for ( j=i+1; j<n; j++)
    if( i > j )
    {
        tmp=i;
        i=j;
        j=tmp;
    }
printf(" Sorted massiv:\n ");
for ( i=0; i<n; i++) 
    printf("\t x[%d]=%lf", i, t[i]);
free(t);
getch();
}

Решение задачи: «Сортировка динамического массива (исправить код)»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
    double *t;
    int i,n, j,tmp;
    printf("\n n=");
    scanf("%d", &n);
    t=(double *)malloc(n*sizeof(double));
    printf(" Isxodny massiv:\n ");
    for ( i=0; i<n; i++)
    {
        printf("x[%d]=",i);
        scanf("%lf", &t[i]);
    }
 
    printf("\n");
    for ( i=0; i<n; i++)
        for ( j=i+1; j<n; j++)
            if( t[i] > t[j] )
            {
                tmp=t[i];
                t[i]=t[j];
                t[j]=tmp;
            }
    printf(" Sorted massiv:\n ");
    for ( i=0; i<n; i++)
        printf("\t x[%d]=%lf", i, t[i]);
    free(t);
    getch();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы