Не работает сортировка - C (СИ) (79974)

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

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

Эта программа,вроде б то, написана правильно, но высвечивается ошибка возле каждого слова exch. Очень прошу помогите, пожалуйста, прописать эту функцию (exch) в моей сортировке, чтобы началась выполняться сортировка. Помогите,пожалуйста, с этой программой.
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#define amax 10000
void sort_obmen(int m[amax])
{
int r,i,j;
for (i=2;i<=amax;i++) {
for (j=amax;j>=i;j--){
if (m[j-1-1]>m[j-1])
{ r=m[j-1-1]; m[j-1-1]=m[j-1];m[j-1]=r;}
}}
}
int operator==(const Item &A,const Item &B)
{return !less(A,B) && !less(B,A);}
template <class Item>
void quicksort(int a[], int l, int r)
{
int k;int v=a[r];
if (r<=l) return;
int i=l-1, j=r, p=l-1, q=r;
for (;;)
{
while (a[++i]<v);
while (v<a[--j]) if (j==l) break;
exch (a[i],a[j]);
if (a[i]==v) {p++;exch(a[p],a[i]);}
if (v==a[j]) {q--;exch(a[q],a[j]);}
}
exch(a[i], a[r]); j=i-1;i=i+1;
for (k=l;k<=p;k++;j--) exch (a[k],a[j]);
for (k=r-1;k>=q;k--;i++) exch (a[k],a[i]);
quicksort(a,l,j);
quicksort(a,i,r);
}
void main(void)
{
int a[3][amax],ns,i,k;
float htime[10][3],time[2][3],r1,r2;
struct time t;
FILE *f;
srand(1);
f=fopen("res_cpp.txt","w");
fprintf(f,"Porivnannya dvoh metodiv\n\n");
for (ns=1;ns<=2;ns++)
{
if (ns==1){printf("Metod sortirovki obmenamy\n");
fprintf(f,"metod sortirovky obmenamy\n");}
else {printf("metod bistroi sortyrovky\n");
fprintf(f,"metod bistroi sortirovki\n"); }
printf("|-----------------------------------|\n");
printf("|Idealnii|Vepadkovii|Naigirshii|\n");
printf("|-------------------------------------|\n");
fprintf(f,"|--------------------------------|\n");
fprintf(f,"|Idealnii|Vipadkovii|Naigirshii|\n");
fprintf(f,"|--------------------------------|\n");
for (k=1;k<=10;k++)
{
for (i=1;i<=amax;i++){a[0][i-1]=i;}
for (i=1;i<=amax;i++){a[1][i-1]=abs(int(rand()*amax));}
for (i=1;i<=amax;i++){a[2][i-1]=amax+1-i;}
for (i=1;i<=3;i++)
{
gettime(&t);
r1=float(t.ti_hund)/100+t.ti_sec+t.ti_min*60+t.ti_hour*3600;
if (i==2){printf("\n");
for (int j=1;j<=10;j++) {printf("%6i",a[1][j-1]);}}
if (ns==1){sort_obmen(a[i-1]);} else {quicksort(a[i-1],1,amax);}
if (i==2){printf("\n");
for (int j=1;j<=10;j++) {printf("%6i",a[1][j-1]);}}
gettime(&t);
r2=float(t.ti_hund)/100+t.ti_sec+t.ti_min*60+t.ti_hour*3600;
htime[k-1][i-1]=r2-r1;
printf("|%11.2f",htime[k-1][i-1]);
fprintf(f,"|%11.2f",htime[k-1][i-1]);
if (i==3){printf("|\n");fprintf(f,"|\n");}
}
}
printf("|------------------|\n");
fprintf(f,"|------------------|\n");
for (i=1;i<=3;i++){time[ns-1][i-1]=0;}
for (k=1;k<=10;k++){
for (i=1;i<=3;i++){time[ns-1][i-1]=time[ns-1][i-1]+htime[k-1][i-1];}}
for (i=1;i<=3;i++)
{
time[ns-1][i-1]=time[ns-1][i-1]/10;
printf("|%11.3f",time[ns-1][i-1]);
fprintf(f,"|%11.3f",time[ns-1][i-1]);
}
printf("|\n|------------------|\n\n");
fprintf(f,"|\n|------------------|\n\n");
}
printf("podvedenie itogov\n");
printf("|------------------------|\n");
printf("|algoritm|Idealnii|Vepadkovii|Naigirshii|\n");
printf("|--------------------------------|\n");
fprintf(f,"podvedenie itogov\n");
fprintf(f,"|--------------------------------|\n");
fprintf(f,"|algoritm|Idealnii|Vepadkovii|Naigirshii|\n");
fprintf(f,"|--------------------------------|\n");
for (ns=1;ns<=2;ns++)
{
if (ns==1){printf("|obmen  "); fprintf(f,"|obmen ");}
else {printf("|hoor "); fprintf(f,"|hoor ");}
for (i=1;i<=3;i++){printf("|%11.3f",time[ns-1][i-1]);
fprintf(f,"|%11.3f",time[ns-1][i-1]);}
printf("|\n"); fprintf(f,"|\n");
}
printf("|-------------------|\n");
fprintf(f,"|--------------------|\n");
fclose(f);
}

Решение задачи: «Не работает сортировка»

textual
Листинг программы
void exch(int& i, int& j)
{
  int temp=i;
  i=j;
  j=temp;
}

Объяснение кода листинга программы

В данном коде представлена функция с именем exch, которая выполняет обмен значениями двух переменных типа int. Для этого в теле функции создаётся временная переменная temp, в которую записывается значение первой переменной i. Затем значения переменных i и j меняются местами, а затем восстанавливается исходное значение i, путем присваивания значения переменной temp. В данном коде не выполняется сортировка, а всего лишь реализован алгоритм обмена значениями двух переменных.

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


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

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

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