IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на строки, работа со строками.
сообщение
Сообщение #1


Гость






Ребят,помогите кому не сложно, в следующей задаче. Щас делаю потихонбку- как что напишу буду выкладывать. Прошу помощи т.к. со строками никогда не работал.
Задание:
Дан массив символьных строк.Длина каждой строки не более 80ти символов. Строка состоит из слов, разделенных пробелами. В начале каждой строки пробел отсутствует. Ввод строк осуществляется с клавиатуры до тех пор пока не будет введена пустая строка. Требуется:
1.Выделить из каждой строки и напечатать слова: не содержащие латинских букв
2.Среди слов найти: самое длинное
3.Преобразовать строку которой принадлежит найденное слово сред. образом: повторить все цифры.
Заранее благодарен всем за любую помощь.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Разбиение на слова - Все способы + показывай что делал,поправим. + задачи похожие были.


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






РЕБЯТА НАШЕЛ,НО ЧУТЬ ПОПРАВИТЬ НАДО:
Там немного совсем исправить+комменты есть.
Задание:
Дан массив символьных строк. Длина каждой строки не более 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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Народ, ну ктонить посмотрит?
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 6:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name