Добавил:
serega_ovc
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программная инженерия 1 курс / 2 семестр / lab1 / bisearch
.c#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>
#define N 250
int compare (const void * a, const void * b)
{
return strcmp(*(char **)a, *(char **)b);
}
int compare1 (const void * a, const void * b)
{
return strcmp((char*)a, *(char **)b);
}
int main() {
// ввод строки
int buffer_length = 250;
int len=0;
char search_str[100];
// искомая строка
scanf("%s",search_str);getchar();
// считывание строк
char* buffer = (char*)malloc(buffer_length);
char c = getchar();
while(c != '\n'){
if(buffer_length - len <= 1){
buffer_length+= N;
buffer = realloc(buffer,buffer_length);
}
buffer[len] = c;
len++;
c = getchar();
}
buffer[len+1]='\0';
// разбиение строки на лексемы
char** str= NULL;
int str_number = 0,str_dinamic =0;
char *pch = strtok (buffer," ,.");
while (pch != NULL) //пока есть лексемы
{
if (str_number == str_dinamic){
str_dinamic+= 5;
str = (char**) realloc(str, str_dinamic*sizeof(char*));
}
str[str_number] = strdup(pch);
str_number++;
pch = strtok (NULL, " ,.-");
}
//сортировкка
qsort(str, str_number,sizeof(char **), compare);
// поиск строки
buffer = strdup(search_str);
if(bsearch((char*)&search_str,str,str_number,sizeof(char **), compare1)){
printf("\nНайдено!");
}else{
printf("\nКатастрофа и такого элемента %s нет",buffer);
}
for(int i=0;i<str_number;i++) free(str[i]);
free(str);
free(buffer);
return 0;
}
Соседние файлы в папке lab1