Скачиваний:
37
Добавлен:
10.02.2019
Размер:
1.84 Кб
Скачать
#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