Ir ao conteúdo
  • Cadastre-se

Dúvidas de um iniciante em c++


Walber.

Posts recomendados

Pessoal, me chamo Walber e sou estudante de engenharia civil. Um professor me encaminhou um trabalho e já conclui a maioria, so q venho tendo problemas em alguns já busquei em varios sites so que a lingagem na qual encontrava e muito avançada e meu objetivo não é entregar um trabalho e sim aprender, gostaria da ajuda pois o trabalho é para amanha.

Bom a 1° dúvida é a seguinte em relação a questão:"Ler um nome do teclado e ver se é igual ao seu nome. Imprimir conforme o caso: “NOME CORRETO” ou “NOME INCORRETO”; bom estou fazendo assim:

# include<stdio.h>

#include <string.h>

int main (){

char nome;

printf("Digite um nome: ");

scanf("%c",&nome);

if (nome=='walber'){

printf("NOME CORRETO. ");

}else{

printf("NOME INCORRETO. ");

}

system("pause");

}

Sei que o problema para muitos deve ser fácil mas ja bati a cabeça dmais rsrsr. agradeço desde já.

Link para o comentário
Compartilhar em outros sites

Olá Walber.

Esssa comparação com aspas simples serve somente para caracteres. Para comparar stings você deve usar funções específicas da biblioteca string.h.

Veja:

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

int main (){
char nome[50]; [COLOR="Red"]// [50] Determina quantas letras tem a string[/COLOR]
printf("Digite um nome: ");
scanf("%s",&nome);
if (strcmp("walber",nome) == 0){ [COLOR="Red"]// Função que compara as strings[/COLOR]
printf("NOME CORRETO. \n");
}else{
printf("NOME INCORRETO. \n");
}
system("pause");
}

Link para o comentário
Compartilhar em outros sites

Dr4cker obrigado velho deu certo, kkkkk. rpz eu penei pra isso e nada, agora fiquei com uma dúvida nessa parte if (strcmp("walber",nome)==0)? não entendi, tipo mas mesmo assim obrigado. eu tenho mais uma dúvida em relação a esse exemplo:

Ler os três coeficientes de uma equação de segundo grau e determinar suas raízes.

#include<stdio.h>

#include<math.h>

int main(){

double a, b, c, d, raiz_delta;

double x1, x2;

printf("Este programa calcula as raizes da equacao do segundo grau ");

printf("ax2+Bx+C = 0\n");

printf("Entre com o valor do coeficiente a: \n");

scanf("%i",&a);

printf("Entre com o valor do coeficiente b: \n");

scanf("%i",&B);

printf("Entre com o termo independente: \n");

scanf("%i",&c);

d=((b*B)-4*(a*c));

printf("O valot de delta: %i\n",d);

raiz_delta=pow(d,1/2);

printf("A raiz de delta e: %i.",raiz_delta);

x1=((-b+raiz_delta)/2*a);

printf("A raiz X1 e %i: ",x1);

x2=((-b-raiz_delta)/2*a);

printf("A raiz X2 e %i: ",x2);

system("pause");

}

brother ja queria te agradecer desde já e dizer que realmente acho q esse companheirismo e que falta nas pessoas, obrigado aí.

Link para o comentário
Compartilhar em outros sites

Tranquilo Walber.

A função strcmp compara caracter por caracter, em ordem alfabética, e retorna um valor inteiro:

- Se o valor for 0: walber = nome;

- se o valor for < 0: walber < nome (em ordem alfabetica)

- se o valor for > 0: walber > nome (também em ordem alfabética).

É bastante útil para ordenar palavras.

#include <stdio.h>
#include <math.h>


