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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 19:23   #1
Dominik74
 
Регистрация: 25.12.2011
Сообщений: 5
Сообщение Проблемы с подпрограммами: Подсчет букв в строке

Задача такова, нужно ввести строку, затем подсчитать сколько в ней букв "а" и букв "б", затем вывести, каких букв больше. Без подпрограмм всё работает, с ними - нет. А именно, выдает, что таких букв нет в строке. Помогите разобраться в чем проблема?

Главная программа:
Код:
uses module;
var s:string;
    s1,s2:char;
    i,k,w,t:integer;
begin
  i:=0;k:=0;w:=0;t:=0;
  write ('Введите строку: ');readln(s);
  write ('Введите 1-ый символ: ');readln(s1);
  write ('Введите 2-ой символ: ');readln(s2);
  lengthString(s,s1,s2,k,w);
  t:=k+w;
    if t<>0 then
      Writeln('Суммарное кол-во букв ', s1, ' и ', s2, ': ',t)
    else
      writeln('В данной строке нет этих букв');
    if k>w then
      writeln('букв ',s1,' больше')
    else if w>k then
      writeln('букв ',s2,' больше')
    else
      writeln('количество букв ',s1,' и ',s2,', равно');
end.
Модуль:
Код:
unit module;
Interface

procedure lengthString(var s:string;s1,s2:char;k,w:integer);
implementation

procedure lengthString;
var  i:integer;
begin
    for i:=1 to length(s) do 
    begin
      if s[i]=s1 then k:=k+1;
      if s[i]=s2 then w:=w+1;
    end;
end;
end.
Dominik74 вне форума Ответить с цитированием
Старый 21.05.2012, 19:45   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Хм, а сами символы обязательно вводить ?) И да, логично было бы ещё подумать что символы могут быть не только с маленькой буквы.

Попробуйте так:

Код:
unit module;
Interface

procedure lengthString(var s:string);
implementation

procedure lengthString;
var  i :integer;
       k, w: byte;
begin
k:=0; w:=0;
    for i:=1 to length(s) do  begin
      if (s[i]='a') and (s[i]='A') then k:=k+1;
      if (s[i]='b') and (s[i]='B')  then w:=w+1;
    end;
end.
В основной программе уберите тогда вот это ( почему пишу так, да потому что меньше будет писанины в основной программе ).

Код:
i:=0;k:=0;w:=0;
write ('Введите 1-ый символ: ');readln(s1);
write ('Введите 2-ой символ: ');readln(s2);
Люблю на ты.Я человек простой

Последний раз редактировалось Leshii; 21.05.2012 в 19:50.
Leshii вне форума Ответить с цитированием
Старый 21.05.2012, 22:01   #3
Arhangel7
Пользователь
 
Регистрация: 27.02.2010
Сообщений: 90
По умолчанию

Цитата:
if (s[i]='a') and (s[i]='A') then k:=k+1;
if (s[i]='b') and (s[i]='B') then w:=w+1;
тут ошибка, не and надо а or
как-то так
Arhangel7 вне форума Ответить с цитированием
Старый 21.05.2012, 23:19   #4
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

ошибка в описании параметров процедуры, нужно:
Код:
procedure lengthString(s:string;s1,s2:char;var k,w:integer);
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить к строке в конце столько звездочек, сколько букв в строке (Паскаль) BBorr1 Помощь студентам 3 09.02.2012 11:40
Подсчет букв в строке с использованием функции Twisterr Общие вопросы C/C++ 1 15.10.2011 13:19
подсчет букв С в последнем слове Obey177 Помощь студентам 7 10.09.2010 16:06
Подсчет букв в словах (Си) N.o.n.a.m.e Помощь студентам 4 12.08.2010 17:01
Pascal. на подсчет букв. Quiz Помощь студентам 10 15.01.2009 23:02