Informatică, întrebare adresată de Utilizator anonim, 8 ani în urmă

Definim un cuvant ca fiind un sir nevid format din cel mult 5 caractere ale alfabetului latin,
{’a’, ’b’, . . . , ’z’}. Scrieti o functie C/C++ cu numele value, care are ca argument de intrare un cuvant si returneaza un numar natural. Pentru orice doua cuvinte s1 si s2, functia trebuie sa satisfaca proprietatea: s1 = s2 ⇔ value(s1) = value(s2). In cazul ın care argumentul primit nu este cuvant, functia va returna 0.

Răspunsuri la întrebare

Răspuns de CinevaFaraNume
0

#include <string>

using namespace std;

unsigned long long int value(string s){

if(s.length() == 0 || s.length() > 5)return 0;

bool cuvant = true;

unsigned long long int v = s.length(), p = 6;

for(int i = 0; cuvant && i < s.length(); i++){

 cuvant = s[i] >= 'a' && s[i] <= 'z';

 v += (s[i]-'a') * p;

 p *= 26;

}

if(!cuvant) return 0;

else return v;

}


Petruccinator: #include
typedef unsigned long long int uint64;

uint64 value(const std::string& s)
{
union
{
uint64 valoare=0;
char cuvant[6];
} x;

if((signed) s.length()-5 <= 0)
for(int i=0; s[i]; ++i)
x.cuvant[i]=s[i];

return x.valoare;
}
Petruccinator: //#include
Alte întrebări interesante