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

Задача с Тимуса 1446 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача из Лафоре http://www.cyberforum.ru/cpp-beginners/thread920966.html
Для разъяснения действия наших доморощенных указателей мы смоделируем память компьютера с помощью массивов. Так как доступ к массивам всем понятен, то вы сможете увидеть, что реально происходит, когда мы используем для доступа к памяти указатели. Мы будем использовать один массив типа char для хранения всех типов переменных. Именно так устроена память компьютера: массив байтов, каждый из...
C++ Графическое приложение Здравствуйте форумчане, возник вопрос на который хотелось бы получить вашу помощь, выполняю работу где требуется написать графическое приложение. Само приложение написано и работа почти доделана, но требуется дополнить работу теорией: что такое графическое приложение, классификация граф. приложений и т.д., но не могу найти литературу чтобы в ней была именно теория, в основном нахожу где... http://www.cyberforum.ru/cpp-beginners/thread920921.html
C++ Работа с типами данных в массиве
Всем доброго времени суток , помогите выяснить одну вещь. Есть у меня массив типа char. Вот к примеру {1f-21df } Каким образом можно преобразовать тип элементов массива в int, чтобы в нем можно было работать как с типом int. Заранее спс всем за понимание. Добавлено через 43 секунды Ой ну и конечно буковки то откинуть.....
Наследование C++
Здравствуйте уважаемые форумчане!!! Вот написал код с наследованием, я бы хотел его усовершенствовать но не знаю как. Вот что именно я бы хотел добавить в этот код: Я написал ID ученика в этом случае 286. Я не могу сделать так чтобы Teacher (учитель) накричал (Cry) на этот ID(то есть на ученика который находится под ID = 286) и потом Dekan (декан) выгнал (kickout) бы этот ID (ученика). Помогите,...
C++ Ошибка invalid use of member http://www.cyberforum.ru/cpp-beginners/thread920862.html
Вот код. if (variety == a1.seta cout << a1.seta; else cout << "This sort is not.Try again." << endl; В ошибке показывает вот это: invalid use of member (did you forget the `&' ?)
C++ Полиморфизм, дружественные функции Всем привет! Имеется такая конструкция: class Base { public: Base(); Base(int n) {}; virtual ~Base() {}; подробнее

Показать сообщение отдельно
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
10.07.2013, 17:11     Задача с Тимуса 1446
Всем привет. Я несколько дней бился над задачей с Тимуса. Вот ссыль: вырезано Задача не сложная - просто ввести строки, например, в 4 вектора и вывести их. Но я столкнулся с проблемой в считывании. Я не знаю, что там может быть, но система как-то странно себя ведет: то WA, Runtime Error, Memory Limit. Я написал решение:
Решение №1
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <istream>
#include <ostream>
#include <cstdio>
#include <string>
#include <vector>
#include <cctype>
 
#pragma once
 
using namespace std;
 
class School
{
public:
    string gryffindor() const { return "Gryffindor"; }
    string slytherin() const { return "Slytherin"; }
    string hufflepuff() const { return "Hufflepuff"; }
    string ravenclaw() const { return "Ravenclaw"; }
    School() { fac_gryffindor.clear(); fac_slytherin.clear(); fac_hufflepuff.clear(); fac_ravenclaw.clear(); }
    void add_gryffindor(string s) { fac_gryffindor.push_back(s); }
    void add_slytherin(string s) { fac_slytherin.push_back(s); }
    void add_hufflepuff(string s) { fac_hufflepuff.push_back(s); }
    void add_ravenclaw(string s) { fac_ravenclaw.push_back(s); }
    void print(ostream&);
private:
    vector<string> fac_gryffindor;
    vector<string> fac_slytherin;
    vector<string> fac_hufflepuff;
    vector<string> fac_ravenclaw;
    void print_vector(const vector<string>&, const string, ostream&, const bool) const;
};
 
void School::print(ostream& os)
{
    print_vector(fac_slytherin, slytherin(), os, true);
    print_vector(fac_hufflepuff, hufflepuff(), os, true);
    print_vector(fac_gryffindor, gryffindor(), os, true);
    print_vector(fac_ravenclaw, ravenclaw(), os, false);
}
 
void School::print_vector(const vector<string>& arr, const string name, ostream& os, const bool print_newline) const
{
    os << name << ":\n";
    for (int i = 0; i<arr.size(); ++i)
        os << arr[i] << '\n';
    if (print_newline)
        os << '\n';
}
 
void enter_names(School& s, istream& is)
{
    int n;
    is >> n;
    std::cin.ignore();
    for (int i = 0; i<n; ++i)
    {
        string name;
        getline(is, name);
        is.clear();
        string faculty;
        getline(is, faculty);
 
        if (faculty == s.gryffindor())
            s.add_gryffindor(name);
        if (faculty == s.hufflepuff())
            s.add_hufflepuff(name);
        if (faculty == s.ravenclaw())
            s.add_ravenclaw(name);
        if (faculty == s.slytherin())
            s.add_slytherin(name);
    }
}
 
int main()
{
#ifndef ONLINE_DEBUG
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
 
    School Hogwarts;
    enter_names(Hogwarts, std::cin);
    Hogwarts.print(std::cout);
    return 0;
}

Тестирующая система выбила TILE (Time Limit Exceeted). Я засмущался в потоках (хотя все должно быть быстро - не так уж и много входных данных) и написал решение с cstdio.
Решение №2
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <cstdio>
#include <cstring>
 
#pragma comment(linker, "/STACK:50331648")
 
int main()
{
#ifndef ONLINE_DEBUG
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    
    char a[1001][201];
    char b[1001][201];
    char c[1001][201];
    char d[1001][201];
    int a_len = 0, b_len = 0, c_len = 0, d_len = 0, n;
    char cc;
    
    scanf("%d", &n);
    getchar();
    for (int i = 0; i<n; ++i)
    {
        char name[201];
        gets(name);
        getchar();
        char faculty[2001];
        gets(faculty);
        getchar();
 
        if ( strcmp("Slytherin", faculty) == 0 )
        {
            strcpy(a[a_len], name);
            ++a_len;
        }
 
        if ( strcmp("Hufflepuff", faculty) == 0 )
        {
            strcpy(b[b_len], name);
            ++b_len;
        }
 
        if ( strcmp("Gryffindor", faculty) == 0 )
        {
            strcpy(c[c_len], name);
            ++c_len;
        }
 
        if ( strcmp("Ravenclaw", faculty) == 0 )
        {
            strcpy(d[d_len], name);
            ++d_len;
        }
    }
 
    printf("%s\n", "Slytherin:");
    for (int i = 0; i<a_len; ++i)
        printf("%s\n", a[i]);
    printf ("\n");
 
    
    printf("%s\n", "Hufflepuff:");
    for (int i = 0; i<b_len; ++i)
        printf("%s\n", b[i]);
    printf ("\n");
 
    
    printf("%s\n", "Gryffindor:");
    for (int i = 0; i<c_len; ++i)
        printf("%s\n", c[i]);
    printf ("\n");
 
    
    printf("%s\n", "Ravenclaw:");
    for (int i = 0; i<d_len; ++i)
        if (i < d_len-1)
            printf("%s\n", d[i]);
        else
            printf("%s", d[i]);
    
    return 0;
}

Что может быть не так?
Примечание: исходные коды могут незначительно отличаться от оригинала в связи с туевой хучей попыток сдачи задачи.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru