Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужна помоь в написании легкой проги. 
:(
    Опции темы
mc_c00L
Дата 7.10.2005, 22:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне надо, что я вводил какое-либо число дней (например 100) и мне говорилось, что это=3 месяца 1 неделя 3 дня. Может хотя бы идею подкинете. я на первом курсе и нам еще толком не обьяснили, а задачи задают 8(
  Вверх
Darhazer
Дата 7.10.2005, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: нет
Всего: 29



Привет,
Сколько месецов дней и недели конечно зависит от конкретного месяца, так как не у всех месяцов 30 дней. Иначе задача простая. Делаеш целочисленое деление (DIV) на 30 и получаеш месяцов. Потом остаток делиш на 7...

Код

days := 100;
months := days div 30;
days := days - months*30;
weeks := days div 7;
days := days - weeks*7;

Вот тебе месяцов, неделей и дней ;)



--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
mc_c00L
Дата 8.10.2005, 23:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











большое спасибо. кстати, в задаче сказано, что надо считать месяцф как 30 дней, а года все не високосные.

И еще можно как нить поподробнее описать с опираторами, а то просто я совсем новичок. smile
  Вверх
mc_c00L
Дата 9.10.2005, 11:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











И еще сколько надо переменных вводить?
  Вверх
Zero
Дата 9.10.2005, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(mc_c00L @ 8.10.2005, 23:30)
кстати, в задаче сказано, что надо считать месяцф как 30 дней, а года все не високосные

Блин, а сразу сказать не мог. smile Тогда тут вообще всё за 5 сек. делается:
Код

program pr;
var
  n:integer; {начальное число дней}
  months,weeks,days:integer; {меяц, неделя, день}
Begin
  write('Введите число дней >');
  readln(n);
  months:=n div 30;
  weeks:=(n-30*months) div 7;
  days:=n-months*30-weeks*7;
  writeln(n,' дней = ',months,'─месяцев, ',weeks,'─недель, ',days,'─дней.')
End.

Цитата(mc_c00L @ 8.10.2005, 23:30)
И еще можно как нить поподробнее описать с опираторами, а то просто я совсем новичок.

Помоему подробнее уже не опишешь... smile
Цитата(mc_c00L @ 9.10.2005, 11:51)
И еще сколько надо переменных вводить?

Одну... smile smile smile
PM MAIL ICQ   Вверх
Mc_c00L
Дата 9.10.2005, 17:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А года как? years:= ??Или может обьясните мне в чем суть, чтобы я не просто как попугай все переписал.
  Вверх
Zero
Дата 9.10.2005, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Mc_c00L @ 9.10.2005, 17:56)
А года как? years:= ??

smile smile А причём тут года, ты про них ничего не упомянал...
Цитата(Mc_c00L @ 9.10.2005, 17:56)
Или может обьясните мне в чем суть, чтобы я не просто как попугай все переписал.

Блин, да там всего то 3 основных строки, и так всё понятно... Ладно:
Код

months:=n div 30;

n ─ это число которое ты вводишь с клавиатуры, т.е. "100" (дней)
оператор div─ это целочисленное деление, т.е. при делении 100 на 30, получается 3 целых, и 10 в остатке.(3 ─ это и есть количество месяцев)
Далее работаем с оставшимися 10-ю днями.
Вот строка:
Код

(n-30*months)
означает (100-30*3) = 100 - 90 = 10, т.е. этой строкой мы выбрали оставшиеся дни...
Код

weeks:=(n-30*months) div 7;
Этой строкой мы 10 делим на 7 (т.к. в неделе столько дней), при делении 10 на 7 получается 1 целая и 3 в остатке (10-7=3).
Далее всё что осталось от начальных 100 дней это 3 дня, а чтобы их определить нужно из общего кол-ва дней т.е. из 100 вычесть 3 месяца, т.е. 30*3=90 и ещё вычесть недели, т.е. 7*1=7, и вот этой строчкой это делается:
Код

days:=n-months*30-weeks*7;

Ну надеюсь теперь, то хоть у тя заполнилась ещё одна клетка мозга то??? smile
PM MAIL ICQ   Вверх
mc_c00L
Дата 9.10.2005, 20:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Огромное спасибо! очень благодарен 8) Я все понял теперь!
  Вверх
