![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Олег. |
![]()
Сообщение
#1
|
Гость ![]() |
Ребят,помогите кому не сложно, в следующей задаче. Щас делаю потихонбку- как что напишу буду выкладывать. Прошу помощи т.к. со строками никогда не работал.
Задание: Дан массив символьных строк.Длина каждой строки не более 80ти символов. Строка состоит из слов, разделенных пробелами. В начале каждой строки пробел отсутствует. Ввод строк осуществляется с клавиатуры до тех пор пока не будет введена пустая строка. Требуется: 1.Выделить из каждой строки и напечатать слова: не содержащие латинских букв 2.Среди слов найти: самое длинное 3.Преобразовать строку которой принадлежит найденное слово сред. образом: повторить все цифры. Заранее благодарен всем за любую помощь. |
![]() ![]() |
Гость |
![]()
Сообщение
#2
|
Гость ![]() |
РЕБЯТА НАШЕЛ,НО ЧУТЬ ПОПРАВИТЬ НАДО:
Там немного совсем исправить+комменты есть. Задание: Дан массив символьных строк. Длина каждой строки не более 80 символов. Строка состоит из слов, разделенных пробелами. В начале каждой строки пробел отсутствует. Ввод строк осуществляется с клавиатуры до тех пор, пока не будет введена пустая строка. Требуется: 1. Выделить из каждой строки и напечатать слова: 1. Не содержащие русских букв. 2. Среди выделенных слов найти: 4. Содержащее максимальную цепочку из нулей. 3. Преобразовать строку, которой принадлежит наибольшее слово следующим образом: 3. Удалить все слова, содержащие цифры. (Каждое задание выполняется в виде отдельной процедуры) Внешняя спецификация. Входные: массив строк А. Выходные: слова, в соответствии с заданием. Тестовые примеры. Строки: exam пример пр exa examprimer 0g0g g090008 876d прих Результат: Несодрусбукв: exam Несодрусбукв: exa Несодрусбукв: examprimer Несодрусбукв: 0g0g Несодрусбукв: g090008 Несодрусбукв: 876d Максцепнулей: g090008 Словабезцифр: examprimer прих Листинг программы program l3; uses crt;{подключение библиотеки} var{инициализация переменных} str: array [0..25] of string[80]; w: array [0..25, 0..25] of string[80]; cntw: array [0..25] of integer; wnr: array [0..10, 0..10] of string[20]; cntwnr: array [0..25] of integer; m, i, j: integer; s: string[80]; procedure FindWord(str: string; q: integer); {процедура, ищет в строке слова, записывает в массив} var n, i, j, k: integer; t: byte; begin k:=0; str:=str+' '; n:=pos(' ',str); while length(str)<>0 do begin if (str[1]<>' ') then begin w[q,k]:=copy(A,1,n-1);{копирование куска строки в массив} delete(A,1,n-1);{удаление этого куска строки} n:=pos(' ',A);{определение местоположение пробела} k:=k+1; end else begin delete(A,1,1);{удаление пробела, если он стоит первым} n:=pos(' ',str); end; end; cntw[q]:=k; {счетчик слов} end; procedure NoRus; { процедура, ищет слова, не содержащие русских букв } var i, j, k, z: integer; flag: boolean; begin cntwnr[i]:=0; {счетчик слов, не сод рус букв} for i:=0 to m-1 do begin z:=0; for j:=0 to cntw[i]-1 do{цикл по словам массива w} begin flag:=false; for k:=1 to length(w[i,j])-1 do if (w[i,j,k] in ['а'..'я']) or (w[i,j,k] in ['А'..'Я']) then flag:=true; if not flag then begin wnr[i,z] := w[i,j];{массив слов, не сод рус букв} cntwnr[i] := cntwnr[i]+1; writeln('несодрусбукв: ',wnr[i,z]); {печать массива wnr} z:=z+1; end; end; end; end; function WhatZ(s: string): integer; {функция, считает в слове цепочку нулей} var i, cnt, max: integer; begin cnt := 0; {счетчик нулей} max := 0; for i:=1 to length(s)-1 do if (s[i] = '0') then cnt:=cnt+1 else begin if cnt > max then max := cnt; cnt := 0; end; if cnt > max then {end of string} max := cnt; WhatZ := max; end; function FindStrMaxWord: integer; {поиск самого длинного слова в строке} var imax, x, i, j, max: integer; begin max:=0; for i:=0 to m-1 do for j:=0 to cntw[i]-1 do begin x := length(w[i,j]); if x > max then begin max := x; imax := i; end end; FindStrMaxWord := imax; end; procedure Zeros; {среди слов, не сод рус букв ищет слово, сод макс цепочку из нулей} var i, j, k, imax, jmax, max, x: integer; begin max := 0; imax := 0; jmax := 0; for i:=0 to m-1 do for j:=0 to cntw[i]-1 do begin x := WhatZ(wnr[i,j]); if x > max then begin max := x; imax := i; jmax := j; end; end; if max <> 0 then {'0' exist} writeln('максцепнулей: ',wnr[imax,jmax]); end; procedure DelDig; {процедура, удаляет числа в словах строки, сод самое длинное слово} var k, i, j: integer; digexist: boolean; begin digexist:=false; write('словабезцифр:'); i:=FindStrMaxWord; for j:=0 to cntw[i] do begin digexist:=false; for k:=1 to length(w[i,j]) do if w[i,j,k] in ['0'..'9'] then digexist:=true; if not digexist then write(' ',w[i,j]); end; end; { ----------- main -------------} begin clrscr; writeln('Дан массив символьных строк. Длина каждой строки не более 80 символов.'); writeln('Строка состоит из слов, разделенных пробелами. В начале каждой строки'); writeln('пробел отсутствует. Ввод строк осуществляется с клавиатуры до тех пор,'); writeln('пока не будет введена пустая строка. Требуется:'); writeln('1.Выделить из каждой строки и напечатать слова не содержащие русских букв.'); writeln('2.Среди выделенных слов найти содержащее максимальную цепочку из нулей.'); writeln('3.Преобразовать строку, которой принадлежит наибольшее слово следующим образом:'); writeln(' Удалить все слова, содержащие цифры.'); writeln('(Каждое задание выполняется в виде отдельной процедуры)'); m:=0; repeat{ввод строк, пока не введена нулевая строка} writeln('Введите строку'); readln(s); if length(s)<>0 then begin str[m] := s; {запись строк в массив строк} m := m+1; end; until length(s)=0; for i:=0 to m-1 do FindWord(str[i],i);{выполнение вышеописанных процедур} NoRus;{------1-------} Zeros;{--------2------} DelDig;{-------3------} readln; {ждем нажатия} end. |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 3:37 |