Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida De Iniciante


SasukeUchiha

Pergunta

Eu já tentei mas não consigo. Como eu faço pro usuário que for utilizar meu programa possa escrever palavras e o meu programa ler a palvara que ele escreveu e executar um comando?

Por exemplo

main()

char nome,victor,felipe;

int idade;

cout<<, "Digite o nome que voce deseja:";

cin>>nome

if (nome=victor) idade=18;

if (nome=felipe) idade=17;

else idade=6;

cout<< "A idade de e: "<<idade<<endl;

nad a ver o programa.. mas o que está errado nele? eu queria que o usuário digitasse "felipe" ou "victor" e então a constante "idade" assumiria 18 ou 17 ou 0.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Opa!

O tipo de dados que voce utilizara sera string, que e um array (ou um ponteiro para) um char. Sendo assim, a sua declaracao ficara assim:

char *nome;
char n1[] = "victor", n2[] = "felipe";
int idade;
A primeira linha declara um ponteiro para um char. A segunda declara dois arrays sem tamanho definido para voce inicializar a sua string. Para comparar duas strings, voce tem que usar a funcao strcmp(), que retorna 0 caso as duas strings que voce forneceu como parametros forem iguais. então, para comparar:
if ( strcmp( nome, n1 ) == 0 )
    idade=18;
if ( strcmp( nome, n2 )== 0 )
    idade=17;
else
    idade=6;

Ate mais!

Link para o comentário
Compartilhar em outros sites

  • 0

Opa wicker.. brigaod por responder.. mas olha só o programa que eu fiz. O que tá errado nele? Quando eu coloco o nome "naruto" ou "sakura" aparece que executou uma ação ilegal e fecha.

