Професионална програма
Loading...
l000p avatar l000p 11 Точки

C++ Суми прости и непрости числа. Nested Loop Exercise

Здравейте, получавам грешка при задаване на command различна от stop, но и различна от числен израз, при това изпълнение на задача:

Решение - https://pastebin.com/dwc9xYwu

За условие тук -> https://softuni.bg/trainings/resources/officedocument/41910/exercise-guidelines-programming-basics-with-cplusplus-june-2019%20/2401 ----- Задачата  е номер 6.

Линк към Judge - > https://judge.softuni.bg/Contests/Practice/Index/1178#5

 

Грешката идва на тест номер 4, като е изразена с звезда. 

Благодаря ! 

0
Programming Basics
RuNNeR4142 avatar RuNNeR4142 395 Точки

Решение на Java, дано да е полезно: 

 

public class E06SumPrimeNonPrime {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        int primeSum = 0;
        int nonPrimeSum = 0;

        while (!input.equals("stop")) {
            int num = Integer.parseInt(input);
            boolean isPrime = true;
            if (num == 1) {
                isPrime = false;
            }

            if (num < 0) {
                System.out.println("Number is negative.");
            } else {
                for (int i = 2; i <= (num / 2); i++) {
                    if (num % i == 0) {
                        isPrime = false;
                        break;
                    }
                }
                if (isPrime) {
                    primeSum += num;
                } else {
                    nonPrimeSum += num;
                }
            }
            input = scanner.nextLine();
        }
        System.out.println("Sum of all prime numbers is: " + primeSum);
        System.out.println("Sum of all non prime numbers is: " + nonPrimeSum);
    }
}
0
l000p avatar l000p 11 Точки

    Здравей, решението което съм предоставил е почти идентично.
    Проблемът изниква когато въведеш в (случая с твоето решение) string input нещо различно от stop, но и различно от числов израз, така в  int num = Integer.parseInt(input); се опитваш да побереш стойността на string и получаваш run time error в моя случай, функцията stoi() реве. (не знам какво става в Java като подадеш string към int, но предполагам същото)

     Ако знаех някаква функция, която да провери дали в string-а са записани само числа щеше да е лесно. Със сегашните ми знания най-вероятно може да стане с някакъв цикъл, който да проверява стринга буква, по буква и ако има space или нещо различно от char от 0 до 9 да създаде флаг... 

    Просто ми изглежда малко вероятно авторите на задачата да са искали да постигнат това .. изглежда ми прекалено усложнено като за задача от basics ?? Някой има ли решение на C++ което е минало с 100/100 ?? 

0
02/09/2019 15:24:23
kolioi avatar kolioi 616 Точки

Това, което ти трябва е stringstream, само че това се учи в курсовете за напреднали :) Например нещо такова:

#include <sstream>
…
string command;
cin >> command;

int number = 0;
istringstream iss(command);
while (iss >> number) {
	…
	cin >> command;
	iss.clear();
	iss.str(command);
}

Излиза от цикъла при първия въведен текст.

0
02/09/2019 21:32:55