Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

agj

String

Recommended Posts

Pessoal no meu sistema que eu estou desenvolvendo, em uma certa parte eu armazeno valores ou caracteres em uma string.por exemplona string "S1" o meu conteudo eh este (abcdef).o meu problema eh o seguinte o usuario me informa um caracter e eu preciso verificar se este caracter esta na string "S1".como eu faço isto?? agradeço qualquer ajuda...valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma string, no grosso modo, eh um vetor de caracteres.

 

ela pode ser analizada elemento por elemento atraves de um indice..

por exemplo..

for(int i=0;i<length(S1);i++)	if(S1[i] == 'a') cont++;

estou analizando caractere por caractere da string e se algum for igual ao caractere 'a' eu incremento uma variavel contadora..

 

no final terei qtos caracteres 'a' existem em minha string..

eh soh implementar este codigo simples com seu problema..

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok muito obrigado....soh mudei um pouco ao inves do length usei o SIZE(), mas o meu problema eh um pouco mais complexo, eu analizo o caracter enformado pelo usuario, verifico se ele existe na string, se exestir eu armazeno na matriz, se nao exestir e retorno para que o usuario informe outro caracter.

 

segue um trecho do codigo

 

for (i=0; i<3; i++)

{

cout << "Informe o estado de origem: " ;

cin >> n;

for(k=0; k<s2.size(); k++){

if(s2[k] == 'n')

{

MT [0] = n; // como ficaria esta linha ???????? aqui ele deve armazenar na matriz

}

else

{

cout << "Estado nao existe" ;

system("PAUSE");

}

}

 

neste codigo ainda esta faltando o retorno caso o caracter nao exista...como ficaria este retorno????

 

estou tentando "consertar" este codigo.

 

Se alguem puder me ajudar eu agradeço..

 

valew....

Compartilhar este post


Link para o post
Compartilhar em outros sites

n eh bom q sua matriz seja controlada pelo indice i do for, pois pode acontecer q o usuario entre com um caractere que naum existe na string, aew sua matriz ia ficar com um "buraco"..

 

use um indice independente do laço q soh sera incrementado se a condiçao do if for verdadeira..

 

for (i=0,j=0; i<3; i++)

{

cout << "Informe o estado de origem: " ;

cin >> n;

for(k=0; k<s2.size(); k++){

if(s2[k] == n) // aki eu retirei as aspas da varivel n

{

MT [j][0] = n;

j++;

}

else

{

cout << "Estado nao existe" ;

system("PAUSE");

}

}

mas, caso você queira implementar isto como uma função, aconselho trabalhar com ponteiros..

 

int findcharinstr(string s2;char n;int *cont)
onde s2 sera a sua string

n o caracterer q o usuario entrou

e cont eh uma variavel contadora..

 

obs.: para utilizar o tipo string incluir a biblioteca string.h..

 

flw

qq coisa posta aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

é claro que não quero os voços algoritmos em questão mas mal olhei notei logo um grave erro (nem reparei aos códigos) que muitos programadores cometem ONDE ESTÁ a IDENTAÇÂOquando alguem analisa um código deve ver sem qualquer esforço as estruturas, eu li um decumento sobre algrimtia (identação e mais coisas ) vou procurar depois deixo aqui o endereço!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não se você percebeu, mas a tag "Adicionar Quote" do nosso editor do forum não permite a inserção de varios caracteres em branco (excenciais para a identação do codigo)..

a solução seria escrever este codigo dentro das tags "Code" de nosso editor, mas este naum permite a inserção de caracteres em negrito..

 

Eu, com a necessidade de destacar a variavel j dentro de meu codigo, optei em utilizar a tag "Adicionar Quote"..

 

Não cabe fazer este tipo d comentario sobre os codigos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

valew as dicas....mas consegui resolver este problema de uma outra maneira.... utilizei o DO WHILE e mais uma variavel boleana pra controlar o estado da minha varivel, pode não ser a maneira mais inteligente mas funciona perfeitamente...

 

aqui esta um trechinho do codigo

 

for (j=1; j<=3; j++)

{

do

{

ok = false;

cout << "Informe o Simbolo: ";

cin >> n;

cout << "-------------------------------------------------"<<endl;

for (k=0; k<=s1.size(); k++)

{

if(s1[k] == n)

{

MT [j] = n;

ok = true;

j++;

}

}

if(ok == false)

{

cout << "Simbolo Invalido:" << endl;

cout << "-------------------------------------------------"<<endl;

cout << endl;

}

} while (ok == false);

Compartilhar este post


Link para o post
Compartilhar em outros sites

p**** nem mesmo depois de avisar.Por acaso não notas uma enorme dificuldade em encontrar as estruturas !!!! EU NOTOCypher :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

for (j=1; j<=3; j++){	  do{			ok = false;			cout << "Informe o Simbolo: ";			cin >> n;			cout << "-------------------------------------------------"<<endl;			for (k=0; k<=s1.size(); k++){				  if(s1[k] == n){						MT [i][j] = n;						ok = true;						j++;				  }			}			if(ok == false){				  cout << "Simbolo Invalido:" << endl;				  cout << "-------------------------------------------------"<<endl;				  cout << endl;		   }	  } while (ok == false);}

seria mais assim....

 

agora a sério não se notão melhor as estruturas, pondo um ao lado do outro qual é que se analiza mais depressa...

 

 

levem esta critica como uma critica construtiva

 

Cypher :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ya isso mas também um parte do forum como existe para o vb, c/c++,etc para o PASCAL, será para inferiorizar esta linguagem magnifica??Cypher :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.