Loading...
bujo_nomer_6 avatar bujo_nomer_6 1 Точки

Tech Module C# - Arrays 08 Magic Sum . Проблем 60/100 точки.

Условието на задачата е : " Write a program, which prints all unique pairs in an array of integers whose sum is equal to a given number. "

https://pastebin.com/0WNVCss2 Toва е кода ,който успях да измисля .... За съжаление ми дава 60/100 ...
Проблемът е следният .че ,когато въведя вход " 3 3 3 3 "  и сумата да е '6' .. не ми отпечатва  3 3 и 3 3 като изход...а ми  отпечатва 10-пъти тези Тройки....
Когато въведа като вход " 3 3 " и сума '6' ,ми изкарва като изход 2 пъти "3 3" ...а трябва да е само веднъж .
Мисля ,че заради това ми изкарва 60/100 точки ....
Моля за помощ.

 

 

0
Programming Basics 12/02/2019 21:28:09
marina.kolova avatar marina.kolova 34 Точки
Best Answer

Не мога да видя кода ти, pastebin казва, че е изтрит.

Но ето ти един работещ: https://pastebin.com/Nipv5mTA

Логиката е следната: Чета си входните данни. Записвам поредицата от числа в масив. Въртя един цикъл от първия елемент на масива до предпоследния. И вътре в него втори цикъл - от втория елемент на масива до последния. Тоест хващам всяко число и го събирам с всяко следващо. Ако сумата им е равна на подаденото от потребителския вход число - директно принтирам съответната двойка.

 

EDIT: Погледнах кода ти. Завърти първия цикъл от i = 0 до i < array.Length - 1 и втория от j = i + 1 до j < array.Length. Така няма да събираш всяко число със самото него.

 

Твоят код - редактиран: https://pastebin.com/HsdX4Ly7

0
12/02/2019 21:53:43
bujo_nomer_6 avatar bujo_nomer_6 1 Точки

Благодаря ти за бързият отговор !
Направих както ми каза ... ДЕБЪГНАХ и си видях грешката и е супер логично да е i + 1 ... защото( i ) вече е взето и ако j = i ,то пак ще го вземе и ще се събере само със себе си ....
Рядко използвам дебъгера ,което ми е грешка ,но ще променя това .
Благодаря отново за бързият отговор !

0
ZdravkoSolakov avatar ZdravkoSolakov 5 Точки

Ето и още едно решение на задачата: 

package Arrays_Exercise;

import java.util.Arrays;
import java.util.Scanner;

public class P08MagicSum {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int[] numbers = Arrays.stream(scanner.nextLine().split(" "))
                .mapToInt(e -> Integer.parseInt(e) )
                .toArray();

        int num = Integer.parseInt(scanner.nextLine());
        int sumNum = 0;
        for (int i = 0; i < numbers.length  -1; i++) {
            for (int j = i +1; j < numbers.length; j++) {
                int currentNum = numbers[i];
                int currentNum2 = numbers[j];
                sumNum = currentNum + currentNum2;

                if (sumNum == num){
                    System.out.println(currentNum + " " + currentNum2 + " ");
                }
            }


        }

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