Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 30.03.2011, 18:44   #1 (permalink)
@lis@
Новичок
 
Регистрация: 30.03.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Как посчитать количество цифр 5 в числе?

Помогите пожалуйста решить задачу.
Я написала программу, но она не работает:
var a,x,y,z,m:integer;
begin
write ('Введите число: ');
read(a);
x:=a;
z:=0;
repeat
y := x mod 10;
if y=5 then
z:=z+1;
m:=y div 10
until m=0;
write('Количество цифр 5: ', z)
end.
Какое число бы я не вводила, получается 0.
@lis@ вне форума   Ответить с цитированием

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

Уделите пожалуйста некоторое время на прочтение аналогичных тем

Как посчитать все итерации в циклах?
Паскаль. Сумма цифр числа

Старый 30.03.2011, 19:33   #2 (permalink)
Серёга
красавчик :D
 
Аватар для Серёга
 
Регистрация: 15.07.2010
Сообщений: 3,624
Записей в дневнике: 11
Сказал(а) спасибо: 71
Поблагодарили 13 раз(а) в 10 сообщениях
Репутация: 15870
По умолчанию

Цитата:
Сообщение от @lis@ Посмотреть сообщение
z:=z+1;
не уверен, что правильно, но попробуйте изменить так :

var a,x,y,z,m,b:integer;
begin
write ('Введите число: ');
read(a);
x:=a;
z:=0;
repeat
y := x mod 10;
if y=5 then
b:=z+1;
m:=y div 10
until m=0;
write('Количество цифр 5: ', b)
end.

мне показалось, что z ссылается на саму себя
Серёга вне форума   Ответить с цитированием
Старый 30.03.2011, 20:26   #3 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

Код:
var a,x,y,z,m:integer;
begin
  write ('Введите число: ');
  read(a);
  x:=a;
  z:=0;
    repeat
      x:= x div 10;
    if x=5 then
      z:=z+1;
    x:=x mod 10
    until x=0;
    write('Количество цифр 5: ', z)
end.
вроде так. надо проверить...
kreol вне форума   Ответить с цитированием
Старый 30.03.2011, 20:37   #4 (permalink)
@lis@
Новичок
 
Регистрация: 30.03.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Попробовала оба варианта, всё также получается в ответе 0
@lis@ вне форума   Ответить с цитированием
Старый 30.03.2011, 20:44   #5 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

перепутал div и mod ...
kreol вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 30.03.2011, 21:11   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну, коллеги - хвостом вас по голове - развели черт-те что на пустом месте.
Код:
var
 a:LongInt;
 z:Byte;
begin
 write ('Введите число: ');
 readln(a);
 z:=0;
 repeat
  if (a mod 10)=5 then z:=z+1;
  a:=a div 10
 until a=0;
 write('Количество цифр 5: ', z);
 readln;
end.
И всего делов-то!
Vladimir_S вне форума   Ответить с цитированием
Старый 30.03.2011, 22:37   #7 (permalink)
@lis@
Новичок
 
Регистрация: 30.03.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А нельзя как-нибудь заменить LongInt и Byte? (нам можно только integer использовать)
@lis@ вне форума   Ответить с цитированием
Старый 30.03.2011, 22:43   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от @lis@ Посмотреть сообщение
А нельзя как-нибудь заменить LongInt и Byte? (нам можно только integer использовать)
Ну так на Integer обе переменных и замените! Просто диапазон получается уж очень куцый - всего до 32000. Хотелось числа подлиннее вводить. Но нельзя - значит нельзя!
Vladimir_S вне форума   Ответить с цитированием
Старый 31.03.2011, 17:23   #9 (permalink)
@lis@
Новичок
 
Регистрация: 30.03.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо большое, всё работает!
@lis@ вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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