.
Отговор в тема
Резултати от 1 до 7 от общо 7

Hybrid View

  1. #1

    Още една задачка от 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

    Та моля за малко помощ как да я направя по условието на задачата

  2. #2
    Голям фен Аватара на lmao
    Регистриран на
    Feb 2007
    Мнения
    596
    изкарва ти две неща, защото оператора който си използвал, винаги изкарва нещо, като са ти равни числата, от първото изкарва, че са равни, на второто условие е false,и ти извежда че b е по-голямото.
    предлагам ти да не се задълбаваш много на точно тоя тип задачи, защото не са от особена важност. това което ти е дадено като упътване, по принцип е за размяна на две стойностите на две числа, без изпозлване на временна трета променлива, не виждам защо е дадено като упътване
    So much anger aimed in no particular direction
    Just sprays and sprays



  3. #3

    Re: Още една задачка от Java, не решение а алтернатива :)

    Цитирай Първоначално написано от Darkbound
    Код:
    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");
    		}
    
    }
    Защо ти излиза некоректно решение:
    Фокусираме се върху последните два реда 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");
        /*( и сравняваш кое е по-голямото )*/
    }

  4. #4
    Вижте, ясно ми е защо получавам този отговор.

    Както казахте от второто 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 които също са булеви стойности. С тяхното използване горният код е правилен според мен, има ли начин да стане без тях?

  5. #5
    Напишете програма която извежда най-голямото от три числа.
    Упътване: използвайте вложено if

    Код:
    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);
    			}
    		}
    
    }
    Това е втората ми идея която е грешна също като първата, а първата беше (a>b>c) и (b>a>c) но там също ми дава грешка, помислих си, че с логическото И (&) ще стане номера ама пак не стана..

  6. #6
    Голям фен Аватара на lmao
    Регистриран на
    Feb 2007
    Мнения
    596
    просто не се пише така. това което си написал в момента е побитово "и"

    трябва да ти е if ((a>b) && (a>c))...

    и общо взето не ти е вярна конструкцията. предлагам ти първо да го направиш просто с 3 отделни иф-а и после да мислиш как да ги комбинираш
    So much anger aimed in no particular direction
    Just sprays and sprays



  7. #7
    int max = a;
    if(max<b) b=max;
    if(max<c) c=max;


Правила за публикуване

  • Вие не можете да публикувате теми
  • Вие не можете да отговаряте в теми
  • Вие не можете да прикачвате файлове
  • Вие не можете да редактирате мненията си