ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1446. Волшебная шляпа

Something with getline() function . Please let me know...
Послано Yermakov Alex <ONPU> 29 апр 2010 23:39
#include <iostream>
#include <string.h>
int main() {
    char grif[1001][202],sliz[1001][202],huff[1001][202],rave[1001][202],name[202],group[20];
    int n,i,gcur=0,scur=0,hcur=0,rcur=0;
    std:: cin >> n;
    while( n>=0 )
    {
                  std:: cin.getline(name,202);
                  std:: cin.getline(group,20);

                                if(!strcmp(group,"Slytherin"))  { strcpy(sliz[scur],name); scur++; }
                                if(!strcmp(group,"Hufflepuff")) { strcpy(huff[hcur],name); hcur++; }
                                if(!strcmp(group,"Gryffindor")) { strcpy(grif[gcur],name); gcur++; }
                                if(!strcmp(group,"Ravenclaw"))  { strcpy(rave[rcur],name); rcur++; }

                  --n;
    }

    std::cout<<"Slytherin:\n";
    for( i=0; i<scur; ++i ) std:: cout << sliz[i] << '\n';
    std::cout<<'\n';

    std::cout<<"Hufflepuff:\n";
    for( i=0; i<hcur; ++i ) std:: cout << huff[i] << '\n';
    std::cout<<'\n';

    std::cout<<"Gryffindor:\n";
    for( i=0; i<gcur; ++i ) std:: cout << grif[i] << '\n';
    std::cout<<'\n';

    std::cout<<"Ravenclaw:\n";
    for( i=0; i<rcur; ++i ) std:: cout << rave[i] << '\n';
    std::cout<<'\n';

    return 0;
    }
Re: Something with getline() function . Please let me know...
Послано Egor 11 ноя 2016 13:26
This is madness! Don't write such code =)

int main()
{
  int students;
  cin >> students;

  map< string, vector<string> > house_to_students;
  for (int student = 0; student < students; student++)
  {
    cin.ignore();

    string student_name;
    getline(cin, student_name);

    string house;
    cin >> house;

    house_to_students[house].push_back(student_name);
  }

  for (auto house : { "Slytherin", "Hufflepuff", "Gryffindor", "Ravenclaw" })
  {
    cout << house << ":" << endl;

    for (auto student : house_to_students[house])
      cout << student << endl;

    cout << endl;
  }
}
Re: Something with getline() function . Please let me know...
Послано Gural 10 янв 2017 21:30
It happened bcs of cin function
In the input they give n and endl after n;
so, somehow getline reads this endl as a string, so you can do this
insted of "cin>>n"
use "scanf("%d\n", &n);