Реферат по предмету "Информатика, программирование"


Найти самое длинное общее слово двух заданных предложений.

Цель работы: Научитьсяработать со строками с помощью указателей.
Задание:
Найти самое длинное общееслово двух заданных предложений.
Требования к программе:
1. Ввод и вывод как стерминала (stdio), так и из/в файл ().
2. Работа со строкамитолько через указатели.
Выполнение работы
Описание входных,выходных и промежуточных данных.
Входные данные:
str1,str2: символьный          //срока 1 и строка 2
Выходные данные:
p                 :символьный              // хранит в семе максимальное слово
Промежуточные данные:
st1, st2        :символьный              // массив скалярных произведений
i,n,j,k                   : целый      // границы слова в первой и во второй строке

 
         ввод
                                        str1,str2
        I:=0; N :=0; p := “ ”;
        выполнять
 
 
       
 
                       
если (length(p) 0) то   
         вывод
                         
иначе
          вывод  
Алгоритм./> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
Листинг программы
#include
#include
#include
#include
#include
/*титульный лист*/
voidtit_list()
{
 clrscr();
 gotoxy(20,1);
 printf(«Министерствообразования и науки Украины»);
 gotoxy(12,2);
 printf(«Донецкийгосударственный институт искусственного интеллекта»);
 gotoxy(31,8);
 printf(«Лабораторнаяработа №3 „);
 gotoxy(35,9);
 printf(“подисциплине:»);
 gotoxy(17,10);
 printf("'Основыпрограммирования и алгоритмические языки'");
 gotoxy(50,15);
 printf(«Выполнил:»);
 gotoxy(50,16);
gotoxy(50,17);
gotoxy(50,19);
 printf(«Проверил: „);
 gotoxy(50,20);
gotoxy(50,21);
getch();
 return;
 }