o programa:

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{char *nome;

char n1[]="naruto",n2[]="sakura";

int ch;

cout<<"Entre com o nome do personagem: ";

cin>>nome;

if (strcmp(nome, n1)==0) ch=1000;

if (strcmp(nome, n2)==0) ch=600;

else ch=0;

cout<<"O chakra do personagem e de: "<<ch<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

valeu!

Link para o comentário
Compartilhar em outros sites

  • 0

Opa!

Você deve, antes de ler para a string "nome" usando "cin", alocar dinamicamente memória para o ponteiro. Para isso, use o operador "new" da seguinte forma:

nome = new char;
Depois, para liberar a memória urilizada (quando ela não for mais útil), use o operador "delete" da seguinte forma:
delete nome;

Para mais informações sobre alocação dinâmica com "new", clique aqui.

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

Ae! Agora não tá dando mais o erro de fechar. Mas quando eu escrevo "sakura", ele aparece 600, que é o que eu queria. Mas quanod eu escrevo "naruto", ele aparece 0 quando pelo programa naruto deveria aparecer 1000. O que está errado agora?

O programa ( é o mesmo mas com o new char):

#include <cstdlib>

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{char *nome;

char n1[]="naruto",n2[]="sakura";

int ch;

nome= new char;

cout<<"Entre com o nome do personagem: ";

cin>>nome;

if (strcmp(nome,n1)==0)

ch=1000;

if (strcmp(nome,n2)==0)

ch=600;

else

ch=0;

cout<<"O chakra do personagem e de: "<<ch<<endl;

system("PAUSE");

return EXIT_SUCCESS;

}

Desde já agradeço por estar me ajudando ^^

Link para o comentário
Compartilhar em outros sites

  • 0

Existe um erro de lógica nesta parte:

if (strcmp(nome,n1)==0)
  ch=1000;
if (strcmp(nome,n2)==0)
  ch=600;
else
  ch=0;

Ele vai passar no primeiro if e vai ser verdadeiro, então ch vai ser 1000. Porém, quando chegar no segundo if, vai ser falso, é claro, então o *else* vai ser executado. E o else, no caso, manda que ch seja 0. Portanto, o valor final de ch realmente vai ser 0.

Você deveria utilizar ifs aninhados (um dentro do outro) neste caso.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Existe um erro de lógica nesta parte:

if (strcmp(nome,n1)==0)
  ch=1000;
if (strcmp(nome,n2)==0)
  ch=600;
else
  ch=0;

Ele vai passar no primeiro if e vai ser verdadeiro, então ch vai ser 1000. Porém, quando chegar no segundo if, vai ser falso, é claro, então o *else* vai ser executado. E o else, no caso, manda que ch seja 0. Portanto, o valor final de ch realmente vai ser 0.

Você deveria utilizar ifs aninhados (um dentro do outro) neste caso.

Abraços,

Graymalkin

Opa!

Então como ficaria com if aninhado?

Porque pelo que eu entendi, eu estaria comparando n1(naruto) e nome ( colocado). Aí se nome=naruto(n1), ch=1000. Se nome=sakura(n2), ch=600 se não (else) ch=0.

Eu não entendi bme o erro =/

valeu ^^

Link para o comentário
Compartilhar em outros sites

  • 0
Existe um erro de lógica nesta parte:

if (strcmp(nome,n1)==0)
  ch=1000;
if (strcmp(nome,n2)==0)
  ch=600;
else
  ch=0;

Ele vai passar no primeiro if e vai ser verdadeiro, então ch vai ser 1000. Porém, quando chegar no segundo if, vai ser falso, é claro, então o *else* vai ser executado. E o else, no caso, manda que ch seja 0. Portanto, o valor final de ch realmente vai ser 0.

Você deveria utilizar ifs aninhados (um dentro do outro) neste caso.

Abraços,

Graymalkin

Opa!

Então como ficaria com if aninhado?

Porque pelo que eu entendi, eu estaria comparando n1(naruto) e nome ( colocado). Aí se nome=naruto(n1), ch=1000. Se nome=sakura(n2), ch=600 se não (else) ch=0.

Eu não entendi bme o erro =/

valeu ^^

Link para o comentário
Compartilhar em outros sites

  • 0

Existe um erro de lógica nesta parte:

if (strcmp(nome,n1)==0)
  ch=1000;
if (strcmp(nome,n2)==0)
  ch=600;
else
  ch=0;
Ele vai passar no primeiro if e vai ser verdadeiro, então ch vai ser 1000. Porém, quando chegar no segundo if, vai ser falso, é claro, então o *else* vai ser executado. E o else, no caso, manda que ch seja 0. Portanto, o valor final de ch realmente vai ser 0. Você deveria utilizar ifs aninhados (um dentro do outro) neste caso. Abraços, Graymalkin
Opa! Então como ficaria com if aninhado? Porque pelo que eu entendi, eu estaria comparando n1(naruto) e nome ( colocado). Aí se nome=naruto(n1), ch=1000. Se nome=sakura(n2), ch=600 se não (else) ch=0. Eu não entendi bme o erro =/ valeu ^^
O problema é que o "senão" só se refere ao segundo if e não ao primeiro. O que você deveria fazer seria:
if (strcmp(nome,n1)==0)
  ch=1000;
else
  if (strcmp(nome,n2)==0)
    ch=600;
  else
    ch=0;

Certo? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Existe um erro de lógica nesta parte:

if (strcmp(nome,n1)==0)
  ch=1000;
if (strcmp(nome,n2)==0)
  ch=600;
else
  ch=0;
Ele vai passar no primeiro if e vai ser verdadeiro, então ch vai ser 1000. Porém, quando chegar no segundo if, vai ser falso, é claro, então o *else* vai ser executado. E o else, no caso, manda que ch seja 0. Portanto, o valor final de ch realmente vai ser 0. Você deveria utilizar ifs aninhados (um dentro do outro) neste caso. Abraços, Graymalkin
Opa! Então como ficaria com if aninhado? Porque pelo que eu entendi, eu estaria comparando n1(naruto) e nome ( colocado). Aí se nome=naruto(n1), ch=1000. Se nome=sakura(n2), ch=600 se não (else) ch=0. Eu não entendi bme o erro =/ valeu ^^
O problema é que o "senão" só se refere ao segundo if e não ao primeiro. O que você deveria fazer seria:
if (strcmp(nome,n1)==0)
  ch=1000;
else
  if (strcmp(nome,n2)==0)
    ch=600;
  else
    ch=0;

Certo? wink.gif

Graymalkin

Awee!! valeu mesmo ^^

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...