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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2011, 23:12   #1
Voldemort93
Пользователь
 
Аватар для Voldemort93
 
Регистрация: 27.08.2009
Сообщений: 40
По умолчанию Рекурсивная программа на Паскале "количество чисел в строке"

подправьте, пожалуйста, код на Pascal, т.к не могу нормально написать рекурсивную функцию. задача: Задана строка символов. Определить количество символов-цифр в строке с помощью рекурсии.
Есть немного кривоватый код. Помогите, пожалуйста.
Код:
Program lr12z2;
Uses Crt;

function cifirka (var stroka:string):byte;
var i,n:byte;
begin
     n:=0;
     if (k=1) or (stroka[k] in ['0'..'9']) then
     begin n:=1; end
     else
     if k>1 then
       if stroka [k] in ['0'..'9'] then
         begin n:=n+1; cifirka:=k-1; end
       else begin cifirka:=k-1; end;
       writeln ('Количество цифр в строке= ',n);
end;

var stroka:string; k,n:byte;
Begin
   ClrScr;
     Writeln ('Введите строку :');
     readln(stroka);
     k:=length (stroka);
     n:=0;
     cifirka (stroka);
   readln;
end.
Читаю и перевожу со словарем с Фортрана, Алгола, Кобола и др.
Voldemort93 вне форума Ответить с цитированием
Старый 02.04.2011, 23:40   #2
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию

я бы сделал так
Код:
function cifirca(stroka:string):byte;
var
    tmp:string;
begin
    if(length(stroka)>1) then begin
        tmp:=stroka;
        delete(tmp,1,1);
        if(stroka[1] in ['0'..'9']) then
            result:=cifirka(tmp)+1
        else
            result:=cifirka(tmp);
    end else
          if(stroka[1] in ['0'..'9']) then
              result:=1
          else
              result:=0;
end;
может не совсем по заданию, но какая-то рекурсия тут есть и количество цифр должно посчитаться
Упс...
L_M вне форума Ответить с цитированием
Старый 03.04.2011, 00:02   #3
Voldemort93
Пользователь
 
Аватар для Voldemort93
 
Регистрация: 27.08.2009
Сообщений: 40
По умолчанию

а можете полностью сформулировать код, потому что мне выдает одну ерунду?
Читаю и перевожу со словарем с Фортрана, Алгола, Кобола и др.
Voldemort93 вне форума Ответить с цитированием
Старый 03.04.2011, 10:28   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Voldemort93, как вам такой вариант:
Код:
Var
  Stroka:String;
Function RekKol(St:String; k:Byte):Byte;
Begin
  If k = 0 then RekKol:=0
  Else
  If not (St[k] in ['0'..'9']) then RekKol:=Rekkol(st,k-1)
  Else
  If(St[k] in ['0'..'9']) then RekKol:=RekKol(St,k-1)+1
End;
Begin
  Readln(Stroka);
  Writeln(RekKol(Stroka,Length(Stroka)));
  Readln
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 03.04.2011, 14:53   #5
Voldemort93
Пользователь
 
Аватар для Voldemort93
 
Регистрация: 27.08.2009
Сообщений: 40
По умолчанию

GetMax, Спасибо большое! То, что нужно.
Читаю и перевожу со словарем с Фортрана, Алгола, Кобола и др.
Voldemort93 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсивная программа вычисления "Суммы" Настёна-Liana Помощь студентам 2 29.05.2010 19:00
Паскаль.Программа "Верификация", "Кака бригадиру разделить заработанные деньги?".Сложные Valik102 Помощь студентам 11 23.06.2009 15:30
Паскаль.Программа "Верификация", "Кака бригадиру разделить заработанные деньги?".Сложные Valik102 Паскаль, Turbo Pascal, PascalABC.NET 3 23.06.2009 09:11
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Как в паскале добавить к строке символ: " ' " NexusN Паскаль, Turbo Pascal, PascalABC.NET 4 22.04.2008 19:58