int cha (charchar1){
 if( ((char1-33)) || ((char1 -129)) || ((char1 > 96)&&(char1 64)&&(char1
 else { return0; }
 }
int sravn_char(char c1,char c2){
 if (abs(c1)> abs(c2)){
         switch(abs(c1 — c2)){
          case32: if ( ( (c1 > -129)&&(c1 96)&&(c1
                             return0;}
                            else{return -2;} break;
          case80: if ((c1 > -113)&&(c1
                             return0;}
                            else{return -3;} break;
          default:;return -1;break;
         }
 }
 else{
         switch(abs(c2 — c1)){
          case0: return 0;break;
          case32: if ( ( (c2 > -129)&&(c2 96)&&(c2
                             return0;}
                            else{return -2;} break;
          case80: if ((c2 > -113)&&(c2
                             return0;}
                            else{return -3;} break;
          default:return -1; break;
         }
 }
}
int main(void)
{
 tit_list();
 clrscr();
 char*input,*name;
 char*p,*bf,*buf,*str1,*str2;
 intb=0,k,lev1,lev2,l1,l2,prv1,prv2;
 int l,bb,v,n;
//************* ВВОДДАННЫХ *****************************************
FILE *f =fopen(“Отчет.zen»,«w+»);
c:
clrscr();
printf("[1]Ввод с клавиатуры\n");
printf("[2] Ввод сфайла\n");
printf("[0]Выход\n");
switch(getch()){
case 49:
//************* ввод склавиатуры ***********************
 clrscr();
 charfstr1[10000],fstr2[10000];
         printf("\t\t\tВведите первую строку: \n");
         gets(fstr1);
 printf("\t\t\tВведите вторую строку: \n");
         gets(fstr2);
//***************************************************************
fprintf(f,«Данныевводяться с клавиатуры \n»);
printf("\n********************************************\n");
 fprintf(f,"\n********************************************\n");
 printf("\n Первая строка:\n");
 fprintf(f,"\n Перваястрока:\n");
 printf("%s \n\n",fstr1);
 fprintf(f,"%s\n\n",fstr1);
 printf(" Втораястрока:\n");
 fprintf(f," Втораястрока:\n");
 printf("%s \n",fstr2);
 fprintf(f,"%s\n",fstr2);
printf("\n********************************************\n");
 fprintf(f,"\n********************************************\n");
//************************************************************
p[0] = '\0';
//************************************************************
         b =strlen(fstr1);
         buf =strdup(fstr1);
         buf+= b;
//************************************************************
         for(k=0;k
          buf--;
          if((*buf == ' ')||(k == b)){
                   buf++;
                   while((cha(buf[strlen(buf)-1]) == 0)&&(strlen(buf) != 0)){
                    buf[strlen(buf)-1]= '\0';
                   }
//**************************
          v =strlen(fstr2);
          bf =strdup(fstr2);
          bf+= v;
          for(n=0;n
                    bf--;
                    if((*bf == ' ')||(n == v)){
                    bf++;
                    while((cha(bf[strlen(bf)-1]) == 0)&&(strlen(bf) != 0)){
                             bf[strlen(bf)-1]= '\0';
                    }
//************************************************************
          if(strlen(buf) == strlen(bf)){
//*********************проверка отдельно каждого символа
                   l=-1;
                   do { l++;
                    bb= sravn_char (buf[l],bf[l]);
                   }while((bb== 0)&&(l
//************************************************************
                   if((bb == 0)&&( strlen(buf) == strlen(p))){
                    printf(«Общее найбольшое слово:'%s'\n»,buf);
                    fprintf(f,«Общеенайбольшое слово :'%s'\n»,buf);
                   }
                   if((bb == 0)&&( strlen(buf) > strlen(p))){
                    p= strdup(buf);
                   }
          }
//************************************************************
                    bf--;
                    *bf= '\0';
                    }
          }
          buf--;
          *buf= '\0';
          }
         }
if (strlen(p)!= 0){
 printf(«Общее найбольшое слово:'%s'\n»,p);
 fprintf(f,«Общеенайбольшое слово :'%s'\n»,p);
}
else{
 printf(«Общих словв предложений нету\n»);
 fprintf(f,«Общихслов в предложений нету\n»);
}
         getch();
break;
//********************Ввод с файла
case 50:
FILE *ff;
clrscr();
printf(«Введите имя файла:»);
do{
 k=0;
 lev1 = 0;
 b=0;
 scanf("%s",name);
 printf(«name= {%s}\n»,name);getch();
 fprintf(f,«Данные читаем изфайла: %s\n»,name);
 if ((ff = fopen(name,«rt»))== NULL){printf(«Cannot open output file.\n»);}
 clrscr();
 b=1;
 do{
 if (b == 3){b= 2; lev2 = prv1+1;}
 input[0] ='\0';
 fscanf(ff,"%s",input);
 if(strlen(input) == 0){ b = 0;}
//**************Первая строка ****************************
 if ((b ==-1)||(b == 1)){
          if(b == 1){ str1 = strdup(input);b = -1;}
          else{strcat(str1," ");strcat(str1,input);}
          if(input[strlen(input)-1] == '.'){b = 3;prv1 = ftell(ff);}
 }
//*************** Втораястрока ***************************
 if ((b == 2)||(b ==-2)){
 if (b == 2){ str2 = strdup(input);b =-2;}
          else{strcat(str2," ");strcat(str2,input);}
          if(input[strlen(input)-1] == '.'){b = -3;prv2 = ftell(ff);}
 }
//*********************************************************
 }while((b !=-3)&&(b != 0));
 if (b == 0){
 clrscr();
 printf("\t\t E R RO R \n В файле не имееться двух предложений!!!\n Введите другое имя файла:");
 fprintf(f,"\t\t E RR O R \n В файле не имееться двух предложений!!!\n Введите другое имя файла.\n");
 fclose(ff);
 }
}while(b == 0);
//************************Исходные данные
 fseek(ff, 0, SEEK_SET);
 clrscr();
 printf("********************************************\n");
 fprintf(f,"\n********************************************\n");
 printf("\n Перваястрока:\n");
 fprintf(f,"\n Перваястрока:\n");
 b=0; l1 = lev1;
 do{
 fseek(ff, l1,SEEK_SET);
 fscanf(ff,"%s",input);
 printf("%s",input);
 fprintf(f,"%s",input);
 l1=ftell(ff);
 }while(l1
 printf("\n\n");
 fprintf(f,"\n\n");
 printf("Вторая строка:\n");
 fprintf(f," Втораястрока:\n");
 l2 = lev2;
 do{
 fseek(ff, l2,SEEK_SET);
 fscanf(ff,"%s",input);
 printf("%s",input);
 fprintf(f,"%s",input);
 l2=ftell(ff);
 }while(l2
 printf("\n\n");
 fprintf(f,"\n\n");
 getch();
//************************алгоритм сравнения слов
 fseek(ff, 0, SEEK_SET);
 l1 = lev1;
//****************************************
 b = 0;
 p[0] = '\0';
//****************************************
 k=0;
 printf("********************************************\n");
 fprintf(f,"********************************************\n");
 do{
         fseek(ff,l1, SEEK_SET);
         fscanf(ff,"%s",buf);
         l1 =ftell(ff);
          l2 =lev2;
         while((cha(buf[strlen(buf)-1]) == 0)&&(strlen(buf) != 0)){
          buf[strlen(buf)-1]= '\0';
         }
         do{
          fseek(ff,l2, SEEK_SET);
          fscanf(ff,"%s",bf);
          l2=ftell(ff);
          while((cha(bf[strlen(bf)-1]) == 0)&&(strlen(bf) != 0)){
                    bf[strlen(bf)-1]= '\0';
          }
          if(strlen(buf) == strlen(bf)){
//*********************проверка отдельно каждого символа
                   l=-1;
                   do{ l++;
                    b=-1;
                    b= sravn_char(buf[l],bf[l]);
                   }while((b== 0)&&(l
//************************вывод результата прверки
                   if((b == 0)&&( strlen(buf) == strlen(p))){
                    printf(«Общее найбольшое слово:'%s'\n»,buf);
                    fprintf(f,«Общеенайбольшое слово :'%s'\n»,buf);
                   }
                   if((b == 0)&&( strlen(buf) > strlen(p))){
                    p= strdup(buf);
                   }
          }
          }while(l2
 }while(l1
if (strlen(p)!= 0){
 printf(«Общее найбольшое слово:'%s'\n»,p);
 fprintf(f,«Общеенайбольшое слово :'%s'\n»,p);
}
else{
 printf(«Общих словв предложениях нет\n»);
 fprintf(f,«Общихслов в предложениях нет\n»);
}
fclose(f);
getch();
break;
//************************************************************
case 48:clrscr(); exit(1);
default: gotoc;
}
//***********************КОНЕЦ ************************
 return 0;
}
Тестовые примеры.
TEST № 1
Данные берем из файла:q.txt
********************************************
 Первая строка
I have manygreen apples
 Вторая строка:
I have manygreen bananas
********************************************
Общее наибольшее слово :'green'
TEST № 2:
Данные вводятся склавиатуры.
********************************************
 Первая строка:
I learn in the Institute of Artificial Intelligence
 Вторая строка:
My frienddidn’t learn in the Institute of Artificial Intelligence
********************************************
Общее наибольшее слово:'Intelligence’

Выводы: в ходе даннойлабораторной работы я изучил элементарную работу со строками, создание иоткрытие файлов, а также непосредственное использование указателей длянахождения нужной информации в память.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат "Закон Мура"
Реферат Краткая биография Брюсова
Реферат Отчет о прохождении учебно-производственной практики в ОАО Сбербанк России Пятигорского от
Реферат Понятие спроса и сбыта в современном маркетинге
Реферат Правительство Большого пути
Реферат Разработки функциональной схемы и определение ее быстродействия
Реферат Кримінальне право 3
Реферат Проблемы очистки сточных вод
Реферат Inner States Of Being Manifestd Outtwardly In
Реферат Защита жертв войны
Реферат Dear Anne Landers Essay Research Paper Dear
Реферат Н.А. Бердяев "Смысл истории"
Реферат Сасанидское государство
Реферат Tolerance
Реферат 1. Основные понятия и классификация страхования Страхование это экономическая категория, система экономических отношений, которые включают совокупность форм и методов форми­рования целевых фондов денежных средств и их использование на возмещение ущер