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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлами, Алгоритм не могу продумать. http://www.cyberforum.ru/cpp-beginners/thread359185.html
1. Дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Расставить фразы в этом файле в порядке увеличения количества слов в каждой из них. 2. Компоненты типизированного файла – массивы, состоящие из 6 вещественных чисел. Вывести на экран тот из них, сумма отрицательных элементов которого больше. Компоненты типизированного файла – целые...
C++ Интересное поведение cin.getline(); Доброго времени суток! Я не устаю терроризировать форум своими тупыми вопросами, но для этого он и создан. На этот раз у меня проблема с методом getline(); Имеется код: switch(menuNumber){ case 1: cout << "Input name of the first player: "; cin.getline(namePlayer, sizeof(namePlayer)); ttt.changePlayerName(namePlayer, 0); cout << "Input name of the second player: "; http://www.cyberforum.ru/cpp-beginners/thread359184.html
Проблема с очисткой памяти C++
Здравствуйте! Помогите пожалуйста исправить проблему с очисткой памяти в void memfree(). Заранее спасибо. #include "stdafx.h" #include <windows.h> #include "resource.h" #include <string> #define MAXPOINTS 1000 int ko,key1=0; int kolreb;
дайте наводку, программисты и математики, как делать задачу подобного типа C++
Условие задачи: Найти максимальное значение, которое может быть представлено при использовании типа unsigned char :pardon: P.S.: Нужно написать соответствующую программу
C++ WinAPI Невозможно разрешить идентификатор... http://www.cyberforum.ru/cpp-beginners/thread359169.html
Не понимаю в чем проблема. Начал изучать WinAPI, ну вообщем по учебе. И решил скомпилисть пример из книжки, попробовать. Написал как там, но выдает ошибки(пишу в NetBeans): Невозможно разрешить идентификатор DWORD Невозможно разрешить идентификатор GetLogicalDriveStringsA Невозможно разрешить идентификатор nBufferLength ... код:#include <cstdlib> #include <iostream> #include <winbase.h>
C++ Трабла с прогой "дан радиус окружности. Найти длину окружности и площадь круга" как вычислить подобную задачу на С. Жду ответа. С уважением. подробнее

Показать сообщение отдельно
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1

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

02.10.2011, 00:21. Просмотров 1015. Ответов 2
Метки (Все метки)

Собственно задача: 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;
}
Прошу прощения, если кому-то вопрос показался совсем глупым.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru