|
|
Опции темы | Опции просмотра |
13.12.2010, 11:11 | #1 (permalink) |
Member
Регистрация: 11.11.2010
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Посчитать количество различных цифр в записи. Паскаль, программа почти написана.
"допустим пользователь ввел 28116 То что видим на экране: "1"=2, "2"=1,"3"=0, и т.д. Проверка: какие цифры отсутствуют во множестве [123456789] Результат: 34579 (в порядке возрастания)" У меня получилось написать,чтобы программа подсчитывала сколько каких цифр в числе (для этого я использовала счетчики), вывожу результат на экран, далее пробую написать проверку каких цифр нет в числе. И на этом я останавливаюсь,потому что не знаю,в чем ошибка и что делать дальше. Вот мой код: program PodchetNumber; var Number:string[5]; m:string[9]; i,e,k1,k2,k3,k4,k5,k6,k7,k8,k9:integer; begin writeln('Vvedite luboe celoe chislo, v kotoroe vhodyat chifru ot 1 do 9 dlinnou ne bolee 5 '); readln(Number); k1:=0; k2:=0; k3:=0; k4:=0; k5:=0; k6:=0; k7:=0; k8:=0; k9:=0; for i:=1 to Length(Number) do begin if Number[i]='1' then k1:=k1+1; if Number[i]='2' then k2:=k2+1; if Number[i]='3' then k3:=k3+1; if Number[i]='4' then k4:=k4+1; if Number[i]='5' then k5:=k5+1; if Number[i]='6' then k6:=k6+1; if Number[i]='7' then k7:=k7+1; if Number[i]='8' then k8:=k8+1; if Number[i]='9' then k9:=k9+1; end; writeln('1=', k1, ' 2=', k2, ' 3=', k3, ' 4=', k4, ' 5=', k5,' 6=', k6, ' 7=',k7,' 8=', k8, ' 9=',k9); m:='123456789'; for i:=1 to Length(Number) do begin for e:=1 to 9 do if not(m[e] in Number[i]) then write(m[e],' '); e:=e+1; readln; end; end. |
13.12.2010, 11:11 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Посмотрите данные темки и узнайте больше Паскаль. Сумма цифр числа Посчитать количество букв k в последнем слове строки. |
13.12.2010, 11:22 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Я, конечно, подумаю, как правильно решить задачку (она не очень простая), но одно укажу сразу. Вот Вы пишете:
Цитата:
|
|
13.12.2010, 12:11 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Вообще-то я бы на свой вкус решал задачку так:
Код:
program PodchetNumber; var Number,S:string; Num:ARRAY[1..10] of Byte; i,j,Code:Integer; b:Boolean; BEGIN writeln('Vvedite luboe celoe chislo dlinnou ne bolee 5 '); readln(Number); For i:=1 to Length(Number) do begin S:=Number[i]; VAL(S,Num[i],Code); end; Writeln('Otsutstvujut cyfri:'); For i:=0 to 9 do begin b:=true; for j:=1 to Length(Number) do if Num[j]=i then b:=false; if b then write(i); end; Readln; END. 1. Вводится число в виде строковой переменной. 2. Цифры числа преобразуются в массив. 3. Последовательно цифры от 0 до 9 проверяются на предмет вхождения в полученный массив; если цифры в массиве нет, она выводится на экран. |
13.12.2010, 15:26 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Я тут еще подумал - можно и без преобразования в числовой массив, т.е. работать со строками и символами. Тогда получится еще короче:
Код:
program PodchetNumber; const m='0123456789'; var Number:string; i,j:Integer; b:Boolean; BEGIN writeln('Vvedite luboe celoe chislo dlinnou ne bolee 5 '); readln(Number); Writeln('Otsutstvujut cyfri:'); For i:=1 to 10 do begin b:=true; for j:=1 to Length(Number) do if m[i]=Number[j] then b:=false; if b then write(m[i]); end; Readln; END. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|