Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 15.11.2011, 16:05   #1 (permalink)
Ильгиза
Member
 
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Pascal, нужно найти ошибки

Здравствуйте! помогите пожалуйста найти ошибки.
необходимо подсчитать количество символов '*', ';' ,':' в строке.

program upr1;
function vv(b:char;var k:integer):integer;
var st:string;
a:integer;
begin
k:=0;
a:=pos(b,st);
while a<>0 do begin
k:=k+1;
delete(st,a,1);
a:=pos(b,st);
end;
vv:=k;
end;
var st:string;
b:char;
k,a,n:integer;
begin
writeln('введите строку');
readln(st);
k:=vv('*',k);
k:=vv(':',k);
k:=vv(';',k);
write(k);
end.
Ильгиза вне форума   Ответить с цитированием

Старый 15.11.2011, 16:05
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вы не один с такой проблемкой, что то типа этого уже обсуждалось

Ошибки при установке игр
Нужно написать программу в Pascal
Помогите найти ошибки. Си++
Помогите найти ошибку, Pascal abc
Задача на массивы, Pascal. Помогите найти ошибку

Старый 15.11.2011, 16:30   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ильгиза Посмотреть сообщение
Здравствуйте! помогите пожалуйста найти ошибки. необходимо подсчитать количество символов '*', ';' ,':' в строке.
Пожалуйста.
Прежде всего, Вы не разобрались со структурой параметров Паскаля. Если параметр введен внутри подпрограммы (процедуры или функции), то о существовании внешнего параметра с тем же именем означенная подпрограмма тут же забывает. Поэтому, например, когда Вы внутри функции 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.
Vladimir_S вне форума   Ответить с цитированием
Старый 15.11.2011, 16:30   #3 (permalink)
shrek=)
Студент БГПУ
 
Аватар для shrek=)
 
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
По умолчанию

Я думаю это должно быть, как минимум так:
Код:
var
a,b,c,i:byte;
s:string;
begin
a:=0;
b:=a;
c:=a;
writeln ('Enter srting');
readln (s);
for i:=1 to length(s) do begin
if s[i]='*' then inc(a);
if s[i]=';' then inc(b);
if s[i]=':' then inc(c);
end;
writeln ('* =',a);
writeln ('; =',b);
writeln (': =',c);
readln
end.
shrek=) вне форума   Ответить с цитированием
Старый 15.11.2011, 16:32   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Практически - один в один!
Vladimir_S вне форума   Ответить с цитированием
Старый 15.11.2011, 16:37   #5 (permalink)
shrek=)
Студент БГПУ
 
Аватар для shrek=)
 
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
По умолчанию

Хорошие мысли в умные головы приходят одновременно!
shrek=) вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 15.11.2011, 16:51   #6 (permalink)
Ильгиза
Member
 
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо за решения, но мне ее надо решить именно с функцией.
Ильгиза вне форума   Ответить с цитированием
Старый 15.11.2011, 16:55   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ильгиза Посмотреть сообщение
Спасибо за решения, но мне ее надо решить именно с функцией.
И что эта функция должна делать? Опишите словами.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 22:16.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.