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

getline vs посимвольный ввод - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка с двоичным включением http://www.cyberforum.ru/cpp-beginners/thread982868.html
Продемонстрируйте в виде таблицы работу алгоритма сортировки с двоичным включением на массиве 15,4,10,8,6,9,16,1 по возрастанию. Помогите, как это будет выглядеть? Код программы не нужен, чисто таблицу.
C++ Дописать код о удаление строк и столбцов с матрицы Данная программа находит Мax элемент в данной матрицы и указывает строку и столбец его нахождения. Нужно дописать, чтобы получалась новая матрица путем удаления этой строки и столбца Max элемента. Буду признателен кто поможет. clude <iostream.h> #include <windows.h> #include <time.h> int main() { SetConsoleOutputCP(1251); http://www.cyberforum.ru/cpp-beginners/thread982864.html
C++ Как объединить два массива в один?
Вот к примеру есть два массива: int A={1,2,3,4}; int B={5,6,7,8}; Как создать третий массив С , в котором будут содержаться элементы массива А и В, но так , чтобы массив С был такой: int C={1,5,2,6,3,7,4,8} Ну или просто хотя бы объединить , чтобы массив С =1,2,3,4,5,6,7,8 ? Помогите, пожалуйста ) Добавлено через 9 минут Объединить у меня получилось так:
Доступ к области памяти из другого класса C++
Есть класс в котором создаётся область в памяти, как получить из другого класса доступ к этой облпсти в возможностью перезаписи? В примере много чего вырезано, но более ли мение ясно. class Class_1 { private: public: void function_1()
C++ Удаление строк из двумерного массива http://www.cyberforum.ru/cpp-beginners/thread982843.html
Вот мой код, но он удаляет только 1 строку, мне надо переделать его так чтобы я вводил числа A и B и удалялись строки от А до Б но размер массива не менялся и в конце дописывались нулевые строки #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h>
C++ Найти сумму ряда(сделать последний шаг) здраствуйте я учусь не на програмиста но нам задали 3 лабораторные работы по С++ и сказали разобратся самим и решить, на этом изучение закончилось (но лабы я еще не сделал) в третей лабе нужно найти сумму ряда , часть я уже нагуглил#include <iostream> #include <cmath> using namespace std; int main() { float sum1=0, sum2=0, y, x; for (x=4; x<=7.5; x+=0.3) {sum1=111111111; подробнее

Показать сообщение отдельно
Мозготрёп
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 43
20.10.2013, 21:07     getline vs посимвольный ввод
Задача http://acm.timus.ru/problem.aspx?space=1&num=1446 (тимус)
Кликните здесь для просмотра всего текста
1446. Волшебная шляпа
Ограничение времени: 1.0 секунды
Ограничение памяти: 64 МБ
В начале каждого учебного года в Хогвартсе происходит исключительно важное событие — распределение юных колдунов по факультетам. Находчивые и изобретательные попадают в Слизерин, отважные — в Гриффиндор, трудолюбивые — в Хаффлпаф, а сообразительные — в Рэйвенкло. Распределение проходит следующим образом: когда называется фамилия очередного первокурсника, он выходит в центр зала и надевает знаменитую шляпу Гриффиндора. Шляпа, оценив обстановку в голове колдуна или ведьмы, громко выкрикивает факультет. Специальный эльф ведет протокол распределения. После распределения ему надо срочно составить список учеников по факультетам. Члены общества Против Угнетения Колдовских Народов-Изгоев предлагают вам помочь уставшему за много лет эльфу в этом нелегком деле.
Исходные данные
В первой стоке указано количество учеников-первогодников N (1 ≤ N ≤ 1000). В следующих 2N строках указаны их имена и факультеты, которые назвала шляпа. Имя ученика может содержать прописные и заглавные буквы латинского алфавита, пробелы и знак дефиса. Длина каждого имени не больше 200 символов.
Результат
Выведите список учеников по факультетам: сначала название факультета, потом двоеточие, в следующих сроках список учеников по одному в строке. Первым должен идти список Слизерина, потом — Хаффлпаф, Гриффиндор, и Рэйвенкло. Между списками факультетов надо оставлять пустую строку. Ученики в списках по факультетам должны идти в том же порядке, в котором их вызывали на примерку шляпы. Известно, что каждый год на каждый факультет попадает по крайней мере один ученик.


Этот вариант кода работает бесконечно:
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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
int main() {
    vector<string> Slytherin, Hufflepuff, Gryffindor, Ravenclaw;
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        string s, s1;
        char c;
        cin >> c;
        while (c!='\n')
        {
            s+=c;
            cin >> c;
        }
        cin >> s1;
    //  cout << s << endl << s1 << endl;
        if (s1 == "Slytherin") Slytherin.push_back(s);
        else if (s1 =="Hufflepuff") Hufflepuff.push_back(s);
        else if (s1 =="Gryffindor") Gryffindor.push_back(s);
        else if (s1 =="Ravenclaw") Ravenclaw.push_back(s);
    }
    if (Slytherin.size()>0)
    {
        cout << "Slytherin:" << endl;
        for (int i = 0; i < Slytherin.size(); i++)
            cout << Slytherin[i] << endl;
    }
    if (Hufflepuff.size()>0)
    {
        cout<< endl << "Hufflepuff:" << endl;
        for (int i = 0; i < Hufflepuff.size(); i++)
            cout << Hufflepuff[i] << endl;
    }
    if (Gryffindor.size()>0)
    {
        cout<< endl << "Gryffindor:" << endl;
        for (int i = 0; i < Gryffindor.size(); i++)
            cout << Gryffindor[i] << endl;
    }
    if (Ravenclaw.size()>0)
    {
        cout<< endl << "Ravenclaw:" << endl;
        for (int i = 0; i < Ravenclaw.size(); i++)
            cout << Ravenclaw[i] << endl;
    }
    return 0;
}
Если сделать так
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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
int main() {
    vector<string> Slytherin, Hufflepuff, Gryffindor, Ravenclaw;
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        string s, s1;
                getline (cin, s);
        cin >> s1;
    //  cout << s << endl << s1 << endl;
        if (s1 == "Slytherin") Slytherin.push_back(s);
        else if (s1 =="Hufflepuff") Hufflepuff.push_back(s);
        else if (s1 =="Gryffindor") Gryffindor.push_back(s);
        else if (s1 =="Ravenclaw") Ravenclaw.push_back(s);
    }
    if (Slytherin.size()>0)
    {
        cout << "Slytherin:" << endl;
        for (int i = 0; i < Slytherin.size(); i++)
            cout << Slytherin[i] << endl;
    }
    if (Hufflepuff.size()>0)
    {
        cout<< endl << "Hufflepuff:" << endl;
        for (int i = 0; i < Hufflepuff.size(); i++)
            cout << Hufflepuff[i] << endl;
    }
    if (Gryffindor.size()>0)
    {
        cout<< endl << "Gryffindor:" << endl;
        for (int i = 0; i < Gryffindor.size(); i++)
            cout << Gryffindor[i] << endl;
    }
    if (Ravenclaw.size()>0)
    {
        cout<< endl << "Ravenclaw:" << endl;
        for (int i = 0; i < Ravenclaw.size(); i++)
            cout << Ravenclaw[i] << endl;
    }
    return 0;
}
вводится какойто НЁХ. Как впрочем и с
C++
1
cin >> s; sin >> s1;
Кто-нибудь может подсказать проблему.

Добавлено через 7 минут
Формат ввода
Кликните здесь для просмотра всего текста
7
Ivan Ivanov
Gryffindor
Mac Go Nagolo
Hufflepuff
Zlobeus Zlei
Slytherin
Um Bridge
Slytherin
Tatiana Henrihovna Grotter
Ravenclaw
Garry Potnyj
Gryffindor
Herr Mionag-Ranger
Gryffindor

Вывода
Кликните здесь для просмотра всего текста
Slytherin:
Zlobeus Zlei
Um Bridge

Hufflepuff:
Mac Go Nagolo

Gryffindor:
Ivan Ivanov
Garry Potnyj
Herr Mionag-Ranger

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