![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 11.06.2012
Сообщений: 1
|
![]()
Здравствуйте! курсовая по информатике "Сортировки и поиск", задание - "составить программу с использованием процедур и функций для сортировки таблицы заданным методом и двоичного поиска по ключу в таблице".
Метод сортировки - метод пузырька Структура таблицы - "тип ключа=строковый, длина ключа в байтах=5, хранение данных и ключей=отдельно , число элементов таблиц=8-12" Помогите пожалуйста в программировании я ламер(( есть код аналогичной программы но тип ключа=целый и хранение вместе(вроде) не могу исправить вот код: #include<stdio.h> #include<string.h> #define MAXSTRING 100 #define MAXELEM 100 #define SIZE 2 typedef struct ln{ int key; char str[MAXSTRING]; int size; }line; //------------------------------file read void readf(FILE *fl,line **st){ int a=1; while ( fscanf(fl,"%d",&st[st[a]->size]->key)!=EOF ){ fscanf(fl,"%d",&st[st[a]->size]->key); fgets(st[st[a]->size]->str,MAXSTRING,fl); st[a]->size++; } st[a]->size--; // for(a=0;a<=size;++a) // { // printf("%i\n",st[a].key); // } } //------------------------------bubble sort void ssort(line **st){ int l=0,a=1,r,k,i,j; int temp; char stemp[MAXSTRING]; r=st[a]->size; while(l<r) { //printf("%i %i\n",l,r); for( j = 0; j<r; j++ ){ //printf("%i\n",j); if(st[j]->key>st[j+1]->key) { temp=st[j]->key; strcpy(stemp,st[j]->str); st[j]->key=st[j+1]->key; strcpy(st[j]->str,st[j+1]->str); st[j+1]->key=temp; strcpy(st[j+1]->str,stemp); } } --r; } } //------------------------------binary search void bsearch (line **st){ int m,a=1; int left=0,right=st[a]->size; int key; printf("Enter key: "); scanf("%i",&key); for(; ![]() m=(left+right)/2; if (key<st[m]->key) right=m - 1; else if ( key>st[m]->key) left=m + 1; else {printf("Key is found:\n%i\t%s\n",st[m]->key,st[m]->str);return;} if ( left > right ){printf("Key not found\n"); return;} } } //------------------------------unsorted print(вывод сод-го файла на экран) void unsprint(FILE *fl,line **st){ int a=0; int i=1; char c[MAXSTRING]; //float k; printf("Key Element\n"); fseek(fl,0,SEEK_SET); while ( a <= st[i]->size ){ //fscanf(fl,"%f",&k); fgets(c,MAXSTRING,fl); printf("%s\n",c); a++; } } //------------------------------file print(печать после действия - сортировка или рассеивание) void sprint(line **st){ int i,a=1; if ( st[a]->size > 0 ){ printf("Key\t\tElement\n"); for(i=0;i<=st[a]->size;i++)printf("%i\t%s\n",st[i]->key,st[i]->str); } else{printf("Struct is empty\n");return;} } //-----------------рассеивание (перераспределяет строки) void revers(line **st){ int l=0,a=1,r,k,i,j; int temp; char stemp[MAXSTRING]; r=st[a]->size; while(l<r) { int i; for(i=0; i<=r/2-1; i++){ temp=st[i]->key; strcpy(stemp,st[i]->str); st[i]->key=st[r-1-i]->key; strcpy(st[i]->str,st[r-1-i]->str); st[r-1-i]->key=temp; strcpy(st[r-1-i]->str,stemp); } --r; } } //------------------------------menu int menu(){ int m; printf("Program menu:\n"); printf("1 - Sort\n"); printf("2 - Unsort\n"); printf("3 - Line search\n"); printf("4 - Print file\n"); printf("5 - Print result\n"); printf("6 - Exit\n"); printf("\nEnter action: "); scanf("%d",&m); return m; } //=================================== ====main int main(int argc,char *argv[]){ char *fn; FILE *f; int i; int m; int z=0; line st[MAXELEM],*stadr[MAXELEM]; for(i = 0;i < MAXELEM; ++i)stadr[i] = &st[i]; //if ( argc < 2 ) {printf("Invalid arguments\n"); return 1;} else fn=argv[1]; if( (f=fopen("test.txt","r")) == NULL ) {printf("File doesn't exists\n"); return 1;} readf(f,stadr); while(1) { m=menu(); switch(m){ case 1:{ssort(stadr);z=1;break;} case 2:{revers(stadr);z=1;break;} case 3:{if ( z )bsearch(stadr);else printf("You should sort first\n");break;} case 4:{unsprint(f,stadr);break;} case 5:{if ( z ) sprint(stadr);else printf("You should sort first\n");break;} case 6:{fclose(f);return 0;} default:{printf("\nInvalide menu action\n");break;} }} } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сортировка и поиск в GridView | Lesa1988 | ASP.NET | 1 | 13.09.2011 12:43 |
поиск и сортировка | sashunechka | Помощь студентам | 3 | 18.05.2011 21:36 |
сортировка и поиск | Barcc | Помощь студентам | 3 | 10.06.2010 15:48 |
Поиск и сортировка | sssdog | Microsoft Office Excel | 2 | 10.07.2009 13:27 |
Поиск и сортировка | junkie | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 01.06.2009 17:17 |