2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите решить простейшие задачи в delphi
Сообщение28.12.2011, 19:54 
Нужно решить задачи в Delphi
Помогите пожалуйста.
1. Дано целое число N (>0). Используя операции деления нацело и взятия остатка от деления, найти количество и сумму его цифр.
2. В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый, и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, Змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года определить его название, если 1984 год - начало цикла: "год зеленой крысы"
________________________

 
 
 
 Re: Помогите решить простейшие задачи в delphi
Сообщение28.12.2011, 20:25 
Вы, вероятно, даже не пробовали?

Как делать первую. $74805 = 7\cdot 10000 + 4\cdot 1000 + 8\cdot 100 + 0\cdot 10 + 5\cdot 1$. Какой остаток от деления его на 10? 70000 делится на 10, 4000 делится, 800 делится, 0 делится и лишь пять единиц не делятся! Они и будут остатком. Нашли самую правую цифру числа.

А что получится, если разделить 74805 на 10 и взять целую часть?

Почувствовали алгоритм?

 
 
 
 Re: Помогите решить простейшие задачи в delphi
Сообщение28.12.2011, 20:42 
Я первую решал таким образом.
var
Form1: TForm1;
N,m,i,z,k,p:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
N:=strtoint(Edit1.Text);
i:=10;
m:=1;
While (N div i>=1) do
begin
m:=m+1;
i:=i*10;
end;
Edit2.text:=inttostr(m);
p:=N mod 10;
Edit3.Text:=inttostr(p);
k:=100;
while ((N mod k) div 10<N) do
begin
z:=(N mod k div 10);
Edit3.Text:=(edit3.Text)+inttostr(z);
k:=k*10;
end;
Edit3.Text:=(Edit3.Text);
end;

А вот со второй у меня проблемы(

 
 
 
 Re: Помогите решить простейшие задачи в delphi
Сообщение28.12.2011, 20:59 
Неужели первая работает правильно? Вы там много лишнего, кажется, написали. (Особенно интересно звучит строка Edit3.Text:=(Edit3.Text);.)

Берём остаток от деления на 10. Получаем очередную цифру.
Делим текущее число на 10.
Если число не равно 0, повторяем дальше.

И больше ничего не надо! (Цифры получаются в обратном порядке, но это совершенно не проблема.)

Вторая похожа на первую. Если от требуемого года отнять 1984, получим число, которое равно $60a + 12c + n$, где $a$ — номер 60-летнего цикла, нам не нужный, $c$ — это «цифра цвета» от 0 до 4, $n$ — «цифра животного» от 0 до 11. Исходя из условий, цвет 0 соответствует зелёному, 1 — красному и т. д., а животное 0 — крысе, 1 — корове и тоже т. д.. Выделяем цифры как с числом, только теперь основание системы счисления не одно, а два — первая цифра по основанию 12, а вторая — 5.

P. S. Код лучше окружить тегами [code]...[/code], хотя без отступов выглядит одинаково нечитаемо. :-)

 
 
 
 Re: Помогите решить простейшие задачи в delphi
Сообщение28.12.2011, 21:11 
Огромное спасибо)
Суть я уловил)

 
 
 
 Re: Помогите решить простейшие задачи в delphi
Сообщение28.12.2011, 21:13 
:D

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group