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

Condição Lógica


sl@ckw@re

Pergunta

#include <stdio.h>
#include <stdlib.h>

int main()
{
      char nome[100];
      char sobrenome[100];
      printf("Digite seu nome:\n");
      scanf("%s", nome);
      printf("Digite seu sobrenome:\n");
      scanf("%s", sobrenome);
      printf("Seu nome é: %s %s\n", nome, sobrenome);

if (nome=='joao' & sobrenome=='santos')
printf("Você é o cara!\n",nome,sobrenome);
else
printf("Você não é o cara\n");

}

Observação:

O programa compila e é executado,porém a frase:("Você é o cara!")nunca é executada.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você cometeu dois erros. Um sintático e o outro conceitual. Em C, uma string deve ser sempre representada entre aspas duplas (") e não aspas simples ('). Isso é um erro que o compilador deveria ter te avisado. (veja o manual do seu compilador e ative as flags que mostram os Warnings e forçam o padrão ANSI).

O outro erro é conceitual. Onde você está comparando as strings, na verdade o que você está fazendo com aquilo é comparar se a posição de memória onde estão as strings são iguais, o que nunca será verdade. Para comparar o valor das strings, use a função strcmp(), da string.h. Essa função devolve 0 se as duas strings forem iguais, > 0 se a primeira for maior que a segunda e < 0 se a primeira for menor que a segunda.

SINTAXE: int strcmp(const char *a, const char *b );

Então seu if fica mais ou menos assim:

if (strcmp(nome, "joao") && strcmp(sobrenome, "santos")){
          printf("Voce é o cara!!!\n");
}
Se você quiser imprimir o nome e o sobrenome também, sua chamada ao printf deve ser feita da seguinte forma:
printf("Voce é o cara, %s %s\n", nome, sobrenome);

E um aviso: No seu if você usou o operador bitwise & no lugar do operador booleano &&. O bitwise & tem comportamento diferente do &&. O bitwise verificará bit por bit do valor devolvido pelas funcoes e se em alguma posição os bits dos dois valores forem 1, ele marcará um naquela posição. Caso contrário marcará 0. Ex:

00100111 & (verdadeiro)

11010010 resulta em (verdadeiro)

00000010 (verdadeiro)

mas se for nesse exemplo:

10101010 & (verdadeiro)

01010101 resulta em (verdadeiro)

00000000 (falso)

Portanto, use o operador && nesse caso, pois dessa forma ele trata os valores como booleanos (verdadeiro e falso) e não como sequencias de bits.

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei fazer o que você solicitou,mais ainda não foi,veja:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int strcmp(const char *a, const char *b )

{
      char nome[100];
      char sobrenome[100];
      printf("Digite seu nome:\n");
      scanf("%s", nome);
      printf("Digite seu sobrenome:\n");
      scanf("%s", sobrenome);
      printf("Seu nome é: %s %s\n", nome, sobrenome);


if (strcmp(nome,"joao") && strcmp(sobrenome,"santos"))
{
printf("Voce é o cara!!!\n");
else
printf("Você não é o cara\n");


}

Tenha paciência comigo,e que eu ainda sou iniciante.

Link para o comentário
Compartilhar em outros sites

  • 0

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int strcmp(const char *a, const char *b )

{
      char nome[100];
      char sobrenome[100];
      printf("Digite seu nome:\n");
      scanf("%s", nome);
      printf("Digite seu sobrenome:\n");
      scanf("%s", sobrenome);
      printf("Seu nome é: %s %s\n", nome, sobrenome);


if (strcmp(nome,"joao") && strcmp(sobrenome,"santos"))
{
printf("Voce é o cara!!!\n");
else
printf("Você não é o cara\n");


}
cade a funcão main? de onde voce tirou isso: int strcmp(const char *a, const char *b )? bom, olha só o porque ele não entra no if se o nome e o sobrenome for o que voce está procurando:
int main(){
   char nome[30] = "Kleber";
   char snome[30] = "Andrade";
   if (!strcmp(nome, "Kleber") && !strcmp(snome, "Andrade")){
          printf("Voce é o cara!!!\n");
   }
   else
      printf("Voce não é o cara!!!\n");
}

observe o uso do operador lógico '!'

como o Jonas disse:

Para comparar o valor das strings, use a função strcmp(), da string.h. Essa função devolve 0 se as duas strings forem iguais

então, se as strings forem iguais o retorno é zero e o if é executado.

voce pode colcoar apenas um operador '!', basta limitar corretamente com parenteses.

:lol:

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...