2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Помогите решить простейшие задачи в delphi
Сообщение28.12.2011, 19:54 


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

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


27/04/09
28128
Вы, вероятно, даже не пробовали?

Как делать первую. $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 


28/12/11
3
Я первую решал таким образом.
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 
Заслуженный участник


27/04/09
28128
Неужели первая работает правильно? Вы там много лишнего, кажется, написали. (Особенно интересно звучит строка 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 


28/12/11
3
Огромное спасибо)
Суть я уловил)

 Профиль  
                  
 
 Re: Помогите решить простейшие задачи в delphi
Сообщение28.12.2011, 21:13 
Заслуженный участник


27/04/09
28128
:D

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group