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

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

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

 
 Ответить  Открыть новую тему 
> Помогите с задачей, задача на строки
Точьичка
сообщение 25.11.2007 20:43
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Женский

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


Вот текст задачи:

Дана строка символов. Определить количество слов, начиная с буквы "а", вывести на печать самое длинное слово, начинающееся с буквы "а"

помогите пожалуйста

Сообщение отредактировано: Точьичка - 25.11.2007 20:54
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 25.11.2007 21:32
Сообщение #2


Человек
*****

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

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


Цитата(Точьичка @ 25.11.2007 19:43) *
Вот текст задачи:
Дана строка символов. Определить количество слов, начиная с буквы "а", вывести на печать самое длинное слово, начинающееся с буквы "а"
помогите пожалуйста


проходишь циклом по тексту, если после пробела стоит "а", то это слово начинается на "а", считаешь количество букв в нем(от "а" до знака припенания пробела) и если это количество больше самого большого то запоминаешь это слово и количиство его букв в самое большое...

тоесть у тебя есть строка ввода, проходя по которой ты сравниваешь текущее слово с самым большим на данный момент(не забудь его инициализировать) и запоминаешь текущее туда если условие удалетворяется, а потом идеш дальше и так до конца строки...



где возникают вопросы? что не получается?



--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-Илья-
сообщение 25.11.2007 23:19
Сообщение #3


Гость






Цитата(Точьичка @ 25.11.2007 20:43) *

Вот текст задачи:

Дана строка символов. Определить количество слов, начиная с буквы "а", вывести на печать самое длинное слово, начинающееся с буквы "а"

помогите пожалуйста

uses SysUtils;
var
s, substr: array [0..200] of char;
len, maxLen, N: integer;
p, p0: PChar;
begin
writeln('Enter string');
readln(s);
p:=s;
maxLen:=0; N:=0;
while p <> StrEnd(s) do begin
while p^ = ' ' do inc(p);
if p^ <> 'a' then begin
p := StrScan(p, ' ');
if p = nil then break;
end else begin
len:=0;
inc(N);
p0:=p;
repeat
inc(len); inc(p);
until (p = StrEnd(s)) or (p^ = ' ');
if len > maxLen then begin
maxLen:=len;
StrMove(substr, p0, p-p0);
end;
end;
end;
writeln('max len = ', maxLen, '; N = ', N);
writeln('max string: ', substr);
end.
 К началу страницы 
+ Ответить 
Точьичка
сообщение 26.11.2007 3:26
Сообщение #4





Группа: Пользователи
Сообщений: 4
Пол: Женский

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


вот после слова BEGIN вообще ничего не получалось. Огроооомное спасибо!

Добавлено через 6 мин.
2 Илья:

Файл SysUtils не найден, к сожалению

2 compiler:

Будем пробовать! wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Sozialist
сообщение 26.11.2007 3:40
Сообщение #5


Клавиатурный тиран
**

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

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


Илья, Дельфи, конечно, круче) Никто не спорит.
Точьичка
Выложу завтра адаптированную версию.

Сообщение отредактировано: Sozialist - 26.11.2007 3:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Точьичка
сообщение 26.11.2007 4:08
Сообщение #6





Группа: Пользователи
Сообщений: 4
Пол: Женский

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


пытылысь так:


Program Lab;
uses crt;
var s:array[1..200] of char;
i,q:integer;

BEGIN
clrscr;
readln(s);
q:=0;
For i:=1 to s do

IF s[i]=#32 AND s[i+1]=#97 THEN
q:=q+1;

writeln(q);
readkey;
end.



он останавливает курсор на строке readln(s) и пишет что Cannot Read or Write variables of this type

тогда попробовала так:

Program Lab;
uses crt;
var s:string;
i,q:integer;

BEGIN
clrscr;
readln(s);
q:=0;
For i:=1 to length(s) do

IF s[i]=#32 AND s[i+1]=#97 THEN
q:=q+1;

writeln(q);
readkey;
end.



Теперь он останавливает курсор на строке s[i+1]=#97 и пишет ошибку 41:Operand types do not match operator

Сообщение отредактировано: Точьичка - 26.11.2007 4:12
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Точьичка
сообщение 26.11.2007 4:50
Сообщение #7





Группа: Пользователи
Сообщений: 4
Пол: Женский

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


получилось составить зодачу, которая считает слова, начинающиеся на а
clrscr;
readln(s);
w:=' ';
Insert(w,s,1);
q:=0;
For i:=1 to length(s) do
IF s[i]=#32 THEN
For i:=1 to length(s) do
IF s[i+1]=#97 then
q:=q+1;
writeln(q);
readkey;
end.



а вот подсчет количества "а" в слове не идет никак
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
wilin
сообщение 26.11.2007 9:51
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Женский

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


А в чем проблема? В начале цикла присвой максу ноль, в цикле сделай сравнение с q. Если он больше макс, то заменяй
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 26.11.2007 18:50
Сообщение #9


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Точьичка все просто:
uses crt;

const
letters = [' ', '.', ',']; { символы, которые могут разделять слова }

var
s, s_max: String;
i, start, count: Byte;

begin
clrscr;

write('s = '); readln(s);

count := 0;

s_max := '';

i := 1;

while i <= length(s) do begin

while (i <= length(s)) and (s[i] in letters) do
inc(i);

if i <= length(s) then begin

start := i;

if s[i] = 'a' then
inc(count);

while (i <= length(s)) and not (s[i] in letters) do
inc(i);


if (s[start] = 'a') and (i - start > Length(s_max)) then
s_max := Copy(s, start, i - start);

end;
end;

writeln('count = ', count);
writeln('s_max = "', s_max, '"');

readln;
end.



в следующий раз используй поиск: Разбиение на слова. Все способы.

Сообщение отредактировано: klem4 - 26.11.2007 18:58


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 3:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"