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
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;
}
Alte întrebări interesante
Chimie,
8 ani în urmă
Fizică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
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;
}