Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2011, 10:04   #1
Heming
Форумчанин
 
Аватар для Heming
 
Регистрация: 06.07.2010
Сообщений: 105
Смущение Найти найменьшую цифру введенного числа (задача на паскаль)

Дано:Найти найменьшую цифру введенного числа.

Я так понимаю нужно через div и mod, а цифры внести в массив, в котором найти минимальное(идея вроде есть, а реализовать коректно не получается). Я очень давно учил паскаль и практически ничего не помню, если кто может решить наиболее рационально было б шикарно, заранее спс.



______________
Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В последующем, темы с подобным названием будут закрываться или удаляться,
а автор такой темы будет получать штрафные баллы.
Учтите это на будущее.

Модератор.
Carpe Diem

Последний раз редактировалось Serge_Bliznykov; 05.09.2011 в 11:34.
Heming вне форума Ответить с цитированием
Старый 05.09.2011, 11:32   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Я так понимаю нужно через div и mod
да. именно так.
Цитата:
а цифры внести в массив, в котором найти минимальное
нет смысла использовать массив там, где он не нужен.


Нахождение минимального - это же простой однопроходный алгоритм.
можно, например, так решить:
Код:
var Num : longint; {наше число}
    MinDigit, OneDigit : integer;
begin
  WriteLn;
  Write('Vvedite chislo: ');
  Readln(Num);
  Num := abs(Num); {если ввели отрицательное число - сделаем его положительным}

  if Num=0 then MinDigit := 0 {если ввели число ноль, то и минимальная цифра ноль - и нечего тут искать!}
  else
    MinDigit := 10; {сначала положим за основу максимальное (невозможное) значение}  
  while Num>0 do begin
      OneDigit := Num mod 10;
      Num := Num div 10;
      if OneDigit<MinDigit then MinDigit := OneDigit;
  end;
  WriteLn('Minimalnay cifra = ', MinDigit);
  Readln
end.

Последний раз редактировалось Serge_Bliznykov; 05.09.2011 в 11:38.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.09.2011, 20:03   #3
Heming
Форумчанин
 
Аватар для Heming
 
Регистрация: 06.07.2010
Сообщений: 105
По умолчанию Благодарвствую

Фак, я идиот, это действ. примитив, я все так же написал, но строчку с ветвлением провтыкал.
Спасибо большое, все учту.
if OneDigit<MinDigit then MinDigit := OneDigit;(я думаю, тут <= надо ибо если будет 41112, то прогу будет выбивать без равности)
Сейчас думаю как ограничить ввод таких чисел как (0341), не подскажите идейку?!
Carpe Diem

Последний раз редактировалось Heming; 05.09.2011 в 21:07.
Heming вне форума Ответить с цитированием
Старый 05.09.2011, 20:29   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
тут <= надо
не надо
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 05.09.2011, 21:04   #5
Heming
Форумчанин
 
Аватар для Heming
 
Регистрация: 06.07.2010
Сообщений: 105
По умолчанию Не прав

Да действ. не надо, ведь оно просто его пропускает при цикле, тем самым учитвая этот факт, то из-за другого вылетало,
но что делать с 0001231
Carpe Diem
Heming вне форума Ответить с цитированием
Старый 05.09.2011, 21:12   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

veniside, спасибо.
разумеется, тут не надо менять строгое равенство на нестрогое!

Цитата:
Сейчас думаю как ограничить ввод таких чисел как (0341), не подскажите идейку?!
Что означает, в вашем понимании, "ограничить" ?

к любому числу могут дописаны слева нули. Эти нули называются "незначащими". Потому что они ничего не значат для величины числа.
Если Вы в данную программу введёте 0341, то программа абсолютно резонно воспримет его как число 341.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.09.2011, 21:20   #7
Heming
Форумчанин
 
Аватар для Heming
 
Регистрация: 06.07.2010
Сообщений: 105
По умолчанию

С точки зрения техники, я понимаю, просто при вводе такого число нужно выдать месседж (данное комб.цифр не есть числом, ибо ноль спереди),
как вот определить первую цифру введенного "числа"
Хотя это уже наверное и не особо важно, главное основоной алгоритм я понял, спс.
Carpe Diem

Последний раз редактировалось Heming; 05.09.2011 в 21:25.
Heming вне форума Ответить с цитированием
Старый 05.09.2011, 23:17   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Сейчас я скажу страшное: ведущие нули хранятся в Num всегда (ну почти)! Просто потому, что для них есть место. Независимо от того, ввели вы 0001231 или 1231, в память запишется 000004CF (hex). Уже испугались? Нет? Почему? Правильно, потому что они отбрасываются при вычислениях.

> данное комб.цифр не есть числом, ибо ноль спереди

с чего это вдруг?

> как вот определить первую цифру введенного "числа"

внутри while проверять:

Код:
  if (10 > Num) then
    WriteLn('Первая цифра: ', Num);
Заметьте, первая цифра никогда не будет 0!
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заменить нулем все элементы меньшие введенного числа Сашуня Паскаль, Turbo Pascal, PascalABC.NET 2 23.05.2011 22:18
Сумма цифр введенного трехзначного числа. Дельфи by -ORTODOX- Помощь студентам 20 02.02.2011 14:21
Замена введенного числа на заливку ячейки цветом. k.viktor Microsoft Office Excel 2 03.12.2009 11:16
Найти последнюю цифру числа в С++ Vizavi Помощь студентам 4 27.05.2009 21:24
Найти последнюю цифру от числа в Паскале Карабин Помощь студентам 100 17.05.2009 17:34