Jump to content

Função Char para verificar caracter a caracter


ricardomgferreira
 Share

Recommended Posts

ricardomgferreira

Bom dia sou novo em c++, porém estou a fazer um programa para comparar 2 arrays do tipo char.

O que preciso é de saber o tipo de caracter q está no array valor (se é numero ou letra) e comparar com o do array mask.

Se o caracter for um número e q seja igual nos dois arrays... grava no array mask o resultado do array valor mas com # no fim

Se o caracter for uma letra e q seja igual nos dois arrays... grava no array mask o resultado do array valor mas com @ no fim

Se o caracter for diferente nos dois arrays... grava no array mask o resultado do array valor mas com % no fim.

O que fiz por agora foi isto:

CHAR CompareCharacter(CString valor, CString *mask)

{

int i;

int quantos = 0;

for(i=0;i<valor.GetLength;i++) {

if (valor == mask) quantos++;

}

}

Caso me possam ajudar agradecia

Edited by ricardomgferreira
Link to comment
Share on other sites

ricardomgferreira

Eu preciso de pegar nos arrays 'valor' e 'mask', percorrê-los posição a posição e saber se em cada posição está um número ou uma letra.

Caso sejam só números em ambos os arrays, guardo o valor inicial do array 'valor' e vou guardar no array 'mask' substituindo o ultimo caracter por #

Caso sejam só letras em ambos os arrays, guardo o valor inicial do array 'valor' e vou guardar no array 'mask' substituindo o ultimo caracter por @

EX:

int valor = 1225;

int mask = 1200;

for (//compara os 2 arrays caracter a caracter)

if(valor && mask == numero)

// pega no valor inicial do array 'valor' 1225 e guarda no array 'mask' com o valor 122#

else if(valor && mask == letra)

// pega no valor inicial do array 'valor' ABCD e guarda no array 'mask' com o valor ABC@

else

// pega no valor inicial do array 'valor' 172B1 e guarda no array 'mask' com o valor 172%

Edited by ricardomgferreira
Link to comment
Share on other sites

ricardomgferreira

Esse é tudo o que tenho para explicar.

Eu posso é enviar todo o código que está feito...

Eu peguei num trabalho feito por outra pessoa e ficou-me encarregue a mim para acabar.

CHAR CompareCharacters(char valor, char *masc) {

//Aqui é para ser feito o que tenho estado a tentar explicar

}

BOOL GeneralizeMask(CString valor, CString *mask)

{

int i;

BOOL res = FALSE;

if (valor.GetLength()==mask->GetLength()) {

for (i=0; i < valor.GetLength(); i++) {

if (valor!=mask->GetAt(i)) {

// usar a função CompareCharacters

}

}

res = TRUE;

}

return res;

}

void CMaskGenerator::Generate(CStringArray &valor, CPtrArray *mascara)

{

CGeneratedMask *maskP;

int i, j;

CString str;

if (valor.GetCount()>1) {

maskP = new CGeneratedMask();

maskP->m_mask = valor[0];

maskP->m_ocorrencias++;

mascara->Add(maskP);

for(i=1;i<valor.GetCount();i++) {

str = valor;

for(j=0;j<mascara->GetCount();j++) {

maskP = (CGeneratedMask *) mascara->GetAt(j);

if (!GeneralizeMask(str, &(maskP->m_mask))) {

maskP = new CGeneratedMask();

maskP->m_mask = str;

maskP->m_ocorrencias++;

mascara->Add(maskP);

}

}

}

}

}

Edited by ricardomgferreira
Link to comment
Share on other sites

HappyHippyHippo

podes aceder a qualquer elemento da string através do operador de indexação:

std::string str = "ping";
for (size_t i = 0; i < str.size(); ++i) {
   std::cout << "letra[" << i << "] = " << str[i] << std::endl;
}
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.