![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 17.07.2010
Сообщений: 2
|
![]()
var
s: string; c,a: char; k,l,b:integer; begin a:='a'; b:=0; repeat writeln('vvedite stroku'); readln(s); l:=length(s); for k:=1 to l do begin c:=s[k]; if c=a then b:=b+1; end; writeln(b); until l=0; end. почему в этом примере старый результат плюсуется к новому?т.е. ввожу слово "pascal"выводит результат "2" потом ввожу "karandash" а результат получается уже 5 а не 3 как должно было быть...в чем мой прокол??? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
вы сначала напишите условие задачи, пожалуйста.
Я Так полагаю, эта программа считывает количество символов 'a' в слове, которое вы ввели. Проблема заключается вот в чём: repeat writeln('vvedite stroku'); readln(s); l:=length(s); for k:=1 to l do begin c:=s[k]; if c=a then b:=b+1; end; writeln(b); until l=0; Вот вы ввели строку, у вас начался цикл по ней: repeat writeln('vvedite stroku'); readln(s); l:=length(s); for k:=1 to l do begin Если символ равен букве 'a', то переменную b увеличиваем на 1. c:=s[k]; if c=a then b:=b+1; end; Отображаем число b на экране. writeln(b); Идём снова на начало внешнего цикла, просим строку, вводим считаем, прибавляем количество к переменной b. НО ПЕРЕМЕННАЯ b ХРАНИТ СТАРОЕ ЗНАЧЕНИЕ! ВЫ ЕГО НЕ СБРОСИЛИ Чтобы исправить ситуацию и программа заработала, сбрасывайте переменную b (делайте это конструкцией b:=0) перед тем, как показать её на экране, либо же сбрасывайте её в начале каждой новой итерации цикла repeat Последний раз редактировалось Вадим Мошев; 22.01.2011 в 21:19. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 25.08.2010
Сообщений: 25
|
![]()
переменную b обнуляй в цикле
Код:
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Кстати, позволю себе дать некоторые советы:
1. Для того чтобы увеличить на некоторое значение переменную ЦЕЛОГО ТИПА, лучше использовать процедуру "инкремент". Синтаксис обращения к ней такой: INC(a, i). Здесь a - переменная целого типа (integer), которая будет увеличиваться каждый раз при обращении к процедуре INC. Второй параметр i (тоже integer) - необязательный. Это число, НА КОТОРОЕ БУДЕТ УВЕЛИЧИВАТЬСЯ первый параметр процедуры. Если Вы его не зададите, то есть напишите INC(a), то в таком случае здесь будет предполагаться, что он АВТОМАТИЧЕСКИМ РАВЕН 1. Таким образом, конструкция a:=a+i равносильна записи INC(a, i). Если же вы напишите INC(a), то это будет одно и то же, что и a:=a+1 Если вы хотите убавлять значение переменной a, вместо INC пишите DEC (это декремент). Правило обращения к этой процедуре то же самое. 2. Давайте обратимся к вашему коду: Код:
Код:
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 17.07.2010
Сообщений: 2
|
![]()
спасибо!!!работает)))
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему 0? | Nikita++ | Помощь студентам | 4 | 20.10.2010 19:39 |
Не создаётся БД почему ? | NecRoMat | PHP | 10 | 16.04.2010 23:51 |
Почему? | logok | Общие вопросы C/C++ | 2 | 12.04.2010 21:59 |
Почему? | Sota | О форуме и сайтах клуба | 4 | 26.07.2007 16:26 |