Другие языки программирования и технологии
Задача Pascal , строки , помогите пожалуйста !!!
В общем задача , решить не могу , болел и пропустил три лекции одна из них по строкам ...помогите если не сложно , потому что мне не помог ни великий гугл ни учебник на тыс. страниц ((( "Определить найболее часто встречающуюся букву в конце слов и эти слова вывемти на печать ..." Помогите , а то у нас лектор дядя очень злой ,(((
Доброго времени суток.
Все достаточно просто. Объявляем массив
var A : array['a'..'z'] of Word;
Очищаем его
for ch:='a' to 'z' do a[ch] := 0;
Вводим строку с клавиатуры в переменную S.
ReadLn(S);
Чтобы не потерять последнее слово добавляем к ней пробел. S := S + ' эж
И начинаем выделять слова и подсчитывать их последние буквы.
while Pos(' ', S) > 0 do begin
S1 := Copy(S, 1, Pos(' ', S)-1); {выделяем первое слово}
Delete(S, 1, Pos(' ', S)); {и удаляем его из строки}
a[S1[Length(S1)]] := a[S1[Length(S1)]] + 1;
end;
Остается только найти элемент массива с наибольшим значением. Его индекс и будет искомой буквой.
Чтобы вывести на печать нужные слова, снова запускаем такой же цикл выделения слов и сравниваем последнюю букву слова с найденным символом. При совпадении - выводим на экран.
Можно не выделять слова, а просто просматривать строку и найдя пробел брать предшествующий ему символ.
for i:=1 to Length(S) do
if S[ i ] = ' ' then a[S[i-1]] := a[a[S[i-1]]] + 1;
Поскольку индексами массива являются латинские буквы, то, ессно, работать все это будет только с латиницей. Для кириллицы нужно немного доработать.
Удачи!
Все достаточно просто. Объявляем массив
var A : array['a'..'z'] of Word;
Очищаем его
for ch:='a' to 'z' do a[ch] := 0;
Вводим строку с клавиатуры в переменную S.
ReadLn(S);
Чтобы не потерять последнее слово добавляем к ней пробел. S := S + ' эж
И начинаем выделять слова и подсчитывать их последние буквы.
while Pos(' ', S) > 0 do begin
S1 := Copy(S, 1, Pos(' ', S)-1); {выделяем первое слово}
Delete(S, 1, Pos(' ', S)); {и удаляем его из строки}
a[S1[Length(S1)]] := a[S1[Length(S1)]] + 1;
end;
Остается только найти элемент массива с наибольшим значением. Его индекс и будет искомой буквой.
Чтобы вывести на печать нужные слова, снова запускаем такой же цикл выделения слов и сравниваем последнюю букву слова с найденным символом. При совпадении - выводим на экран.
Можно не выделять слова, а просто просматривать строку и найдя пробел брать предшествующий ему символ.
for i:=1 to Length(S) do
if S[ i ] = ' ' then a[S[i-1]] := a[a[S[i-1]]] + 1;
Поскольку индексами массива являются латинские буквы, то, ессно, работать все это будет только с латиницей. Для кириллицы нужно немного доработать.
Удачи!
в каких словах, что буим сканировать? как вывести на печать, по отдельности или все сразу в кашу
Нутип того )
Похожие вопросы
- Pascal ABC помогите пожалуйста.
- Есть ли у матриц A и B одинаковые строки? помогите пожалуйста! очень надо! в VBA
- Как решить эти 3 задачи на С++? Помогите, пожалуйста.
- Задача в паскале. помогите пожалуйста... очень срочно нужно!
- Помогите с задачей pascal пожалуйста. одна осталась до зачёта!
- Pascal. Помогите пожалуйста решить задачу в паскале !
- Пожалуйста помогите решить задачу Pascal
- народ помогите пожалуйста) надо сделать прогу на pascal)
- Помогите найти ошибку...Pascal (строки)
- Pascal помогите пожалуйста найти ошибку в задаче.