Материалы сайта
Это интересно
Вычислительная практика I курс
Смаль Дмитрий, АС-14 Работа №2(1) 1. Постановка задачи: Вариант 10: Найти количество различных слов, входящих в строку. 2. Тестовые примеры: 1) we are the champions. В этом предложении 4 различных слова 2) we are the champions because we are the best. В этом предложении 6 различных слов 3) we we we we we. В этом предложении 1 различное слово 4) персональный компьютер персональный компьютер. В этом слове 2 различных слова 3. Схема алгоритма (см. Приложение №1) 4. Распечатка текста программы: Program Stroka_1; Uses crt; Const Web=[',','.','?','!',':',';','-','<','>','(',')',' ']; Var s,b,vv:STRING; t,i,j,n,k:INTEGER; a,m:ARRAY[1..100] of STRING; Begin clrscr; Writeln('Введите строку:'); Readln(s); b:=''; j:=1; For i:=1 to length(s) do If s[i] in Web then s[i]:=' '; i:=1; While i<=length(s) do begin If (s[i] in Web) and (s[i+1] in Web) then Delete(s,i,1) else i:=i+1; end; If s[1]=' ' then Delete(s,1,1); i:=1; n:=0; While i<=length(s) do begin While (s[i]<>' ') and (i<=length(s)) do begin b:=b+s[i]; Inc(i); end; m[j]:=b; Inc(i); b:=''; Inc(j); Inc(n); end; k:=0; For i:=1 to n do For j:=i+1 to n do If m[i]=m[j] then begin Inc(k); m[i]:=Chr(k); end; Writeln('Различных слов в строке: ',n-k); End. 5. Тестовые примеры: 1) Введите строку: we are the champions Различных слов в строке: 4 2) Введите строку: we are the champions because we are the best Различных слов в строке: 6 3) Введите строку: we we we we we Различных слов в строке: 1 4) Введите строку: персональный компьютер персональный компьютер Различных слов в строке: 2 Приложение №1 Ввод строки Для i от 1 до длины строки НЕТ ДА Конец цикла i НЕТ ДА НЕТ ДА НЕТ ДА НЕТ ДА НЕТ Для i от 1 до n Для j от i + 1 до n НЕТ ДА j i Работа №2(2) 1. Постановка задачи: Вариант 9: Определить количество слов, входящих в обе заданные строки и составить из них предложение. 2. Тестовые примеры: 1) Первая строка: we are the champions Вторая строка: because we are the greatest Количество слов, входящих в обе заданные строки 9, а предложение будет таким: we are the champions because we are the greatest 2) Первая строка: Summer is good season Вторая строка: because nights are shot and days are long Количество слов, входящих в обе заданные строки 12, а предложение будет таким: Summer is good season because nights are short and days are long 3) Первая строка: Наша Таня громко плачет Вторая строка: уронила в речку мячик Количество слов, входящих в обе заданные строки 8, а предложение будет таким: Наша Таня громко плачет уронила в речку мячик 4) Первая строка: Вторая строка: Количество слов, входящих в обе заданные строки 0, а предложения не будет. 3. Схема алгоритма: (см. Приложение №2) 4. Распечатка текста программы: Program stroka; Uses crt; Const Raz=[',','.','?',';',':','!','-','(',')',' ']; Var t,b,a,s:STRING; i,j,k,n,f:INTEGER; m:ARRAY[1..100] of STRING; Begin clrscr; Writeln('Введите первую строку:'); Readln(a); Writeln('Введите вторую строку:'); Readln(s); t:=Concat(a,' ',s); i:=1; b:=''; j:=1; For i:=1 to length(t) do If t[i] in Raz then t[i]:=' '; i:=1; While i<=length(t) do begin If (t[i] in Raz) and (t[i+1] in Raz) then Delete(t,i,1) else i:=i+1; end; If t[1]=' ' then Delete(t,1,1); i:=1; n:=0; While i<=length(t) do begin While (t[i]<>' ') and (i<=length(t)) do begin b:=b+t[i]; Inc(i); end; m[j]:=b; Inc(j); b:=''; Inc(i); Inc(n); end; Writeln('Количество слов в двух строках: ',n); Writeln('Предложение: ',t); End. 5. Результаты тестирования: 1) Введите первую строку: we are the champions Введите вторую строку: because we are the best Количество слов в двух строках: 9 Предложение: we are the champions because we are the best 2) Введите первую строку: Summer is good season Введите вторую строку: because nights are short and days are long Количество слов в двух строках: 12 Предложение: Summer is good season because nights are short and days are long 3) Введите первую строку: Наша Таня громко плачет Введите вторую строку: уронила в речку мячик Количество слов в двух строках: 8 Предложение: Наша Таня громко плачет уронила в речку мячик 4) Введите первую строку: Введите вторую строку: Количество слов в двух строках: 0 Предложение: Приложение № 2: Ввод первой строки Ввод второй строки Для i от 1 до длины строки НЕТ ДА i НЕТ ДА НЕТ ДА НЕТ ДА НЕТ ----------------------- Начало Ввод S b: =’ ‘ j:=1 s[ i ]-ый содержится в “разделителях’ s[ i ]: =’ ‘ А А i : =1 Пока i <= длины строки s[ i ] содерж. В раздел. И s[ i+1 ] сод. В разделит. Удалить( s, i, 1) i := i + 1 s [ 1 ]= ‘ ‘ Удалить( s, 1, 1) i : = 1 n : = 0 Пока i <= длины строки Пока s[ i ]<>’ ‘ и i <= длины строки А В C D F A b : = b + s [ i ] Inc( i ) C F m [ j ] : = b Inc( i ) b : = ‘ ‘ Inc( j ) Inc( n ) D B k : = 0 m [ i ] = m [ j ] Inc( k ) m [ i ] : = стандартный код кодировки ASCII “Разл. Слов в строке” n-k Конец Начало Ввод a Ввод s t : = “склеенные” строки a и s i : = 1 b : = ‘ ‘ J : = 1 КОНЕЦ “Предложение” t “Кол-во слов в двух строках” n Inc( n ) Inc( j ) b : = ‘ ‘ Inc( i ) m [ j ] : = b Inc( i ) b : = b + t [ i ] Пока t[ i ]<>’ ‘ и i <= длины строки Пока i <= длины строки i : =1 n : = 0 B Inc( i ) C Удалить( t, i, 1 ) A F F C B A t[ i ] содерж. В раздел. И t[ i+1 ] сод. В разделит. Пока i <= длины строки t[ i ]-ый содержится в “разделителях’ t[ i ]: =’ ‘ i : = 1