Цитата:
Сообщение от Ильгиза
Здравствуйте! помогите пожалуйста найти ошибки. необходимо подсчитать количество символов '*', ';' ,':' в строке.
|
Пожалуйста.
Прежде всего, Вы не разобрались со структурой параметров Паскаля. Если параметр введен внутри подпрограммы (процедуры или функции), то о существовании внешнего параметра с тем же именем означенная подпрограмма тут же забывает. Поэтому, например, когда Вы внутри функции vv определяете параметр var st:string;, то для функции это просто новая пустая строка, и о том, что в теле программы вы определили строковую переменную с тем же именем, функция знать ничего не знает! Поэтому если Вы хотите, чтобы подпрограмма работала с глобальными параметрами - пожалуйста, вот только переопределять их ни в коем случае не следует. В этом - главное отличие подпрограмм Паскаля и, скажем, Фортрана - в последнем как раз следует описывать глобальные параметры в подпрограммах.
Теперь о самом решении задачи. К чему такие сложности - всё гораздо проще:
Код:
VAR
S:String;
n1,n2,n3,i:Byte;
BEGIN
n1:=0;
n2:=0;
n3:=0;
Writeln('Enter the string:');
ReadLn(S);
For i:=1 to Length(S) do
begin
If S[i]='*' then Inc(n1);
If S[i]=';' then Inc(n2);
If S[i]=':' then Inc(n3);
end;
Writeln('"*" - ',n1);
Writeln('";" - ',n2);
Writeln('":" - ',n3);
Readln
END.