Ir ao conteúdo

Posts recomendados

Postado

Eae galera,

 

Estou criando um programa para treinar meus conhecimentos, porém eu não consigo entender o porquê do resultado final não ser diferente de zero

Esse é o meu programa:

#include <iostream> 
#include <cstdlib>
using namespace std; 

int main() {
    int total_cred = 0;
    char resposta = 'S';
    char materia[50]; 
    
    while (resposta == 'S') {
       cout<<"Digite o nome da matéria: ";
       cin>>materia;
       system("cls"); 
       
       if (materia == "BCC" || materia == "BCE"){
          total_cred = total_cred + 2;
       }
       else {
          total_cred = total_cred;
       }
       
       cout<<"Deseja inserir mais matérias? (S/N): ";
       cin>>resposta;
       system("cls"); 
    }
    
    
    cout<<"A quantidade total de créditos é: "<<total_cred;
    system ("pause>>null"); 
    return EXIT_SUCCESS;
}

 

A resposta sempre está dando 0, escrevendo ou não as matérias que estão entre aspas duplas.

O que pode estar acontecendo?

 

Grato desde já!

Postado

Nessa linha, não há uma comparação real sendo feita, existe funções especiais para isso, segue:

if (materia == "BCC" || materia == "BCE")...

O certo seria incluir "string.h" e usar strcmp, segue:

//No cabeçalho, COMO VOCÊ ESTA USANDO NAMESPACE STD, USE ESSAS
#include <cstring>//std::strcmp
  
...
//No if..se == 0 é a mesma string
       if (strcmp(materia, "BCC") == 0 ||
	       strcmp(materia, "BCE") == 0 ){
          total_cred += 2;//igual a total_cred = total_cred+2;
	   }
  

 

Postado

@1freakday  Deu certo! Mas eu não entendi muito bem o que significa esse comando strcmp. Para falar a verdade, eu não sei também o que significa esse std que eu utilizei no código. :confused::confused:

Postado

Std(standard, ou padrão) é o namespace da biblioteca <iostream> que você inclui no projeto.

Ao usar 

using namespace std;

Você permite que as funções posteriores, a linha acima,  usem as funções presentes na bilbioteca de iostream. Cout é uma dessas funções.

Caso você não usasse using... toda vez que você usasse cout, você teria que usar std:: na frente, por exemplo:

 

// Isso seria usando using namespace std;

cout << "Hello World" endl; 

 

// Assim sem declarar using namespace std;

std::cout << "Hello World" std::endl;

 

É o mesmo esquema do uso de funções classe usando que typedef, usando ela sem delcarar nenhum objeto.

Dica: Pesquise sobre namespace

 

Strcmp é basicamente a comparação entre duas strings.

Strcmp:http://en.cppreference.com/w/cpp/string/byte/strcmp

 

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!