Pagini recente » Cod sursa (job #629320) | Cod sursa (job #2633310) | Cod sursa (job #2358781) | Cod sursa (job #349551) | Cod sursa (job #2372329)
/**
* 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;
}