| Автор | Pascal |
для Koragg:
ввод/вывод из файла? |
| не верно у тебя использован массив но он не описан |
| вместо Writeln(st); надо readln(st) |
| я бы сейчас написал но нет паскалья чтоб отлаживать так как это было на 1 курсе без ошибок не напишу |
для politzek:
какой массив ? |
| Главный вопрос: на какой версии паскаля у тебя приведённый текст не работает? |
Вот полностью рабочая прога:
uses crt;
var
st:string;
i:byte;
begin
clrscr; readln(st);
For i:=1 to length(st) do
If st[i]=' ' then delete(st,i,1);
write(st);
readkey;
end. |
для Самуил:
проверял хоть ? :) |
для saturn573:
Да. Если я написал, что полностью рабочая прога, то значит это не просто так. |
для Самуил:
uses crt;
var
st:string;
i:byte;
begin
clrscr; readln(st);
For i:=1 to length(st) do
If st[i]=' ' then delete(st,i,1);
write(st);
readkey;
end.
Данная прога работает неправильно в случае двух пробелов подряд, потому что после удаления следующий символ сдвигается на позициию удалённого и не проверяется. |
для Самуил:
занчит плохо проверял, если ты в цикле обрезаешь строку то ближе к концу начнешь получать ошибки типа Index Out Of Range (индекс вне допустимого диапазона), т.к. будешь ссылаться на символ строки, с таким индексом, которого у ней уже нет :) |
А если сделать так?
uses crt;
var
st:string;
i,n:byte;
begin
clrscr; readln(st);
n = length(st);
For i:=1 to n do
If st[i]=' ' then
begin
delete(st,i,1);
i = i-1;
n = n-1;
end;
write(st);
readkey;
end. |
я уже подзабыл обычнаый пас, но в обжекте есть элементарная процедурка trim, прога из одной строчки будет.
для maxmusk:
за такое студентам отрубаю руки. изменять параметр цикла в цикле - чудовищное преступление против мозга. Это вообще работать не будет. у тебя в n дина строки, которая постоянна, ты сократил строку на 1 символ и полчаем что символа st[n] не существует. цикл должен иметь вид for i:=1 to length(st). вобщем учи матчасть. |
| прогу писать не буду, но подскажу что нужно ревлизвывать не через for f через repeat. |
| хотя за вознаграждение могу и замутить) а, ТС? |
program Del_space;
uses Crt;
var
st,st1 :string;
n,i :byte;
begin
ClrScr;
Write('Vvedi stroku:>');Readln(st);
Writeln;
Writeln('isHodnaja stroka:');
Writeln(st);
n:=length(st);
st1:='';
for i:=1 to n do
if st[i]<>' ' then st1:=st1+st[i];
Writeln('Stroka bez probelov:');
Writeln(st1);
ReadKey;
end.
вот рабочая програма(я ее писал раньше в теме но допустил ошибку и она не работала) спс всем за ваши идеи. |
| тема закрыта by Koragg (2010-02-13 11:58:14) |
|---|