Не работает сортировка - 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. В данном коде не выполняется сортировка, а всего лишь реализован алгоритм обмена значениями двух переменных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д