Простая задача
От: nusik1990 Азербайджан  
Дата: 11.11.11 12:19
Оценка:
Всем привет.
На одном из сайтов посвященных фрилансу, есть система тестирования знаний C++. online-judge дал мне такую задачу:
Write a program which accepts a variable number of strings as input and locates the position of the character 'a' and the string 'is' in each input. The program should print the sum of the positions found. If a particular string or character is not found then the position should be considered to be -1.

For example, if the word 'mistake' is supplied to the program, the string 'is' lies at position 1 (considering the first position to be zero) and the character 'a' lies at position 4, hence the sum of the positions will be 4+1=5. Similarly if the word "test" is supplied to the program, both 'a' and 'is' are not present, hence the result will be (-1) + (-1) = -2.

Below is an example of the input supplied to the program followed by the output. The first line of input indicates the number of strings supplied to the program, followed by the actual strings (one per line)

Input
-----
3 (indicating that 3 strings will be supplied to the program)
It is a simple problem
Raspberry is sweet
test

Output
-----
9
11
-2

Вот мое решение:


#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[])
{
    int count = 0;
    cin >> count;
    cin.ignore();
    for (int i =0 ; i < count ; i++)
    {
        string str;
        getline(cin,str);
        int sum = 0, a, b;

        a = str.find("a");
        if (string::npos == a)
            a = -1;
        b = str.find("is");
        if (string::npos == a)
            b = -1;
        sum = a + b;
        cout << sum << endl;
    }
    return 0;
}


Судья выдает wrong answer. Почему?
online-judge
Re: Простая задача
От: DrDred Россия  
Дата: 11.11.11 12:31
Оценка: +1
Здравствуйте, nusik1990, Вы писали:

N>Всем привет.


N>Вот мое решение:



N>
N>#include <iostream>
N>#include <string>

N>using namespace std;

N>int main(int argc, char *argv[])
N>{
N>    int count = 0;
N>    cin >> count;
N>    cin.ignore();
N>    for (int i =0 ; i < count ; i++)
N>    {
N>        string str;
N>        getline(cin,str);
N>        int sum = 0, a, b;

N>        a = str.find("a");
N>        if (string::npos == a)
N>            a = -1;
N>        b = str.find("is");
N>        if (string::npos == a)
N>            b = -1;
N>        sum = a + b;
N>        cout << sum << endl;
N>    }
N>    return 0;
N>}
N>


N>Судья выдает wrong answer. Почему?


Копипаста — зло
Это раз.
Второе — правда и в задании это не специфицировано, что делать, если искомый элемент встречается более одного раза, например для слова "amman" что должно быть выведено? 0 или 3?
... << RSDN@Home 1.2.0 alpha 5 rev. 1526>>
--
WBR, Alexander
Re[2]: Простая задача
От: rg45 СССР  
Дата: 11.11.11 12:54
Оценка:
Здравствуйте, DrDred, Вы писали:

DD>...

DD>Второе — правда и в задании это не специфицировано, что делать, если искомый элемент встречается более одного раза, например для слова "amman" что должно быть выведено? 0 или 3?

Если условие задачи читать строго:

...The program should print the sum of the positions found.

то, надо полагать, что "sum of the all positions". Хотя, более четкий акцент на этом моменте не повредил бы условию задачи.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[3]: Простая задача
От: nusik1990 Азербайджан  
Дата: 12.11.11 16:49
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, DrDred, Вы писали:


DD>>...

DD>>Второе — правда и в задании это не специфицировано, что делать, если искомый элемент встречается более одного раза, например для слова "amman" что должно быть выведено? 0 или 3?

R>Если условие задачи читать строго:

R>

R>...The program should print the sum of the positions found.

R>то, надо полагать, что "sum of the all positions". Хотя, более четкий акцент на этом моменте не повредил бы условию задачи.

что-то не додумался проверить этот вариант.
сейчас тоже не могу проверить, ибо случайная выборка задач...
спасибо за ответы
Re[4]: Простая задача
От: blackhearted Украина  
Дата: 13.11.11 19:37
Оценка:
Здравствуйте, nusik1990, Вы писали:

N>Здравствуйте, rg45, Вы писали:


R>>Здравствуйте, DrDred, Вы писали:


DD>>>...

DD>>>Второе — правда и в задании это не специфицировано, что делать, если искомый элемент встречается более одного раза, например для слова "amman" что должно быть выведено? 0 или 3?

R>>Если условие задачи читать строго:

R>>

R>>...The program should print the sum of the positions found.

R>>то, надо полагать, что "sum of the all positions". Хотя, более четкий акцент на этом моменте не повредил бы условию задачи.

N>что-то не додумался проверить этот вариант.

N>сейчас тоже не могу проверить, ибо случайная выборка задач...
N>спасибо за ответы

что за сайт?
можно и в личку.
Re[5]: Простая задача
От: nusik1990 Азербайджан  
Дата: 25.11.11 20:43
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>Здравствуйте, nusik1990, Вы писали:


N>>Здравствуйте, rg45, Вы писали:


R>>>Здравствуйте, DrDred, Вы писали:


DD>>>>...

DD>>>>Второе — правда и в задании это не специфицировано, что делать, если искомый элемент встречается более одного раза, например для слова "amman" что должно быть выведено? 0 или 3?

R>>>Если условие задачи читать строго:

R>>>

R>>>...The program should print the sum of the positions found.

R>>>то, надо полагать, что "sum of the all positions". Хотя, более четкий акцент на этом моменте не повредил бы условию задачи.

N>>что-то не додумался проверить этот вариант.

N>>сейчас тоже не могу проверить, ибо случайная выборка задач...
N>>спасибо за ответы

B>что за сайт?

B>можно и в личку.

Отправил.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.