![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 21.09.2010
Сообщений: 6
|
![]()
Тут такая проблема,сделал сортировку прямым выбором,но она не работает(подпрограмма sort)
если кто знает,помогите в чем там ошибка (прога компилится и все нормально,но выводит неупорядоченную таблицу #include <stdio.h> #include <conio.h> #include <string.h> const int N = 5; struct elem { char shifr[9]; char name[16]; int col; }; struct table { elem P[N]; int n; }; table T; int poisk(table *T, char *k, int *x) { int i; if( T->n == 0) { *x = 0; return 0; } if(strcmp(k, T->P[T->n-1].shifr) == 1) { *x=T->n; return 0; } else { for(i = 0; strcmp(k, T->P[i].shifr) == 1; i++); {*x=i; if(strcmp(k, T->P[i].shifr)== 0) return 1; else return 0;} } } int add(table *T, int i, elem *y) { int j, k; if((T->n)+1<=N) { for(j = T->n; j>i; j--) { T->P[j] = T->P[j-1]; } strcpy(T->P[i].shifr, y->shifr); strcpy(T->P[i].name, y->name); T->P[i].col = y->col; T->n++; return 1; } else return 0; } void sort(table *T) { int i,j,k; elem min; for (i=0;i<T->n-1;i++) { min=T->P[i]; k=i; for(j=i+1;j<T->n;j++) if (T->P[i].col<min.col) { min=T->P[i]; k=j; } T->P[k]=T->P[i]; T->P[i]=min; } } void main() { int i, j, k; int p = 1; elem z; FILE *f; f = fopen("WORK.txt", "r"); while(!feof(f)&&p!=0) { fscanf(f, "%s", &z.shifr); fscanf(f, "%s", &z.name); fscanf(f, "%d", &z.col); printf("%s", z.shifr ); printf(" "); printf("%s", z.name ); printf(" "); printf("%d", z.col ); printf("\n"); if (poisk(&T, z.shifr, &i) == 1) T.P[i].col+=z.col; else if((add(&T, i, &z)) == 0) { p = 0; printf("table is full\n"); } } printf("\n"); for(j = 0; j < T.n; j++) { printf("%s", T.P[j].shifr ); printf(" "); printf("%s", T.P[j].name ); printf(" "); printf("%d", T.P[j].col ); printf("\n"); } printf("\n"); sort(&T); for(j = 0; j < T.n; j++) { printf("%s", T.P[j].shifr ); printf(" "); printf("%s", T.P[j].name ); printf(" "); printf("%d", T.P[j].col ); printf("\n"); } getch(); } |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
0) Код оформляется тэгом CODE.
1) В отладчике можно было посмотреть, нашли бы мгновенно. Посмотрите что у Вас заносится в min при нахождении очередного минимума. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Копирование таблиц... | den_irk | Microsoft Office Excel | 2 | 29.06.2011 21:24 |
Cформировать из 30 таблиц 1 500 000 000 таблиц, за 2 часа. | kola672 | Фриланс | 12 | 02.11.2010 20:43 |
Сформировать из 30 таблиц 15 000 таблиц, за 15 минут. | kola672 | Фриланс | 31 | 19.10.2010 01:22 |
Отчет из 2-х таблиц | Genady-Mel | Microsoft Office Access | 1 | 28.08.2010 21:51 |
Связь таблиц | Etlau | Помощь студентам | 0 | 27.12.2009 15:10 |