IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> разбиение числа
medved777
сообщение 7.02.2007 10:04
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Женский

Репутация: -  0  +


Пожалуйста, помогите исправить программу. Очень прошу.
Условия задачи

Дано число. Удалить минимальную цифру


 program pract7_2;
const nm=100;
type tmasm=array[1..nm] of longint;
var i,col,k,n:byte; ch,p:longint; z,kol:tmasm;m:real;
procedure razb(ch:longint;var k:byte;var z:tmasm);
begin
k:=0;
while ch<>0 do begin
inc(k);
z[k]:=ch mod 10;
ch:=ch div 10;end;
end;
function min(n:byte;kol:tmasm):real;
var i:byte;mn,m:real;
begin
mn:=kol[1];
for i:=1 to n do
if kol[i]<mn then mn:=kol[i];
if kol[i]=mn then min:=mn;
m:=min(n,kol);
end;
begin
writeln;
writeln('vvedite chiclo');
read(ch);
razb(ch,col,z);
k:=0;
z[i]:=z[n-i+1];
for i:=1 to col do
if z[i]<>m then begin inc(k);z[k]:=z[i];end;
p:=z[k];
case z[i] of
0..9:p:=p*10+z[i];
10..99:p:=p*100+z[i];
end;
writeln('preobrazovanoe chiclo:');
writeln(p);
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 11.02.2007 10:48
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Что-то вспомнил я про эту задау, перед тем как запостить решение, смотрю, 1 в 1 как у Volvo smile.gif Щас подумал и вот еще одно решение, с одним циклом, но только для чисел с одной минимальной цифрой

function _delete(const n: LongInt): LongInt;
var
_result, temp, tenPower: LongInt;
min: Byte;

begin

temp := n; tenPower := 10;

min := 255;

while temp > 0 do begin

if temp mod 10 < min then begin
min := temp mod 10;
_result := (n div tenPower) * tenPower div 10;
if tenPower > 10 then
_result := _result + n mod (tenPower div 10);
end;

temp := temp div 10; tenPower := tenPower * 10;
end;

_delete := _result;
end;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 14:14
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"