Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
6:38
1332
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2

Автор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)
1|2
К списку тем
2007-2025, онлайн игры HeroesWM