Автор Тема: Задачки - Java...  (Прочетена 4050 пъти)

marsislav

  • Напреднали
  • *****
  • Публикации: 50
  • Distribution: Ubuntu
  • Window Manager: LXDE
    • Профил
    • WWW
Задачки - Java...
« -: Sep 19, 2010, 11:07 »
Напишете програма, която чете от конзолата две цели числа (Integer) и отпечатва колко числа има между тях, такивао, че остатъка от делението им на 5 да е нула.

И още една -

Напишете програма, която чете от конзолата две цели числа (Integer) и отпечатва по-голямато от тях - без използването на сравнение.
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Задачки - Java...
« Отговор #1 -: Sep 19, 2010, 11:18 »
без използването на сравнение.

Това ще ми е интересно да го видя.
Иначе задачките са интерсни - успех в писането им :D. Като си готов им пусни решението и тук.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Задачки - Java...
« Отговор #2 -: Sep 19, 2010, 11:44 »
@backtolife, ето ти решението на С, защото нали знаеш какво мисля за гореспоменатият "език"
Код
GeSHi (C):
  1. int x;  // we want to find the minimum of x and y
  2. int y;  
  3. int r;  // the result goes here
  4.  
  5. r = x ^ ((x ^ y) & -(x < y)); // max(x, y)
  6.  
  7.  

@marsislav, времето за написване на тоя пост ти е отнело повече време, от това да седнеш да прочетеш как се прави тази програма  ???
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

c111100101

  • Гост
Re: Задачки - Java...
« Отговор #3 -: Sep 19, 2010, 12:25 »
То това са задачи за първокласници в програмирането. Ако с тях не може да се справи автора на темата, къде е тръгнал въобще?
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Задачки - Java...
« Отговор #4 -: Sep 19, 2010, 13:34 »
@backtolife, ето ти решението на С, защото нали знаеш какво мисля за гореспоменатият "език"
Код
GeSHi (C):
  1. int x;  // we want to find the minimum of x and y
  2. int y;  
  3. int r;  // the result goes here
  4.  
  5. r = x ^ ((x ^ y) & -(x < y)); // max(x, y)
  6.  
  7.  
Код
GeSHi (C):
  1. r = x ^ ((x ^ y) & -(x < y));

Това не е ли пак сравнение? Или нещо бъркам понятията???
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Задачки - Java...
« Отговор #5 -: Sep 19, 2010, 13:43 »
Това не е ли пак сравнение? Или нещо бъркам понятията???

Според мен под сравнение имат в предвид if () :)
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Задачки - Java...
« Отговор #6 -: Sep 19, 2010, 13:46 »
Това не е ли пак сравнение? Или нещо бъркам понятията???

Според мен под сравнение имат в предвид if () :)
E то като ще е само без if: (x>y)?x:y  :D Ама да де, то така зададено условието, трябва да гадаем какво искат да видят тези, които искат да видят решението  ::)
Активен

c111100101

  • Гост
Re: Задачки - Java...
« Отговор #7 -: Sep 19, 2010, 13:56 »
Това не е ли пак сравнение? Или нещо бъркам понятията???

Според мен под сравнение имат в предвид if () :)
E то if е по скоро условие а реалното сравнение си е в скобките след него :)
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Re: Задачки - Java...
« Отговор #8 -: Sep 19, 2010, 14:33 »
if-а се преобразува в инструкция за условен jump към следваща инструкция в зависимост дали изчислението в скобите е 0 или различно от нула. Поради тази причина следният код е напълно коректен и ще се изпълни кода в тялото на if-a, а не на else-а:
Код
GeSHi (C):
  1. int x =5;
  2.  
  3. if ( x = 4 )
  4. {
  5. }
  6. else
  7. {
  8. }
  9.  


А x < y си е аритметична операция, която връща 0 или 1. :)
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Задачки - Java...
« Отговор #9 -: Sep 19, 2010, 14:40 »
@task_struct
//off
Голяма усмивка си извадил :) :) :).
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Задачки - Java...
« Отговор #10 -: Sep 19, 2010, 14:57 »
Код:
#include <unistd.h>
#include <stdio.h>
#include <stdint.h>

int maxv(int a, int b)
{
    int32_t c,d;

    c=((a-b)>>31)+1;
    d=((b-a)>>31)+1;
    return a*c+b*d;
}

Всичко е само побитово отместване и проста аритметика (събиране, изваждане и умножение). Сигурно има и по-елегантен начин, но това ми хрумна за момента.

Хм, обаче се чупи ако двете числа са еднакви :)
« Последна редакция: Sep 19, 2010, 15:07 от gat3way »
Активен

"Knowledge is power" - France is Bacon

marsislav

  • Напреднали
  • *****
  • Публикации: 50
  • Distribution: Ubuntu
  • Window Manager: LXDE
    • Профил
    • WWW
Хмм...
« Отговор #11 -: Sep 19, 2010, 20:19 »
Аз самия не мога да разбера много добре самото условие на задачата и за това зададох въпроса тук.
Задачата е от книгата на Светлин Наков и колектив - "Въведение  в програмирането с Java", глава 4, задача 5. Цитирам условието :
 
"5.  Напишете програма, която чете от конзолата две цели числа и отпечатва по-голямото от тях. Реализирайте програмата без използването на сравнение. Забележка: задачата изисква малко да помислите!"

И след това в "Решения и упътвания" в края на главата -
"5.  Нека числата са a и b. Използвайте следните преобразувания: a=a-b; b=b+a; a=b-a."
Може да звучи тъпо, но нещо не успявам да стопля как да я реализирам. Иначе с IF/ELSE и оператори за сравнение е лесно.
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Задачки - Java...
« Отговор #12 -: Sep 19, 2010, 23:28 »
По мои сметки тия преобразувания разменят стойностите на двете числа... При това, ако a е положително, а b - отрицателно, може да стане голям фън, ако се превърти int-a  ;D
Иначе, какво значи, че не можеш да стоплиш как да ги реализираш?
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
java
Настройка на програми
jojopara 3 8419 Последна публикация Feb 03, 2003, 13:06
от Nerdboy
Приложение на Java под конзола
Настройка на програми
laik 3 6432 Последна публикация Jun 07, 2004, 19:23
от v_badev
приложение на Java
Общ форум
laik 3 6982 Последна публикация Jun 17, 2004, 13:10
от JOKe
JAVA програмиране
Общ форум
smitev 8 8351 Последна публикация Jul 13, 2004, 00:26
от JOKe
За Java програмисти
Общ форум
smitev 1 6119 Последна публикация Sep 15, 2004, 21:49
от JOKe