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

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

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

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





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

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


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

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

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

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


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

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

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


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


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

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



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



--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





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

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


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

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

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

2 compiler:

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


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

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

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


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

Сообщение отредактировано: Sozialist -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

Сообщение отредактировано: Точьичка -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


А в чем проблема? В начале цикла присвой максу ноль, в цикле сделай сравнение с q. Если он больше макс, то заменяй
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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

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

 





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