Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Tarantula83 avatar Tarantula83 3 Точки

Задача Equal Sums Left Right Position ?????????????????

Здравейте колеги имам въпрос или аз не съм добре с главата или никаква логика няма в следните кодове!!!

Това е моят код който не дава никакви точки:

import java.util.Scanner;

public class EqualSumsLeftRightPosition {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int one = Integer.parseInt(scanner.nextLine());
        int two = Integer.parseInt(scanner.nextLine());


        for (int a = one; one <= two; a++) {
            int left = 0;
            int middle = 0;
            int right = 0;

            for (int b = 0; b <= Integer.toString(b).length() - 1; b++) {
                int num = Integer.toString(a).charAt(b) - 48;

                if (b <= 1) {
                    left += num;
                } else if (b >= 3){
                    right += num;
                }else {
                    middle += num;
                }

                if (left == right || (Math.min(left, right) + middle == Math.max(left, right))) {

                }
                System.out.printf("%d", a);
            }
        }
    }
}

 

И ето този код който дава 100/100 :

import java.util.Scanner;

public class EqualSumsLeftRight {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int f = Integer.parseInt(scanner.nextLine());
        int s = Integer.parseInt(scanner.nextLine());

        for (int i = f; i <= s; i++) {

            int leftSum = 0;
            int midSum = 0;
            int rightSum = 0;

            for (int k = 0; k <= Integer.toString(i).length() - 1; k++) {

                int num = Integer.toString(i).charAt(k) - 48;

                if (k <= 1) leftSum += num;
                else if (k >= 3) rightSum += num;
                else midSum += num;

            }


            if (leftSum == rightSum || ( Math.min(leftSum, rightSum) + midSum == Math.max(leftSum,rightSum))) {
                System.out.printf("%d ", i);
            }
        }
    }
}

Ще помоля някой по компетентен да ми обясни защо моя не работи а втория работи???

 

Тагове:
0
Programming Basics
dimaldim92 avatar dimaldim92 149 Точки
import java.util.Scanner;

public class EqualSumsLeftRightPosition {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int one = Integer.parseInt(scanner.nextLine());
        int two = Integer.parseInt(scanner.nextLine());


        for (int a = one; a <= two; a++) {
            int left = 0;
            int middle = 0;
            int right = 0;

            for (int b = 0; b <= Integer.toString(a).length() - 1; b++) {
                int num = Integer.toString(a).charAt(b) - 48;

                if (b <= 1) {
                    left += num;
                } else if (b >= 3){
                    right += num;
                }else {
                    middle += num;
                }

            }
                if (left == right || (Math.min(left, right) + middle == Math.max(left, right))) {
                System.out.printf("%d ", a);
                }

        }
    }
}

 

Това е твоя код оправен, работещ със 100/100.

Сравни внимателно двата кода - грешките са ти доста.

 

Първата грешка ти е тук - for (int a = one; one <= two; a++)

Втората е тук -  for (int b = 0; b <= Integer.toString(b).length() - 1; b++) 

Третата е тук -            

   if (left == right || (Math.min(left, right) + middle == Math.max(left, right))) {

                }
                System.out.printf("%d", a);

Четвъртата - Вторият цикъл трябва да го затвориш преди if проверката.

Петата - System.out.printf("%d", a); - трябва да има разстояние след %d 

0
26/10/2018 12:48:53
Lyubohd avatar Lyubohd 137 Точки

Здравей,

  Първата грешка която виждам в твоят код е цикъла, по този начин той е безкраен.

for (int a = one; one <= two; a++), тъй като ти по никакъв начин не променяш стойста на one и two, винаги one ще бъде по малко от two, трябва да бъде зададено условието по този начин: for (int a = one; а <= two; a++).

  Втората грешка е, при задаването на условие във вътрепният цикъл: 

b <= Integer.toString(b).length() - 1

Трябва да бъде по този начин:

b <= Integer.toString(а).length() - 1

  Третата грешка която виждам в кода ти, е че тялото на последната if проверка е празно, и печаташ изхода след нея, тоест тя не влияе по никакъв начин, и печаташ на всяка итерация 

if (left == right || (Math.min(left, right) + middle == Math.max(left, right))) {
 
}
System.out.printf("%d", a);

Трябва да печаташ само когато е изпълнено услвието във if проверката, което ще се случва само ако бъде в тялото на if конструкцията, и на последно място, трябва да добавиш празно място след %d в кавичките, за да ти отдели всяко едно от числата.

if (left == right || (Math.min(left, right) + middle == Math.max(left, right))) {
    System.out.printf("%d ", a);
}

  Това са нещата които успях да видя на пръв поглед, надявам се да съм ти помогнал.

Успех,

Любо

0
Tarantula83 avatar Tarantula83 3 Точки

Да благодаря общо взето тея задачи са още Пълна Каша и Мъгла!!!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.