Форум программистов, компьютерный форум CyberForum.ru

Задача 1567. SMS-спам и проблема двух решений - C++

Восстановить пароль Регистрация
 
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
02.10.2011, 00:21     Задача 1567. SMS-спам и проблема двух решений #1
Собственно задача: http://acm.timus.ru/problem.aspx?space=1&num=1567
Проблема в том, что моё решение со switch'ем даёт правильные результаты, в том числе правильно считает пример, но он-лайн проверку не проходит.
Есть аналогичное решение, через if'ы, и оно проходит проверку.
Вопрос - в чём разница? где моя версия неправильно считает?(
P.S. Альтернативный вариант решения мне известен, но поставленный вопрос не даёт покоя.(
Моё:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <cstdio>
#include <iostream>
char str[1001];
//char str;
int search(char v)
{
    switch (v)
    {
        case 'a' : return 1; break;
        case 'd' : return 1; break;
        case 'g' : return 1; break;
        case 'j' : return 1; break;
        case 'm' : return 1; break;
        case 'p' : return 1; break;
        case 's' : return 1; break;
        case 'v' : return 1; break;
        case 'y' : return 1; break;
        case '.' : return 1; break;
        case ' ' : return 1; break;
 
        case 'b' : return 2; break;
        case 'e' : return 2; break;
        case 'h' : return 2; break;
        case 'k' : return 2; break;
        case 'n' : return 2; break;
        case 'q' : return 2; break;
        case 't' : return 2; break;
        case 'w' : return 2; break;
        case 'z' : return 2; break;
        case ',' : return 2; break;
 
        case 'c' : return 3; break;
        case 'f' : return 3; break;
        case 'i' : return 3; break;
        case 'l' : return 3; break;
        case 'o' : return 3; break;
        case 'r' : return 3; break;
        case 'u' : return 3; break;
        case 'x ': return 3; break;
        case '!' : return 3; break;
    }
    return 0;
}
void main()
{
    int sum = 0;
    gets(str);
    //std::cin>>std::noskipws;
    for(int i = 0; i < strlen(str); ++i) sum += search(str[i]);
    //while (std::cin>>str) sum += search(str);
    printf("%d", sum);
    getchar();
}
*В комментах модификация ввода(думал проблема в нём), при которой я также не смог пройти проверку.

Аналогичное решение проходящее проверку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<iostream>
#include<math.h>
#include<conio.h>
#include<string>
 
using namespace std;
 
int main() {
 char s;
 int count = 0;
 cin >> noskipws;
 while (cin >> s) {
    if ((s=='a')||
        (s=='d')||
        (s=='g')||
        (s=='j')||
        (s=='m')||
        (s=='p')||
        (s=='s')||
        (s=='v')||
        (s=='y')||
        (s=='.')||
        (s==' ')) {count+=1;}
    if ((s=='b')||
        (s=='e')||
        (s=='h')||
        (s=='k')||
        (s=='n')||
        (s=='q')||
        (s=='t')||
        (s=='w')||
        (s=='z')||
        (s==',')) {count+=2;}
    if ((s=='c')||
        (s=='f')||
        (s=='i')||
        (s=='l')||
        (s=='o')||
        (s=='r')||
        (s=='u')||
        (s=='x')||
        (s=='!')) {count+=3;}
 }
 cout << count;
 getch();
 return 0;
}
Прошу прощения, если кому-то вопрос показался совсем глупым.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 00:21     Задача 1567. SMS-спам и проблема двух решений
Посмотрите здесь:

помогите пожалуйста проблема с перегрузкой операторов '-' >> <<, возможно еще с конструктором без параметров наверно проблема C++
C++ Окна обозреветель решений ?
C++ задача на нахождения максимального и минимального из двух натуральных чисел не используя ветвление.
C++ Разработать программу, реализующую алгоритм стека (20 элементов). Задача решается в двух вариантах: статическом и динамическом
простая задача на выявление двух самых больших чисел из ряда C++
C++ sms
C++ Задача о двух прямых
Отправка SMS с компьютера на телефон C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
02.10.2011, 01:09     Задача 1567. SMS-спам и проблема двух решений #2
Whiteha, попробуй убрать void main и поставить int main() {rerurn 0;}
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
02.10.2011, 13:31  [ТС]     Задача 1567. SMS-спам и проблема двух решений #3
Нет, дело не в этом.(
Yandex
Объявления
02.10.2011, 13:31     Задача 1567. SMS-спам и проблема двух решений
Ответ Создать тему
Опции темы

Текущее время: 15:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru