Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2010, 17:33   #1
neBu4kaMaXiM
Пользователь
 
Аватар для neBu4kaMaXiM
 
Регистрация: 18.02.2009
Сообщений: 20
По умолчанию почему не компилирует?

С помощью этой программы я из заданной строки символов, разделённый пробелами (одним или несколькими) вывожу массив из максимум 20 чисел.


Program massiv;
var
s,sout: string;
n,len,m: integer;
A: array[1..20] of string;
BEGIN
Writeln('Задайте последовательность символов разделённые пробелами',s);
Readln(s);
sout:= ' ';
for m:= 1 to 20 do
A[m]:= ' ';
len:= Length(s);
for n:= 1 to len do
for m:= 1 to 20 do
while s[n]<>' ' do A[m]:= A[m]+s[n];
m:= m+1;
for m:= 1 to 20 do
Writeln('палучился массив ',A[m]);
Readln;
END.
neBu4kaMaXiM вне форума Ответить с цитированием
Старый 27.04.2010, 19:15   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) TurboPascal всё компилируется. Чем пытаетесь компилировать?!
2) "получился"
3) алгоритм разбора строки абсолютно запутан и неверен!
Например, программа всегда виснет на бесконечном цикле:
while s[n]<>' ' do A[m]:= A[m]+s[n];
(т.к. n внутри цикла не меняется!!!! Да и пробела в строке может не быть!!!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.04.2010, 19:41   #3
neBu4kaMaXiM
Пользователь
 
Аватар для neBu4kaMaXiM
 
Регистрация: 18.02.2009
Сообщений: 20
По умолчанию

pascal ABC...
а алгоритм вроде работал но чуть не верно))и цикл не бесконечный...если длина строки меньше шестидесяти,а слов в строке меньше 20 ,то вариантов конечное число
neBu4kaMaXiM вне форума Ответить с цитированием
Старый 27.04.2010, 21:00   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Именно, что бесконечный...
p51x вне форума Ответить с цитированием
Старый 28.04.2010, 19:49   #5
neBu4kaMaXiM
Пользователь
 
Аватар для neBu4kaMaXiM
 
Регистрация: 18.02.2009
Сообщений: 20
По умолчанию

а вариант второй строки ,в которую записано всё с одним пробелом,а затем отдельная запись по словам в массив подойдёт ?
neBu4kaMaXiM вне форума Ответить с цитированием
Старый 28.04.2010, 20:05   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а вариант второй строки ,в которую записано всё с одним пробелом,а затем отдельная запись по словам в массив подойдёт ?
хм... а попробуйте ещё раз объяснить, что Вы хотели сказать этим сообщением!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.04.2010, 20:07   #7
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

он просто жжет - не обращайте внимания
kakawkin вне форума Ответить с цитированием
Старый 29.04.2010, 19:07   #8
neBu4kaMaXiM
Пользователь
 
Аватар для neBu4kaMaXiM
 
Регистрация: 18.02.2009
Сообщений: 20
По умолчанию

просто нельзя массив заставить наращивать значение поэтому пусть лучше принимает значения строки)
neBu4kaMaXiM вне форума Ответить с цитированием
Старый 30.04.2010, 16:00   #9
neBu4kaMaXiM
Пользователь
 
Аватар для neBu4kaMaXiM
 
Регистрация: 18.02.2009
Сообщений: 20
По умолчанию вроде так,но что то ругается...по логике всё работает,ругается на s в строке ввода ,на строке sout[m]:=

Program massiv;
var
s,sout:string;
n,len,m:integer;
A:array[1..20] of string;
BEGIN
Writeln('Задайте последовательность символов разделённые пробелами',s);
Readln(s);
for m:=1 to 20 do
sout[m]:=' ';
len:=Length(s);
for n:=1 to len do
for m:=1 to 20 do
while s[n]<>' ' do
sout[m]:= sout[m]+s[n];
for m:=1 to 20 do
A[m]:=sout[m];
for m:= 1 to 20 do
Writeln('палучился массив ',A[m]);
Readln;
END.


ругается на строке sout[m]:=sout[m]+s[n]
neBu4kaMaXiM вне форума Ответить с цитированием
Старый 30.04.2010, 23:14   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
sout[m]:=sout[m]+s[n]
sout[m] - это ОДИН символ строки (тип Char, если это Вам о чём то говорит.)

sout[m]+s[n] - операция конкатенации (объединения) двух символов.

а теперь расскажите, как в ОДИН символ можно поместить ДВА символа?!

p.s. сам алгоритм не смотрел, ибо не понимаю Вас...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
vs 2008 не компилирует Sr.wills Общие вопросы C/C++ 1 21.04.2010 10:37
Dev C++ компилирует, Visual C++ ругается Cookson Visual C++ 7 02.10.2009 10:39
Компилятор не компилирует!((( Тимс Общие вопросы по Java, Java SE, Kotlin 10 11.06.2009 18:35
Devcpp-4.9.9.2 не компилирует. MacTiger Общие вопросы C/C++ 6 20.04.2009 22:15
Каким образом Delphi компилирует EXE? Jupiter Общие вопросы Delphi 4 26.03.2008 16:52