Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
Про виконання лабораторної роботи № 2
з програмування
Тема: Променевий пошук
.
Мета:Навчитися реалізовувати програму променевого пошуку даних.
Завдання:Нехай ми маємо певну статистику вживання англійських слів. І маємо відносну кількість їх вживання за одну годину. Наша програма повинна шукати задане слово і повертати його дані. Якщо програма немає даних на задане слово вона має про це повідомляти користувача.
Програма
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
struct slova
{
char sl[10];
int kilkist;
struct* synu[123];
};
typedef struct slova *tree;
void Init(tree *ptr)
{
*ptr = NULL;
}
void NULLslov(tree ptr)
{
int i;
for(i=0;i<123;i++)
{
ptr->synu[i]=NULL;
}
}
tree posh0(tree ptr,int buf)
{
return ptr->synu[buf];
}
tree init1 ()
{
int i,j,buf;
tree t1,p2,p3;
char sliv[12][6]={"not","and","as","are","ar","bus","be","by","to","that","then","the"};
int m[12]={123,34,56,67,21,324,535,567,876,967,987,678};
Init(&t1);
t1= malloc(sizeof(struct slova));
strcpy(t1->sl,"0");
NULLslov(t1);
for(i=0;i<12;i++)
{
p2=t1;
for(j=0;j<6;j++)
{
buf=sliv[i][j];
if(posh0(p2,buf)==NULL)
{
p3=malloc(sizeof(struct slova));
strcpy(p3->sl,sliv[i]);
p3->kilkist=m[i];
NULLslov(p3) ;
p2->synu[buf]=p3;
break;
}
else
{
p2=p2->synu[buf];
}
}
}
return t1;
}
void POSHUK(tree ptr,char new_s[10])
{
int i,buf;
for(i=0;strcmp(ptr->sl,new_s)!=0;i++)
{
buf=new_s[i];
ptr=ptr->synu[buf];
if(ptr==0)break;
}
if(ptr!=0)
{
printf(" SLOVO - %s ",ptr->sl);
printf("\n VIDNOSNA CASTOTA VJYVANNIA PROTIAGOM HODYNY\n\t%d\n",ptr->kilkist);
}
else
printf("\nDanogo slova nema v poslidovnosti!!!\n");
}
void main()
{
int i=0;
tree derevo;
char slovo[10];
derevo=init1();
printf("\nPrograma mistyti naibilish vgyvani English slova");
do
{
printf("\nVvedit 0 - zakincyty programy\n\n\t 1 - poshuk slova --");
scanf("%d",&i);
if(i==1)
{
printf("\nVvedit slovo dlia poshuku: ");
printf("\n\t( z maloi bukvy )\n\t");
scanf("%s",slovo);
POSHUK(derevo,slovo);
}
}while(i==1 );
return 0;
}
Результат:
Висновок: На дані лабораторні роботі ми навчилися опрацьовувати великі об'єми інформації. Набули навик реалізації променевого пошуку.