Rezolvare completă PbInfo #2686 ASCIIComp

Cerința

Numim cuvânt un șir de caractere care nu conține spații și conține cel puțin o literă. Numim valoarea ASCII a unui cuvânt suma codurilor ASCII ale caracterelor care fac parte din acel cuvânt.

Se dă un șir de caractere, care conține litere mici și mari ale alfabetului englez, spații, cifre și alte simboluri. Să se afișeze pe câte un rând valoarea ASCII și cuvintele care au acea valoare, în ordinea crescătoare a valorilor ASCII. Cuvintele cu aceeași valoare a codurilor ASCII sunt afișate pe aceeași linie cu spații între ele în ordinea în care apar în șir.

Date de intrare

Programul citește de la tastatură șirul de caractere.

Date de ieșire

Programul va afișa pe ecran pe câte un rând valoarea ASCII și cuvintele care au acea valoare separate printr-un spațiu, în ordine crescătoare a valorilor codurilor ASCII. Dacă nu există niciun cuvânt în șirul dat se va afișa NU EXISTA.

Restricții și precizări

  • șirul de caractere va avea maximum 255 de caractere.

Exemplu

Intrare

   ana   rem      abc    ad01           22222,    

Ieșire

294 abc ad01
304 ana
324 rem

Explicație

ana are valoarea 304, rem are valoarea 324, abc și ad01 au valoarea 294, iar 22222, nu este cuvânt pentru ca nu conține nicio literă; s-au afișat cuvintele în ordine crescătoare a codurilor ASCII.

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

#include<bits/stdc++.h>
using namespace std;

vector<int> z(64000);

int main()
{
    vector<int> w;
    int sum=0,ok=0,okk=0;
    string s;
    getline(cin,s);
    istringstream buffer(s);
    vector<string> v;
    for(string word;buffer>>word;)
        v.push_back(word);
    for(int i=0;i<v.size();i++)
    {
        s=v[i],sum=0,ok=0;
        for(int j=0;j<s.size();j++)
        {
            if(isalpha(s[j]))
                ok=1;
            sum+=s[j];
        }
        if(ok==1 && z[sum]==0)
        w.push_back(sum),z[sum]++,okk=1;
        else
        if(ok==0)
        v.erase(v.begin()+i),i--;
    }
    if(okk==0)
    {
        cout<<"NU EXISTA";
        return 0;
    }
    sort(w.begin(),w.end());
    for(int i=0;i<w.size();i++)
    {
        cout<<w[i]<<" ";
        for(int j=0;j<v.size();j++)
        {
            s=v[j],sum=0;
            for(int k=0;k<s.size();k++)
                sum+=s[k];
            if(sum==w[i])
                cout<<s<<" ";
        }
        cout<<'\n';
    }
}

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 #2686 ASCIIComp

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