Vladimir_S
Ученик
- Регистрация
- 27 Авг 2008
- Сообщения
- 27,807
- Реакции
- 1,025
- Баллы
- 0
Не могу знать. Вот так программа работает у меня:А почему при любом вводе он пишет не правильный ввод?)
Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.
Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.
Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.
Не могу знать. Вот так программа работает у меня:А почему при любом вводе он пишет не правильный ввод?)
Пожалуйста. Я-то понял так, что после запятых обязаны быть пробелы, но Вы правы - в условии это не жесткое требование. Тогда так:Подскажите пожалуйста какой блок убрать чтобы
железный,лизун
он обрабатывал, это ведь удовлетворяет условию
Const
Sonants:Set of Char=['б','в','г','д','ж','з','л','м','н','р'];
Letters:Set of Char=['а'..'я']+[',']+[' '];
Var
S:String;
C:Char;
i,k,N,L:integer;
Found:Set of char;
p,b1,b2,b3,b4:boolean;
begin
p:=false;
while p=false do
begin
Writeln('Введите строку:');
Readln(S);
L:=Length(S);
b1:=false;
if L<2 then b1:=true;
if not b1 then
begin
b2:=false;
for i:=1 to L do
if not (S[i] in Letters) then b2:=true;
end;
if not b1 and not b2 then
begin
b3:=true;
for i:=1 to L-1 do
if S[i]=',' then b3:=false;
end;
if not b1 and not b2 and not b3 then
begin
b4:=false;
for i:=2 to L do
if (S[i]=' ') and not (S[i-1]=',') then b4:=true;
end;
if b1 or b2 or b3 or b4 then
Writeln('Некорректный ввод!')
else p:=true;
end;
Writeln;
Found:=[];
N:=1;
i:=1;
while (i<L-1) do
begin
If (S[i] in Sonants) and not (S[i] in Found) then
begin
C:=S[i];
k:=i;
while (S[k]<>',') and (k<L) do k:=k+1;
if S[k]=',' then
while (S[k]<>C) and (k<L) do k:=k+1;
if S[k]=C then
begin
Found:=Found+[C];
N:=N+1;
end;
end;
i:=i+1;
end;
If N=0 then
Writeln('Таких букв нет!')
else
begin
Writeln('Результат:');
for C:='б' to 'р' do
if C in Found then write(C+' ');
end;
Readln
End.
Не могу знать:Убрал блок b4, убрал все что связано с b4 но все равно ошибка ввода
Что, несомненно, заслуживает всяческого уважения, в отличие от обычного для лоботрясов "вы тут напишите, я скатаю и сдам".P.s Вы не думайте что я тупой потому что много спрашивал, я всего лишь хочу понимать)))
Const
Sonants:Set of Char=['б','в','г','д','ж','з','л','м','н','р'];
Letters:Set of Char=['а'..'я']+[',']+[' '];
Var
S:String;
C:Char;
i,k,N,L:integer;
Found:Set of char;
p,b1,b2,b3,b4:boolean;
begin
p:=false;
while p=false do
begin
Writeln('Введите строку:');
Readln(S);
L:=Length(S);
b1:=false;
if L<2 then b1:=true;
if not b1 then
begin
b2:=false;
for i:=1 to L do
if not (S[i] in Letters) then b2:=true;
end;
if not b1 and not b2 then
begin
b3:=true;
for i:=1 to L-1 do
if S[i]=',' then b3:=false;
end;
{if not b1 and not b2 and not b3 then
begin
b4:=false;
for i:=2 to L do
if (S[i]=' ') and not (S[i-1]=',') then b4:=true;
end;}
if b1 or b2 or b3 {or b4} then
Writeln('Некорректный ввод!')
else p:=true;
end;
Writeln;
Found:=[];
N:=1;
i:=1;
while (i<L-1) do
begin
If (S[i] in Sonants) and not (S[i] in Found) then
begin
C:=S[i];
k:=i;
while (S[k]<>',') and (k<L) do k:=k+1;
if S[k]=',' then
while (S[k]<>C) and (k<L) do k:=k+1;
if S[k]=C then
begin
Found:=Found+[C];
N:=N+1;
end;
end;
i:=i+1;
end;
If N=0 then
Writeln('Таких букв нет!')
else
begin
Writeln('Результат:');
for C:='б' to 'р' do
if C in Found then write(C+' ');
end;
Readln
End.
Const
Sonants:Set of Char=['б','в','г','д','ж','з','л','м','н','р'];
Letters:Set of Char=['а'..'я']+[',']+[' '];
Var
S:String;
C:Char;
i,k,N,L:integer;
Found:Set of char;
p,b1,b2,b3,b4:boolean;
begin
p:=false;
while p=false do
begin
Writeln('Введите строку:');
Readln(S);
L:=Length(S);
b1:=false;
if L<2 then b1:=true;
if not b1 then
begin
b2:=false;
for i:=1 to L do
if not (S[i] in Letters) then b2:=true;
end;
if not b1 and not b2 then
begin
b3:=true;
for i:=1 to L-1 do
if (S[i]=',') and not (S[i-1]=' ') then b3:=false;
end;
{if not b1 and not b2 and not b3 then
begin
b4:=false;
for i:=2 to L do
if (S[i]=' ') and not (S[i-1]=',') then b4:=true;
end;}
if b1 or b2 or b3 {or b4} then
Writeln('Некорректный ввод!')
else p:=true;
end;
Writeln;
Found:=[];
N:=1;
i:=1;
while (i<L-1) do
begin
If (S[i] in Sonants) and not (S[i] in Found) then
begin
C:=S[i];
k:=i;
while (S[k]<>',') and (k<L) do k:=k+1;
if S[k]=',' then
while (S[k]<>C) and (k<L) do k:=k+1;
if S[k]=C then
begin
Found:=Found+[C];
N:=N+1;
end;
end;
i:=i+1;
end;
If N=0 then
Writeln('Таких букв нет!')
else
begin
Writeln('Результат:');
for C:='б' to 'р' do
if C in Found then write(C+' ');
end;
Readln
End.
А Вы сами давайте - тестируйте, отлаживайте, приобретайте навыки, одним словом - вылезайте уже из пеленок. Хватит этих "я тут написал, Владимир, проверьте". Ибо настоящий программист - это не тот, кто может нарисовать листинг (дело не хитрое), а тот, кто умеет довести программу до ума. Дерзайте!Владимир, кажется вышло проверьте пожалуйста!!!