Професионална програма
Loading...
+ Нов въпрос
DimovIvan avatar DimovIvan 11 Точки

Programming Basics Online Exam - 6 and 7 July 2019, задача: 06. Name Game

https://judge.softuni.bg/Contests/Practice/Index/1745#10

Дава ми 90 от 100 точки. На единия тест ми дава: time limit. Ако може някой да ми помогне! Благодаря предварително!

Tук е решението ми: https://pastebin.com/X2Wn8FDv

Тагове:
0
Programming Basics
RaUndreundre avatar RaUndreundre 52 Точки

Здравей. Никъде в условието не е казано че името ще е от една дума. При име съставено от две думи (на един ред), cin >> name ще прочете само първото (малкото) име. Трябва да се използва getline(cin, name). Съответно и където се налага се добавя cin.ignore(). Ето го твоя код корегиран и работещ 100/100:

#include <cmath>
#include <iostream>
#include <string>

using namespace std;
int main() {
    string name, winnerName;
    getline(cin, name);
    int maxPoints = 0;
    while (name != "Stop") {
        int points = 0;
        for (int i = 0; i < name.size(); i++) {
            int number;
            cin >> number;
            if (number == name[i]) {
                points += 10;
            } else {
                points += 2;
            }
        }
        if (points >= maxPoints) {
            maxPoints = points;
            winnerName = name;
        }
        cin.ignore();
        getline(cin, name);
    }
    cout << "The winner is " << winnerName << " with " << maxPoints
         << " points!" << endl;
    return 0;
}

Поздрави!

0
07/03/2021 18:39:06