Rezolvare completă PbInfo #857 Multimi4

Cerința

Gigel învaţă la matematică despre mulţimi. A scris pe foaie o mulţime formată din litere mari şi mici ale alfabetului englez, considerate identice. A separat elementele cu virgule (,) şi a delimitat mulţimea cu acolade. Din păcate, în mulţimea scrisă de Gigel se pot repeta litere, sau pot să apară şi litera mare şi litera mică. Gigel vă roagă să-l ajutaţi să corecteze acea mulţime, adică:

  • să eliminaţi dublurile;
  • să ordonaţi alfabetic elementele;
  • dacă cel puţin jumătate dintre elementele iniţiale sunt litere mari, să transformaţi toate elementele în litere mari; în caz contrar să transformaţi toate elementele în litere mici.

Date de intrare

Programul citește de la tastatură mulţimea iniţială.

Date de ieșire

Programul va afișa pe ecran mulţimea corectată, delimitată de acolade şi cu elementele separate prin câte o virgulă.

Restricții și precizări

  • numărul total de caractere din mulţimea dată este cel mult 255

Exemplu

Intrare

{b, A, C,  a}

Ieșire

{A,B,C}

Explicație

S-au afişat litere mari deoarece numărul de elemente litere mari este 2, adică cel puţin jumătate din numărul total de elemente ale mulţimii iniţiale – 4.

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 Multimi4:

#include <iostream>
#include <cstring>
using namespace std;

int v[26];

int main()
{
    char s[256];
    int mari = 0, mici = 0;
    cin.getline(s , 256);
    for(int i = 0 ; s[i] ; i ++)
        if(s[i] >='a' && s[i] <='z')
            mici ++ , v[s[i] - 'a'] = 1;
        else
            if(s[i] >='A' && s[i] <='Z')
                mari ++ , v[s[i] - 'A'] = 1;
    int pp = 0;
    cout << "{";
    for(int i = 0 ; i < 26 ; i ++)
        if(v[i])
        {
            if(pp)
                cout << ",";
            if(mari >= mici)
                cout << (char)('A'+i);
            else
                cout << (char)('a'+i);
            pp = 1;
        }
    cout << "}";
    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 #857 Multimi4

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #857 Multimi4 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!