#include #include // Citeste si afiseaza caracter cu caracter un text, pana la sfarsitul // intrarii, incadrand fiecare cuvant intre < si > // Solutia necesita sa identificam inceputul si sfarsitul unui cuvant // Varianta 1: doua cicluri interioare, pentru secventele de spatii // si pentru cuvinte (secvente fara spatii) // din ciclul exterior se iese explicit cu break la EOF void prel1(void) { int c; for (;;) { // conditie adevarata, iese doar cu break; while (isspace(c = getchar())) putchar(c); // citeste/scrie spatiile if (c == EOF) break; // gata, nu mai urmeaza nimic putchar('<'); // marcheaza inceputul de cuvant do putchar(c); // scrie caracter din cuvant while (!isspace(c = getchar()) && c != EOF); // cat timp nu e spatiu putchar('>'); // marcheaza sfarsitul de cuvant if (c == EOF) break; // iese daca nu mai e nimic putchar(c); // scrie si spatiul citit dupa sfarsit de cuvant } } // Varianta 2: un singur ciclu exterior, teste separate pentru // inceput si sfarsit de cuvant; se retine ultimul caracter void prel2(void) { int ult = ' ', c; // initial: ca si cum ar fi fost un spatiu while ((c = getchar()) != EOF) { // cat timp citeste caracter valid if (isspace(ult) && !isspace(c)) // spatiu apoi nu: incepe cuvantul putchar('<'); // marcheaza inceputul de cuvant if (!isspace(ult) && (isspace(c) || c == EOF)) //vine spatiu sau EOF putchar('>'); // marcheaza sfarsitul de cuvant putchar(c); // scrie caracterul curent ult = c; // actualizeaza ultimul cu cel curent } } // Varianta 3: un ciclu interior pentru citirea unui cuvant // spatiile sunt prelucrate separat void prel3(void) { int c; while ((c = getchar()) != EOF) { // cat timp citeste caracter valid if (!isspace(c)) { // daca nu e spatiu incepe cuvantul putchar('<'); // marcheaza inceputul de cuvant do putchar(c); // scrie caracter din cuvant while (!isspace(c = getchar()) && c != EOF); // cat timp nu e spatiu putchar('>'); // marcheaza sfarsitul de cuvant if (c == EOF) break; // iese daca nu mai e nimic } putchar(c); // aici se scriu caracterele de tip spatiu } } int main(void) { prel1(); // sau prel2() sau prel3() return 0; }