|
Вопрос # 4 279/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Помогите пожайлуста , написать программу, или хотя бы часть :
Создать процедуру TrimRightС(s,c), Удаляющую в строке S Конечные
символы,совпадающие с символом c.Строка S Является входным и выходным параметром.Дан символ c и пять строк,используя процедуру
TrimRightC, преобразовать данные строки
Приложение: Переключить в обычный режим- program Lab_22;
-
- {$APPTYPE CONSOLE}
-
- uses
- SysUtils,
- windows;
-
- var
- c:Char;
- s:string;
- i:integer;
-
-
- Procedure TrimRight(var s:string;c:char);
- begin
- for i:=0 to length(s) do
-
- c:=s[length(s)];
- repeat c:=c+'[Length(s)]-i' until c<>s[length(S)];
- Delete(c,Length(s)) ;
-
- end;
-
-
- begin
-
- { TODO -oUser -cConsole Main : Insert code here }
- end.
 |
Вопрос задал: Джон (статус: Посетитель)
Вопрос отправлен: 4 июня 2010, 19:46
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, Джон! Пример в приложении.
"чтобы ответ не был слишком коротким написана эта фраза"
Приложение: Переключить в обычный режим- procedure TrimRightC(var s:string; c:char);
- var f:boolean;
- begin
- f:=true;
- while (s<>'')and(f)
- do begin
- if s[length(s)]=c
- then begin
- if (length(s)=1)
- then s:=''
- else s:=copy(s,1,length(s)-1);
- end
- else f:=false;
- end;
- end;
-
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 4 июня 2010, 20:33
Оценка за ответ: 1
Комментарий к оценке: Спасибо конечно, но пограмма не то делает. Она просто Соединяет все строки. А не удаляет символ 'с'Конечные символы.
Если сможешь, исправь пожайлуста.
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
var
s,S1,S2,S3,S4:string;
c:Char;
procedure TrimRightC(var s:string; c:char);
var f:boolean;
begin
f:=true;
while (s<>'')and(f)
do begin
if s[length(s)]=c
then begin
if (length(s)=1)
then s:=''
else s:=copy(s,1,length(s)-1);
end
else f:=false;
end;
end;
begin
SetconsoleTitle('лабораторная работа 21');
Writeln;
writeLn('Автор1');
WriteLn('Вариант №3');
WriteLn('Программа выводит строку содержащую символы строки S,между которыми ставит по одному пробелу');
Writeln;
write('Введите строку S');Readln(s);
writeln;
write('Введите строку S1');Readln(S1);
WriteLn;
write('Введите строку S2');Readln(S2);
writeLn;
write('Введите строку S3');Readln(S3);
WriteLn;
write('Введите строку S4');Readln(S4);
writeLn;
write('введите символ с');Readln(c);
writeLn;
begin
writeln(' ',s,S1,S2,S3,S4);
end;
readln;
{ TODO -oUser -cConsole Main : Insert code here }
end.
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 7 июня 2010, 22:11; участников в обсуждении: 4.
|
bugmenot (статус: 3-ий класс), 4 июня 2010, 20:48 [#1]:
типовые задания - такие типовые http://tinyurl.com/3342nyk
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Ерёмин А.А. (статус: *Администратор), 5 июня 2010, 21:00 [#2]:
После оценки «1» вам вряд ли кто-то что-то станет исправлять, ничего личного.
А вообще, по идее так:
while s[Length(s)] = c do Delete(s,Length(s),1);
|
|
Джон (статус: Посетитель), 5 июня 2010, 21:16 [#3]:
Я поставил как ты сказал, теперь просто соединяет все строки и все
|
|
Мережников Андрей (статус: Абитуриент), 6 июня 2010, 19:57 [#4]:
ошибка не в той процедуре, что я написал, а в том как ее используете! Где, собственно говоря, вызов процедуры???
Вы сами делаете так, что программа работает неправильно. Сначала запрашиваете несколько строк, символ c и просто тупо выводите в одну строку на экран:writeln(' ',s,S1,S2,S3,S4);
надо делать так:
s:=TrimRightC(s,c);
s1:=TrimRightC(s1,c);
s2:=TrimRight(s2,c);
s3:=TrimRight(s3,c);
s4:=TrimRight(s4,c);
writeln(s,' ',s1,' ',s2,' ',s3,' ',s4);
Прежде, чем ставить оценки, думать надо
|
|
Джон (статус: Посетитель), 7 июня 2010, 22:11 [#5]:
ДА я понял потом что вызвать надо, просто не знал как!!
Да программа действительно работает!!!!Все правильно делает !!
Извини за баллы!!!
Спасибо теБе большое, выручил!!!!!!!!!!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|