Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2011, 15:52   #1
Ruzzl
 
Регистрация: 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();
}
Ruzzl вне форума Ответить с цитированием
Старый 27.10.2011, 16:04   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

0) Код оформляется тэгом CODE.
1) В отладчике можно было посмотреть, нашли бы мгновенно. Посмотрите что у Вас заносится в min при нахождении очередного минимума.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование таблиц... 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