Ir para conteúdo

Arquivado

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

Vitor Augusto

[Resolvido] Problemas com STRCMP

Recommended Posts

Estou com problemas com o strcmp,quando eu coloco 0 o compilador não faz nda e fecha a janela,quando eu coloco 1 ele só efetua a soma.

 

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

int main()
{
char soma[5],divisao[9],sub[9],mult[9],oper[9];
float n,n1,res;



cout<<"Insira o 1* numero\n";
cin>>n;
cout<<"Insira o 2* numero\n";
cin>>n1;
cout<<"Qual a operacao deseja fazer?\n";
cin>>oper;
if (strcmp(oper,soma) ==0)
{
res=n+n1;
cout<<"\nO resutado e \n"<<res;
}
else
if (strcmp(oper,sub) ==0)
{
res=n-n1;
cout<<"\nO resutado e \n"<<res;
}
else
if (strcmp(oper,divisao) ==0)
{
res=n*n1;
cout<<"\nO resutado e \n"<<res;
}
else
if (strcmp(oper,mult) ==0)
{
res=n/n1;
cout<<"\nO resutado e \n"<<res;
}


getch();

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro:

Quais os valores de:

soma[5],divisao[9],sub[9],mult[9]
???

 

Você está comparando oper com sujeira ou com NULL, com ctz o programa n vai exibir nada.

 

Segundo:

Se o main() tem um int na frente qr dizer q retorna algo neh?

---

#include <iostream>
#include <cstdio>

using std::cout;
using std::cin;

int main(){
    char soma[2],div[2],sub[2],mult[2],oper[2];
    float n,n1,res;
    strcpy(soma,"+\0");
    strcpy(sub,"-\0");
    strcpy(div,"/\0");
    strcpy(mult,"*\0");
    cout<<"Insira o 1* numero\n";
    cin>>n;
    cout<<"Insira o 2* numero\n";
    cin>>n1;
    cout<<"Qual a operacao deseja fazer?\n";
    cin>>oper;
    if (strcmp(oper,soma) ==0){
        res=n+n1;
        cout<<"\nO resutado e \n"<<res;
    }
    else if (strcmp(oper,sub) ==0){
        res=n-n1;
        cout<<"\nO resutado e \n"<<res;
    }
    else if (strcmp(oper,div) ==0){
        res=n/n1;
        cout<<"\nO resutado e \n"<<res;
    }
    else if (strcmp(oper,mult) ==0){
        res=n*n1;
    cout<<"\nO resutado e \n"<<res;
    }
    return 0;
}
---

Terceiro:

---

 

Tópico Movido:

 

Lógica de Programação e Algoritmos http://forum.imasters.com.br/public/style_emoticons/default/seta.gif C/C++

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe por posta na área errada.

soma[5],divisao[9],sub[9],mult[9]

são apenas caracteres

 

 

Você está comparando oper com sujeira ou com NULL, com ctz o programa n vai exibir nada.

 

Segundo:

Se o main() tem um int na frente qr dizer q retorna algo neh?

 

como assim não entendi,quando meu primo me explicou C++,ele não me disse qual a função do int main() e do void main() só me falou pra usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu postei já o código correto pra você, de uma analiza no meu primeiro post.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom eu postei já o código correto pra você, de uma analiza no meu primeiro post.

 

 

 

Qualquer coisa que eu digito na operação desejada ele fecha

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom n é um bom uso +..

adicione um:

system("pause");
antes do return 0;

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não estou entendendo sua dúvida agora?

O programa está rodando e apresentando o resultado esperado!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

O programa está rodando e apresentando o resultado esperado!

 

Na verdade não depois que eu digito a operação ele so pede pra apertar alguma tecla

e não efetua os calculos.

No meu algoritmo que eu digito 1

if (strcmp(oper,soma) ==1) <- aki
em qualquer 1 dos if ele efetua somente a soma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa + se você está usando o código q eu postei;

acho muito improvavel n esta funfando..

ql compilador você usa(msm isso n importando tanto)?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quit,

isis@linux-45c9:~/src> g++ t.c -Wall

t.c: In function ‘int main()’:

t.c:10: error: ‘strcpy’ was not declared in this scope

t.c:20: error: ‘strcmp’ was not declared in this scope

 

Faltou o cstring. De resto tá funcionando:

 

isis@linux-45c9:~/src> ./a.out Insira o 1* numero 1 Insira o 2* numero 2 Qual a operacao deseja fazer? + O resutado e 3isis@linux-45c9:~/src> ./a.out Insira o 1* numero -45 Insira o 2* numero 34 Qual a operacao deseja fazer? / O resutado e -1.32353isis@linux-45c9:~/src>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faltou o cstring. De resto tá funcionando:

É compilei do Code::Blocks e n deu erro de biblioteca, + vlw ;D

 

E entaum, n sei como o usuario esta dizendo q o código n esta fazendo =//

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que o problema é com meu compilador porque está fechando do mesmo jeito,mesmo inserido o cstring,vou trocar de compilador e testar

Compartilhar este post


Link para o post
Compartilhar em outros sites

vai no Dos, coloca o caminho de onde esta o executavel, e pede para abrir ele.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caríssimo,

 

Você está digitando quando ele pede a operação o quê?

 

Isso:

+
-
*
/
Ou isso:

soma
divisao
.
.
.
??????????????

 

OBS: Se você está utilizando o código que o quitZAUMMM postou, então digite como operador isso: +, -, * ou /

 

Ok?!?

 

Era isso?

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.