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

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

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

 
 Ответить  Открыть новую тему 
> нужна помощь. Задача на сортировку, я ее почти решила, но ответ неправильно выдает(
sveta_axi
сообщение 17.12.2010 21:05
Сообщение #1





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

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


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

Задано натуральное число N, в десятичной записи которого не более 6 цифр. Переставить цифры так, чтобы получилось наименьшее из чисел, кот. можно составить из его цифр.

Program zadacha1; 
uses crt;
var i,t, j: byte; p,n:longint; a:array[1..6] of byte;
begin
clrscr;
write('vvedite N');
readln(n); p:=n;
for i:=1 to 6 do begin
a[i]:=p mod 10;
p:= p div 10; end;
for i:=1 to 6 do
for j:=1 to 5 do
if a[j]<a[j+1] then begin
p:=a[j]; a[j]:=a[j+1]; a[j+1]:=a[j]; end; p:=0; t:=1;
for i:=j to 6 do begin
p:=a[i]*t+p;
t:=t*10; end;
writeln('naimenshee chislo coctavlennoe iz cifr chisla', n ,' =', p);
readln;
end.


Тегами не забываем пользоваться...

Сообщение отредактировано: volvo - 17.12.2010 22:17
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.12.2010 22:16
Сообщение #2


Гость






У тебя в программе было несколько существенных недочетов.

1) ты неправильно меняла местами значения при сортировке (обрати внимание, как это делала ты, и как сделал я)
2) при "сборке" числа из цифр (это в принципе можно и не делать, достаточно просто напечатать подряд сами цифры, но уж коли ты делаешь - то расскажу, что здесь неправильно), тип "десятки в какой-то степени" не должен быть byte. Это должен быть Longint... Иначе получишь не то, что хочется...
3) естественно, я сделал и то, что сортируются ровно столько цифр, сколько есть в числе, а не все 6. Зачем делать лишнюю работу? smile.gif

В общем, вот подправленный код:
var
i,t, j: byte; p,d,n:longint;
a:array[1..6] of byte;

begin
write('vvedite N '); readln(n);

p:=n;
t := 0;
while p > 0 do begin
inc(t);
a[t]:=p mod 10;
p:= p div 10;
end;

for i:=1 to t do
for j:=1 to t-1 do
if a[j]<a[j+1] then
begin
p:=a[j]; a[j]:=a[j+1]; a[j+1]:=p;
end;

p:=0; d:=1;
for i:=1 to t do
begin
p:=a[i]*d+p;
d:=d*10;
end;
writeln('naimenshee chislo coctavlennoe iz cifr chisla', n ,' =', p);
readln;
end.

 К началу страницы 
+ Ответить 
sveta_axi
сообщение 17.12.2010 22:34
Сообщение #3





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

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


спасибо большое=)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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