int main(){
int a, b, c, d, raiz_delta; [COLOR="Red"]// no Dev-C++ não faz diferença, pode usar o int[/COLOR]
int x1, x2;

printf("Este programa calcula as raizes da equacao do segundo grau ");
printf("ax2+Bx+C = 0\n");

printf("Entre com o valor do coeficiente a: \n");
scanf("%i",&a);
printf("Entre com o valor do coeficiente b: \n");
scanf("%i",&;
printf("Entre com o termo independente: \n");
scanf("%i",&c);

d=((b*-(4*(a*c))); [COLOR="Red"]// cuidado com os parênteses, ele prioriza as operações[/COLOR]

printf("O valot de delta: %i\n",d);

raiz_delta = pow(d,0.5);[COLOR="Red"] // 1/2 estava dando erro, então use o resultado[/COLOR]

printf("A raiz de delta e: %i.\n",raiz_delta);

x1 = ((-1) * ( + raiz_delta) / (2 * a); [COLOR="Red"]// multiplica o 'b' por -1 para gerar o valor negativo. Novamente, cuidado com os parênteses na priorização[/COLOR]


printf("A raiz X1 e : %i\n",x1);

x2 = ((-1) * ( - raiz_delta) / (2 * a);

printf("A raiz X2 e %i: \n",x2);
system("pause");
}

Link para o comentário
Compartilhar em outros sites

Eu faria um pouco diferente...

E fiz, como está no código abaixo...

Considerei que o professor quer raízes reais ..

Então acrescentei um if caso o delta seja negativo ...

Também deixei todos os valores em float porque talvez eles não sejam necessariamente inteiros e coloquei a biblioteca <stdlib.h> por causa do system pause...



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


int main(){
float a, b, c, d, raiz_delta;
float x1, x2;
printf("Este programa calcula as raizes da equacao do segundo grau ");
printf("ax2+Bx+C = 0\n");
printf("Entre com o valor do coeficiente a: \n");
scanf("%f",&a);
printf("Entre com o valor do coeficiente b: \n");
scanf("%f",&;
printf("Entre com o termo independente: \n");
scanf("%f",&c);
d=((b*-4*(a*c));
printf("O valor de delta: %0.f\n",d);
raiz_delta=pow(d/(2*a),1/2);
if(d<0)
{
printf("Não existe raiz real\n");
}
else
{
printf("A raiz delta de e: %0.f\n",raiz_delta);
x1=((-b+raiz_delta)/2*a);
printf("A raiz X1 e %0.f: \n",x1);
x2=((-b-raiz_delta)/2*a);
printf("A raiz X2 e %0.f: \n",x2);
}
system("pause");
}

Link para o comentário
Compartilhar em outros sites

Dr4cker, mas uma vez vou ter que te fazer umas perguntinhas. 1°em relação ao primeiro exemplo "char nome[50]; // [50] Determina quantas letras tem a string" aqui tanto faz os valores que eu colocar"[?]"?

e segunda eu tentei refazer a do ultimo exemplo so q as raizes nâo batem tipo x²-5x+6 as raizes sao: 2 e 3 e o programa da outros valores.

mas mesmo assim mais uma vez obrigado.

Link para o comentário
Compartilhar em outros sites

D4cker, realmente deu certo, o meu problema foi a ordem dos parenteses. só uma coisa o material que meu professor me passou eu não entend a questãoi do char[?] tipo beleza eu entendo que será a determionaçaõ da sting mas como assim?

E *GP*, no seu caso o seu exemplo se torna o mais correto possivel, o erro de não ter feito assim foi meu e não do D4cker que so me corrigiu,kkkkkk desculpem aí galera erro de iniciante, também gostaria de lhe fazer uma pergunta "Porque se torna necessário a utilização da biblioteca #include <stdlib.h> para o system("pause"), te faço essa pergunta porque fiz outros exemplos sem ela e deram certo mas fica errado se não colocar? ah obrigado também pela dica.

Gostaria de agradecer a todos pela ajuda e dizer que também estarei a disposição para qualquer coisa que possa vir. Abraços

Link para o comentário
Compartilhar em outros sites

Quando você declara o tipo char, sua variável comporta somente um caracter. Para usar mais de um caracter, é necessário especificar quantos são: char variável[x], onde x é o número especificado.

Veja mais aqui: Strings de Caracteres.

Quanto ao que o *GP* postou, o Dev-C++ possui um ponto fraco. Se você declarar as bibliotecas ou não, funciona do mesmo jeito. Isso é ruim, pois para a linguagem é obrigatório. Se você for programar usando outros compiladores, o erro é certo.

Abraços.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...