Cod sursa(job #2372329)

Utilizator alexghitaAlexandru Ghita alexghita Data 7 martie 2019 03:22:50
Problema Text Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
/**
 * Citim fiecare caracter din fișierul de intrare, ținând cont de lungimea
 * cuvântului curent, lungimea totală a cuvintelor întâlnite și numărul de
 * cuvinte întâlnite.
 * 
 * Dacă dăm de un caracter care nu este literă, actualizăm numărul de cuvinte
 * și lungimea totală, și resetăm lungimea cuvântului curent.
 */

#include <bits/stdc++.h>

using namespace std;

int main() {
  freopen("text.in", "r", stdin);
  freopen("text.out", "w", stdout);

  char c;
  int num_of_words = 0;
  int total_word_length = 0;
  int current_word_length = 0;

  while (cin.get(c)) {
    // Dacă dăm de un caracter care nu e literă, înseamnă că am ajuns la capătul
    // unui cuvânt (dacă acesta are lungime nenulă). Această actualizare se va
    // face și pentru ultimul cuvânt, chiar dacă ultimul caracter din text este
    // o literă, deoarece oricum vom avea caracterul de sfârșit de linie după,
    // deci nu trebuie să tratăm acest caz separat.
    if (!isalpha(c)) {
      // Dacă avem un cuvânt, actualizăm statisticile.
      if (current_word_length) {
        num_of_words++;
        total_word_length += current_word_length;
      }
      // Resetăm lungimea cuvântului curent.
      current_word_length = 0;
    } else {
      current_word_length++;
    }
  }

  cout << total_word_length / num_of_words;
}