- Форум
- По малко от всичко
- Информационни технологии
- Още една задачка от Java, не решение а алтернатива :)
Такаа задачката съм я решил, но е ясно, че не е както се иска от условието, а то е:
Напишете програма която чете от конзолата две цели числа и извежда по голямото от тях. Не използвайте сравнение.
Упътване: Нека числата са а и б. (а=а-б), (б=а+б), (а=б-а)
Моето решение:
Само, че и моето май не е пълно решение защото ако числата са равни конзолата извежда:Код:import java.util.Scanner; public class glava4zadacha4 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter the first number: "); long a = input.nextLong(); System.out.println("Enter the second number: "); long b = input.nextLong(); System.out.println((a-b) == (b-a)? "They are equal" : "They are not equal"); System.out.println((a-b) > (b-a) ? "a is bigger than b" : "b is bigger than a"); } }
They are equal
b is bigger than a
Та моля за малко помощ как да я направя по условието на задачата![]()
изкарва ти две неща, защото оператора който си използвал, винаги изкарва нещо, като са ти равни числата, от първото изкарва, че са равни, на второто условие е false,и ти извежда че b е по-голямото.
предлагам ти да не се задълбаваш много на точно тоя тип задачи, защото не са от особена важност. това което ти е дадено като упътване, по принцип е за размяна на две стойностите на две числа, без изпозлване на временна трета променлива, не виждам защо е дадено като упътване
So much anger aimed in no particular direction
Just sprays and sprays
Защо ти излиза некоректно решение:Първоначално написано от Darkbound
Фокусираме се върху последните два реда System.out.println ...
В твоя случай кода се изпълнява линейно, тоест както си го написал така си върви. Съзвадаш някакъв скенер, взимаш две числа и проверяваш дали разликата им е еднаква. Ако да - "They are equal", ако не - "They are not equal".
След това програмата изпълнява следващия ред - разликата а-б е по-голяма от б-а. Това вярно ли е, ами не е вярно. Ако е вярно пише - "a is bigger than b", ако не е вярно пише - "b is bigger than a".
Къде е проблема:
Ако е вярно че (a-b) == (b-a), то може ли в същото време (a-b) > (b-a). Еми не може. Тогава необходимо ли е да го проверяваме? Еми не.
Как да то оправиш:
Примерно с if
Код:if ((a-b) == (b-a)) { System.out.println("They are equal"); } else { System.out.println("They are not equal"); /*( и сравняваш кое е по-голямото )*/ }
Вижте, ясно ми е защо получавам този отговор.
Както казахте от второто println ми дава false защото условието не е изпълнено и тъй като булевите стойности имат само true и false и нямат трета стойност която да използвам ако отговора е да са равни незнам как да го направя.
Нямам представа какво казах по-горе така че го игнорирайте.
В условието на задачата дори нямам да добавя това ако са равни числата незнам защо си усложнявам живота ( както винаги ) .
Стигнах до това:
Код:import java.util.Scanner; public class glava4zadacha4 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Enter the first number: "); long a = input.nextLong(); System.out.println("Enter the second number: "); long b = input.nextLong(); if ((a-b) < (b-a)) { System.out.println("b is bigger than a"); } else { System.out.println("a is bigger than b"); } } }
Само, че условието на задачата е да направим програмата БЕЗ да използваме сравнение <,>,= предполагам че тези знаци имат в предвид под сравнение както и if else които също са булеви стойности. С тяхното използване горният код е правилен според мен, има ли начин да стане без тях?
Напишете програма която извежда най-голямото от три числа.
Упътване: използвайте вложено if
Това е втората ми идея която е грешна също като първата, а първата беше (a>b>c) и (b>a>c) но там също ми дава грешка, помислих си, че с логическото И (&) ще стане номера ама пак не стана..Код:import java.util.Scanner; public class glava5zadacha3 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("First numb: "); int a = input.nextInt(); System.out.println("Second numb: "); int b = input.nextInt(); System.out.println("Third numb: "); int c = input.nextInt(); if (a>b & c) { if (b>a & c) { System.out.println("b e nai golqmoto"); } System.out.println("a e nai golqmoto"); } else { System.out.println("c e nai golqmoto" + c); } } }
просто не се пише така. това което си написал в момента е побитово "и"
трябва да ти е if ((a>b) && (a>c))...
и общо взето не ти е вярна конструкцията. предлагам ти първо да го направиш просто с 3 отделни иф-а и после да мислиш как да ги комбинираш
So much anger aimed in no particular direction
Just sprays and sprays
int max = a;
if(max<b) b=max;
if(max<c) c=max;
![]()