Zero
Дата 9.10.2005, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(mc_c00L @ 9.10.2005, 20:06)
Я все понял теперь!

smile
PM MAIL ICQ   Вверх
mc_c00L
Дата 9.10.2005, 21:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











хмм у меня вторая задача такого же типа. Я ее в принципе сделал, только одна загвоздка. Там надо число копеек представить в старинных русских деньгах. рубль=100коп гривна = 10 коп алтын=3 коп и полушка=0.25 коп. Я все сделал, как в пердыдущей задаче, а мне он пишет Operand types does not match operator 8((( Че это значит??
Это если ставлю тип данных Real, если я ставлю Extended пишет
Must be in 8087 mode to compile this. **(((
  Вверх
Zero
  Дата 10.10.2005, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(mc_c00L @ 9.10.2005, 21:16)
а мне он пишет Operand types does not match operator 8((( Че это значит??

1. Для того чтобы задать второй вопрос, создавай вторую, тему.
читаем правила smile (См.10,11 пункты)
2. Я не телепат, и не могу тебе дать однозначного ответа...
Показывай код программы.

Это сообщение отредактировал(а) Zero - 10.10.2005, 08:14
PM MAIL ICQ   Вверх
Mcicool
Дата 10.10.2005, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Прошу прощения, больше не буду. Вот код:
Код

Program GG;
var s:real;
rubl,grivna,altin,polushka:real;
Begin
WriteLn('vvedite chislo kopeek');
readln(s);
rubl:=s div 100;
grivna:=(s-100*rubl) div 10;
altin:=(s-100*rubl-10*grivna) div 3;
polushka:=(s-100*rubl-10*grivna-3*altin) div 0.25;
Writeln(s,'kopeek=',rubl,'rublei,',grivna,'griven,',altin,'altinov,',polushka,'polushek,');
readln;
End.




Это сообщение отредактировал(а) Mcicool - 10.10.2005, 09:30
PM MAIL   Вверх
Zero
Дата 10.10.2005, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(mc_c00L @ 9.10.2005, 21:16)
а мне он пишет Operand types does not match operator 8((( Че это значит??

Это значит, что тип вот тут:
Код

var s:real;    
rubl,grivna,altin,polushka:real;
не соответствуют тому оператору которого ты используешь, ведь оператор
div ─ означает целочисленное деление(т.е. целые числа делится должны)
а ты тут:
Код

rubl:=s div 100;
делишь целочисленно дробные числа
Здесь будет целесообразно просто разделить S на 100, а потом взять от результата целую часть, попробуй типа такого:
Код

rubl:=int(s/100);

Замечание: если хочешь узнать универсально что каждый оператор означает, то поставь на нём курсор и нажми <CTRL>+<F1>.
При возникнавении любой ошибки нажимай <F1> там будет описание её...
Цитата(mc_c00L @ 9.10.2005, 21:16)
у меня вторая задача такого же типа.

Несовсем, smile если при таком как ты написал алгоритме товар будет стоить скажем 138 копеек, то твоя программа выдаст, что товар стоит: " 1 рубль + 1 полушка+ 1 грива+ 1 алтынь", ну типа того... smile smile
Тут лучше для определения каждого вида валюты, общую твою сумму копеек S, делить на то во сколько каждая валюта переводится:
Пример:
гривна = S делить на 10;
алтын = S делить на 3;
........ и т.д.

А хотя, если подумать тут наверно даже и не нужно брать целую часть, т.е. мне кажется не нужно использовать функцию Int.

Вот ещё замечу с выводом дробных чисел, их можно форматировать:
попробу сначала напиши как ты сейчас делаеш, а при запуски зам поймёш, про что я говорю:
т.е. строку:
Код

Writeln(s,'kopeek=',rubl, ...)

надо заменить на:
Код

Writeln(s,'kopeek=',rubl:0:2, ...)

обрати внимание на rubl:0:2...
PM MAIL ICQ   Вверх
Mcicool
Дата 10.10.2005, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 9.10.2005

Репутация: нет
Всего: нет



Оба на! получилось все! Спасибо Я использовал Int. круто 8)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.