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 maxim 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
.
#include <bits/stdc++.h> using namespace std; char m[260][260]; int tygo = 0; bool lit(char ch) { return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'); } bool ok(char s[]) { int i = 0; while(s[i]) { if(lit(s[i])) return 1; i++; } return 0; } int sca(char s[]) { int i = 0; int sum = 0; while(s[i]) { sum+=(int)s[i]; i++; } return sum; } void sterg(char s[]) { s[0]='\0'; } int main() { char s[256]; cin.getline(s , 300); int i = 0 , cnt = 1 , j = 0; while(s[i]!='\0') { if(s[i]!=' ') { m[cnt][j]=s[i]; j++; } if(s[i]==' ' && s[i+1]!=' ') { cnt++; j=0; } i++; } int v[101]; for( i = 1 ; i <= cnt ; ++i) if(ok(m[i])) v[i] = sca(m[i]); for( i = 1 ; i <= cnt ; ++i) for(j = i ; j <= cnt ; ++j) if(v[i] >= v[j]) swap(v[i] , v[j]); for( i = 1 ; i <= cnt ; ++i) { bool oky = false; for(j = 1 ; j <= cnt ; ++j) { if(sca(m[j])==v[i] && ok(m[j])) oky=true; } if(v[i]!=v[i-1] && v[i]!=0 && oky) { cout << v[i] << ' '; for(j = 1 ; j <= cnt ; ++j) { if(sca(m[j])==v[i] && ok(m[j])) cout << m[j] << ' '; } tygo++; if(i != cnt) cout << endl; } } if(!tygo) cout << "NU EXISTA"; return 0; }