![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Компьютеры, Программирование
Программное обеспечение
Найти самое длинное общее слово двух заданных предложений. |
Цель работы: Научиться работать со строками с помощью указателей. Задание: Найти самое длинное общее слово двух заданных предложений. Требования к программе: 1. Ввод и вывод как с терминала (s dio), так и из/в файл (&l ; и &g ;). 2. Работа со строками только через указатели. Выполнение работы Описание входных, выходных и промежуточных данных. Входные данные: s r1,s r2 : символьный// срока 1 и строка 2 Выходные данные: p : символьный// хранит в семе максимальное слово Промежуточные данные: s 1, s 2 : символьный// массив скалярных произведений i, ,j,k : целый// границы слова в первой и во второй строке Алгоритм. Листинг программы #i clude &l ;co io.h&g ; #i clude &l ;s ri g.h&g ; #i clude &l ;s dlib.h&g ; #i clude &l ;ma h.h&g ; #i clude &l ;s dio.h&g ; / титульный лист / void i lis () { clrscr(); go oxy(20,1); pri f(&quo ;Министерство образования и науки Украины&quo ;); go oxy(12,2); pri f(&quo ;Донецкий государственный институт искусственного интеллекта&quo ;); go oxy(31,8); pri f(&quo ;Лабораторная работа №3 &quo ;); go oxy(35,9); pri f(&quo ;по дисциплине:&quo ;); go oxy(17,10); pri f(&quo ;'Основы программирования и алгоритмические языки'&quo ;); go oxy(50,15); pri f(&quo ;Выполнил:&quo ;); go oxy(50,16); go oxy(50,17); go oxy(50,19); pri f(&quo ;Проверил: &quo ;); go oxy(50,20); go oxy(50,21); ge ch(); re ur ; } i cha (char char1){ if( ((char1 &l ; -16)&&(char1 &g ;-33)) ((char1 &l ; -80)&&(char1 &g ; -129)) ((char1 &g ; 96)&&(char1 &l ; 123)) ((char1 &g ; 64)&&(char1 &l ; 91))){ re ur 1;} else { re ur 0; } } i srav char (char c1,char c2){ if (abs(c1) &g ; abs(c2)){ swi ch (abs(c1 - c2)){ case 32: if ( ( (c1 &g ; -129)&&(c1 &l ; -112) ) ( (c1 &g ; 96)&&(c1 &l ; 123) ) ){ re ur 0;} else {re ur -2;} break; case 80: if ((c1 &g ; -113)&&(c1 &l ; -96)){ re ur 0;} else {re ur -3;} break; defaul : ;re ur -1;break; } } else{ swi ch (abs(c2 - c1)){ case 0: re ur 0;break; case 32: if ( ( (c2 &g ; -129)&&(c2 &l ; -112) ) ( (c2 &g ; 96)&&(c2 &l ; 123) ) ){ re ur 0;} else {re ur -2;} break; case 80: if ((c2 &g ; -113)&&(c2 &l ; -96)){ re ur 0;} else {re ur -3;} break; defaul : re ur -1; break; } } } i mai (void) { i lis (); clrscr(); char i pu , ame; char p, bf, buf, s r1, s r2; i b=0,k,lev1,lev2,l1,l2,prv1,prv2; i l,bb,v, ; // ВВОД ДАННЫХ FILE f = fope (&quo ;Отчет.ze &quo ;,&quo ;w &quo ;); c: clrscr(); pri f(&quo ; Ввод с файла &quo ;); pri f(&quo ; Выход &quo ;); swi ch (ge ch()){ case 49: // ввод с клавиатуры clrscr(); char fs r1; pri f(&quo ; Введите первую строку: &quo ;); ge s(fs r1); pri f(&quo ; Введите вторую строку: &quo ;); ge s(fs r2); fpri f(f,&quo ;Данные вводяться с клавиатуры &quo ;); pri f(&quo ; Первая строка: &quo ;); fpri f(f,&quo ; Первая строка: &quo ;); pri f(&quo ;%s &quo ;,fs r1); fpri f(f,&quo ;%s &quo ;,fs r1); pri f(&quo ; Вторая строка: &quo ;); fpri f(f,&quo ; Вторая строка: &quo ;); pri f(&quo ;%s &quo ;,fs r2); fpri f(f,&quo ;%s &quo ;,fs r2); p = ' 0'; b = s rle (fs r1); buf = s rdup(fs r1); buf = b; for (k=0;k&l ;=b;k ){ buf--; if (( buf == ' ') (k == b)){ buf ; while ((cha(buf) == 0)&&(s rle (buf) != 0)){ buf = ' 0'; } // v = s rle (fs r2); bf = s rdup(fs r2); bf = v; for ( =0; &l ;=v; ){ bf--; if (( bf == ' ') ( == v)){ bf ; while ((cha(bf) == 0)&&(s rle (bf) != 0)){ bf = ' 0'; } if (s rle (buf) == s rle (bf)){ // проверка отдельно каждого символа l=-1; do { l ; bb = srav char (buf); }while((bb == 0)&&(l &l ; s rle (buf)-1)); if ((bb == 0)&&( s rle (buf) == s rle (p))){ pri f(&quo ;Общее найбольшое слово :'%s' &quo ;,buf); fpri f(f,&quo ;Общее найбольшое слово :'%s' &quo ;,buf); } if ((bb == 0)&&( s rle (buf) &g ; s rle (p))){ p = s rdup(buf); } } bf--; bf = ' 0'; } } buf--; buf = ' 0'; } } if (s rle (p) != 0){ pri f(&quo ;Общее найбольшое слово :'%s' &quo ;,p); fpri f(f,&quo ;Общее найбольшое слово :'%s' &quo ;,p); } else{ pri f(&quo ;Общих слов в предложений нету &quo ;); fpri f(f,&quo ;Общих слов в предложений нету &quo ;); } ge ch(); break; // Ввод с файла case 50: FILE ff; clrscr(); pri f(&quo ;Введите имя файла:&quo ;); do{ k=0; lev1 = 0; b=0; sca f(&quo ;%s&quo ;, ame); pri f(&quo ; ame = {%s} &quo ;, ame);ge ch(); fpri f(f,&quo ;Данные читаем из файла: %s &quo ;, ame); if ((ff = fope ( ame,&quo ;r &quo ;)) == ULL){pri f(&quo ;Ca o ope ou pu file.
&quo ;);} clrscr(); b=1; do{ if (b == 3){b = 2; lev2 = prv1 1;} i pu = ' 0'; fsca f(ff,&quo ;%s&quo ;,i pu ); if (s rle (i pu ) == 0){ b = 0;} // Первая строка if ((b == -1) (b == 1)){ if (b == 1){ s r1 = s rdup(i pu );b = -1;} else {s rca (s r1,&quo ; &quo ;);s rca (s r1,i pu );} if (i pu == '.'){b = 3;prv1 = f ell(ff);} } // Вторая строка if ((b == 2) (b == -2)){ if (b == 2){ s r2 = s rdup(i pu );b = -2;} else {s rca (s r2,&quo ; &quo ;);s rca (s r2,i pu );} if (i pu == '.'){b = -3;prv2 = f ell(ff);} } }while((b != -3)&&(b != 0)); if (b == 0){ clrscr(); pri f(&quo ; E R R O R В файле не имееться двух предложений!!! Введите другое имя файла: &quo ;); fpri f(f,&quo ; E R R O R В файле не имееться двух предложений!!! Введите другое имя файла. &quo ;); fclose(ff); } }while(b == 0); // Исходные данные fseek(ff, 0, SEEK SE ); clrscr(); pri f(&quo ; Первая строка: &quo ;); fpri f(f,&quo ; Первая строка: &quo ;); b=0; l1 = lev1; do{ fseek(ff, l1, SEEK SE ); fsca f(ff,&quo ;%s&quo ;,i pu ); pri f(&quo ;%s &quo ;,i pu ); fpri f(f,&quo ;%s &quo ;,i pu ); l1= f ell(ff); }while(l1 &l ; prv1); pri f(&quo ; &quo ;); fpri f(f,&quo ; &quo ;); pri f(&quo ; Вторая строка: &quo ;); fpri f(f,&quo ; Вторая строка: &quo ;); l2 = lev2; do{ fseek(ff, l2, SEEK SE ); fsca f(ff,&quo ;%s&quo ;,i pu ); pri f(&quo ;%s &quo ;,i pu ); fpri f(f,&quo ;%s &quo ;,i pu ); l2= f ell(ff); }while(l2 &l ; prv2); pri f(&quo ; &quo ;); fpri f(f,&quo ; &quo ;); ge ch(); // алгоритм сравнения слов fseek(ff, 0, SEEK SE ); l1 = lev1; // b = 0; p = ' 0'; // k=0; do{ fseek(ff, l1, SEEK SE ); fsca f(ff,&quo ;%s&quo ;,buf); l1 = f ell(ff); l2 = lev2; while ((cha(buf) == 0)&&(s rle (buf) != 0)){ buf = ' 0'; } do{ fseek(ff, l2, SEEK SE ); fsca f(ff,&quo ;%s&quo ;,bf); l2= f ell(ff); while ((cha(bf) == 0)&&(s rle (bf) != 0)){ bf = ' 0'; } if (s rle (buf) == s rle (bf)){ // проверка отдельно каждого символа l=-1; do{ l ; b=-1; b = srav char(buf); }while((b == 0)&&(l &l ; s rle (buf)-1)); // вывод результата прверки if ((b == 0)&&( s rle (buf) == s rle (p))){ pri f(&quo ;Общее найбольшое слово :'%s' &quo ;,buf); fpri f(f,&quo ;Общее найбольшое слово :'%s' &quo ;,buf); } if ((b == 0)&&( s rle (buf) &g ; s rle (p))){ p = s rdup(buf); } } }while(l2 &l ; prv2); }while(l1 &l ; prv1); if (s rle (p) != 0){ pri f(&quo ;Общее найбольшое слово :'%s' &quo ;,p); fpri f(f,&quo ;Общее найбольшое слово :'%s' &quo ;,p); } else{ pri f(&quo ;Общих слов в предложениях нет &quo ;); fpri f(f,&quo ;Общих слов в предложениях нет &quo ;); } fclose(f); ge ch(); break; case 48: clrscr(); exi (1); defaul : go o c; } // КОНЕЦ re ur 0; } Тестовые примеры. ES № 1 Данные берем из файла: q. x Первая строка I have ma y gree apples Вторая строка: I have ma y gree ba a as Общее наибольшее слово :' gree ' ES № 2: Данные вводятся с клавиатуры. Первая строка: I lear i he I s i u e of Ar ificial I ellige ce Вторая строка: My frie d did ’ lear i he I s i u e of Ar ificial I ellige ce Общее наибольшее слово:' I ellige ce’ Выводы: в ходе данной лабораторной работы я изучил элементарную работу со строками, создание и открытие файлов, а также непосредственное использование указателей для нахождения нужной информации в память.
14
Загадка "Змея" Эта головоломка была изобретена величайшим английским создателем загадок Генри Дьюдни еще в конце прошлого века. В отличие от большинства подобных загадок, эта картинка не может быть нарисована с использованием только одной непрерывной линии. Нужны 12 линий, чтобы завершить ее. Загадка требует найти самую длинную из них. Изображенная на рисунке линия, начинающаяся в А и заканчивающаяся в В, и есть ответ. Другие 11 линий показаны мелким пунктиром. Пунктирпая линия CD короче, чем непрерывная линия CD, и не используется. Это необычная загадка. Я лично никогда не видел ничего подобного. Загадка "Деньги" Вместо старой римской монеты и стодолларовой купюры используйте любую купюру и монету. Сложите купюру пополам в длину, затем еще раз пополам поперек в середине. Убедитесь, что купюра достаточно новая и сгибы отчетливы. Поставьте купюру и положите на нее монету, как показано на рисунке 1. Точка перекрестия сгибов должна быть точно под центром монеты. Теперь возьмитесь за концы купюры и потяните их в стороны так, чтобы купюра распрямилась (рисунок 2)
1. Формирование слоговой структуры слова: логопедические задания
2. Опасности- как общая часть и землетрясения- как индивидуальное задание
3. Вопросы синтаксического анализа и пунктуационного оформления предложений, включающих слово «что»
4. Методика работы над понятиями "звук", "слог", "слово", "предложение" в добукварный период
5. Задание на проектирование. Проектирование промышленных предприятий
9. Сертификация пожароопасной продукции и информирование населения. Общие положения и порядок надзора
10. Общая экономико-географическая характеристика стран Африки
11. Общая экономико-географическая характеристика республики Сенегал
12. Общая геология. Геология нефти и газа
13. Общие положения об обязательствах и договорах
14. Общие положения договора поставки
15. Общее и особенности в реформах Петра Первого и Екатерины Второй
17. Сертификация пожароопасной продукции и информирование населения. Общие положения и порядок надзора
19. Шпаргалка по общей теории права
20. Ударение в сложных словах немецкого языка
21. Местоимения и слова-заместители в современном английском языке
26. Призыв к единению в "Слово о полку Игореве"
29. Виды придаточных предложений в русском языке
30. Особенности изображения двух миров в поэме А. Блока "Двенадцать"
31. Сопоставительный анализ русских слов ошибка, заблуждение, ляпсус и французских faute, erreur, lapsus
32. Заимствованные слова в региональной прессе на примере газеты "Чапаевский рабочий"
34. Как я представляю себе автора "Слова о полку Игореве"
37. Знаки препинания в сложноподчиненном предложении
42. Союзники и противники двух мировых войн
44. Немецкий менталитет и происхождение двух мировых войн (Райнер Бендик)
46. Набор процедур манипулирования с целыми числами произвольной длины
49. Автоматизированная система распределения мест и оценок качества олимпиадных заданий
50. Методические рекомендации и задания для лабораторных работ по дисциплине «Вычислительные системы»
51. Общая характеристика системы Windows
52. Разработка системы реального времени в виде планировщика исполнения заданий
57. Общие вопросы фармакодинамика и фармакокинетики
58. Общая физиология центральной нервной системы и Высшей нервной деятельности
59. Общий план строения стенки сосуда
60. Общая характеристика органов кроветворения и иммунологической защиты
61. Общая характеристика эндокринной системы
62. Общие особенности антибактериальных препаратов
63. Некоторые методы лечения переломов длинных трубчатых костей
64. Гомеопатия в общей практике
66. Суды общей юрисдикции, порядок формирования, состав, полномочия
67. Общая часть Уголовного Кодекса РФ (Шпаргалка)
68. Шпаргалки по уголовному праву (общая часть)
69. Тесты по уголовному праву (общая часть)
73. Автоматизированная система распределения мест и оценок качества олимпиадных заданий
74. Германия - инициатор двух мировых войн. Причины и последствия
75. Компенсация реактивной мощности в сетях общего назначения
76. Расчет и проектирование одноступенчатого, цилиндрического, шевронного редуктора общего назначения
78. Спроектировать привод конвейера по заданной схеме и характеристикам (WinWord97 + Corel Draw)
79. Расчёт максимальных растягивающих и сжимающих напряжений для балки (заданного сечения)
81. Общая характеристика речного транспорта
82. Соотношение слова и изображения в комплексном аудиолингвовизуальном сообщении
84. Общие проблемы малой группы в социальной психологии
85. Общая психология
89. Устойство измерения отношения двух напряжений
91. БУДДА: Победить самого себя
93. Общая социология для 1 курса
94. Общая энергетика
95. Общая Физика (лекции по физике за II семестр СПбГЭТУ "ЛЭТИ")
96. Физическая культура как часть общей культуры человека
97. Организационная основа использования физической культуры на детском курорте и общем курорте
98. Общая физическая подготовка в системе физического воспитания студентов
99. Общая физическая спортивная подготовка в системе физического воспитания