Блог пользователя dush1729

Автор dush1729, история, 8 лет назад, По-английски

I am trying to solve Niceness of the string but i am getting WA because i think i am unable to process blank lines. For blank lines output will be zero. I am using scanf(" %[^\n]s",a) which will ignore blank lines.

My code

  • Проголосовать: нравится
  • -1
  • Проголосовать: не нравится

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

std::getline()

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Thank you! getline will behave weirdly if we don't ignore \n. So i came across this. Putting cin.ignore() after scanf("%d",&T) and using getline() gave AC.

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится +9 Проголосовать: не нравится

      There is no weirdness in getline:

      size_t n;
      cin >> n;
      string s;
      getline(cin, s); // read pointer is just before the end of line, so the empty line is returned after number reading
      for (size_t i = 0; i < n; i++)
      {
          getline(cin, s); // works, as expected
      }
      
      • »
        »
        »
        »
        8 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        Got it. By adding extra getline before taking string as input we can ignore \n.

»
8 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Replacing scanf("%s",a) with gets(a) may help. But remember to getchar() after scanf("%d",&T) to skip the '\n' in the first line.

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Looks like getchar works a bit faster than cin.ignore(). Thanks!

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    If you want to skip '\n', you can write: scanf("%d\n",&T). But this works with bugs when you debug your program (if you are not reading from the file).

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

scanf is for queers