Rezolvare completă PbInfo #2635 CapsLock

Cerința

Marcel a primit o tastatura noua de ziua lui. El vrea sa scrie un text folosind doar litere ale alfabetului englez si spatii. El a descoperit tasta CapsLock, care atunci cand este apasata se activeaza. Daca tasta este activata, atunci toate literele care le va scrie in continuare, pana in momentul in care tasta este dezactivata (apasand CapsLock inca o data) vor fi majuscule.

Date de intrare

Fișierul de intrare capslock.in conține pe prima linie tastele apasate de Marcel (daca tasta e litera, atunci este codificata prin litera mica a acestia, daca e spatiu atunci va fi codificata printr-un spatiu iar daca e CapsLock va fi codificata prin simbolul #), fara spatii intre ele;

Date de ieșire

Fișierul de ieșire capslock.out va conține pe prima linie textul scris de Marcel.

Restricții și precizări

  • textul este mai scurt de 255 de caractere
  • el va apăsa tasta CapsLock de maxim 35 ori
  • la început tasta CapsLock este dezactivata.
  • spatiile nu sunt afectate de CapsLock

Exemplu

capslock.in

#s#alut #marcel

capslock.out

Salut MARCEL

Explicație

Tasta CapsLock devine activa de la început și se dezactivează după tasta s → el a scris majuscula S. Tasta CapsLock se activează și la al 2-lea cuvânt și rămâne activă → restul literelor vor fi majuscule.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema CapsLock:

#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("capslock.in");
ofstream fout("capslock.out");

const int MaxN = 300;
char s[MaxN];
short int n;

bool capslock;

int main()
{
    fin.getline(s, MaxN);
    n = strlen(s);

    for(short int i = 0; i < n; ++i)
    {
        if(s[i] == ' '){
            fout << ' ';
            continue;
        }

        if(s[i] == '#'){
            capslock = !capslock;
            continue;
        }

        if(capslock == true)
            fout << (char)((int)s[i] - 32);
        else
            fout << s[i];
    }
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2635 CapsLock

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2635 CapsLock de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!