ricardomgferreira Posted January 7, 2016 at 09:54 AM Report Share #591538 Posted January 7, 2016 at 09:54 AM (edited) 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 January 7, 2016 at 10:49 AM by ricardomgferreira Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2016 at 11:13 AM Report Share #591543 Posted January 7, 2016 at 11:13 AM tenho algumas dúvidas que estejas a apresentar o problema de forma correcta. podes apresentar o texto original ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
ricardomgferreira Posted January 7, 2016 at 11:39 AM Author Report Share #591546 Posted January 7, 2016 at 11:39 AM (edited) 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 January 7, 2016 at 12:34 PM by ricardomgferreira Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2016 at 01:08 PM Report Share #591556 Posted January 7, 2016 at 01:08 PM podes apresentar o texto original ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
ricardomgferreira Posted January 7, 2016 at 01:47 PM Author Report Share #591567 Posted January 7, 2016 at 01:47 PM (edited) 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 January 7, 2016 at 01:49 PM by ricardomgferreira Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2016 at 05:08 PM Report Share #591590 Posted January 7, 2016 at 05:08 PM mas tens alguma dificuldade em iterar os caracteres de uma string ? é essa a tua dúvida ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
ricardomgferreira Posted January 7, 2016 at 05:49 PM Author Report Share #591595 Posted January 7, 2016 at 05:49 PM Eu tenho dúvida é como faço para comparar o que está em cada posição dos 2 arrays Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted January 7, 2016 at 06:19 PM Report Share #591596 Posted January 7, 2016 at 06:19 PM 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 Portugol Plus Link to comment Share on other sites More sharing options...
ricardomgferreira Posted January 12, 2016 at 03:10 PM Author Report Share #591881 Posted January 12, 2016 at 03:10 PM (edited) Obrigado, ajudou no que quis fazer. Edited January 13, 2016 at 12:42 PM by ricardomgferreira Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now