Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal, sou novo em c++ preciso de ajuda.

Preciso criar uma função que tenha dois parametros diferente um do outro, estilo a formula se() do excel. Onde se consegue usar qualquer tipo de dados juntos nos paremtros e no retorno.

<

#include <iostream>

using namespace std;

 double teste (double a, double b, char c, char d){
     return (a > b )? c : d;
 }

 int main(){

     cout << teste(1,2,'x','y') << endl;

     return 0;
 }

>

o codigo roda normal, mas em vez de imprimir as letras ele imprime numeros.

Já tentei fazer função template e da o mesmo erro.

<

#include <iostream>

using namespace std;

template < typename N>
N funcao(N a, int b, char c, char d)
{
    N result = (a<b)? c : d;
    return (result) ;
}
int main(){

cout << funcao(1,2,'x','y' )  << endl;

return 0;
}

>

Desde já agradeço quem puder ajudar ou tentar ajuda.

 

  • Amei 1
Postado

@Carlos Vilas boas     você pode colocar a função com o tipo char , e tudo irá bem ,

#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
char teste(double a, double b, char c, char d)// tipo char retrna tipo char
{
    return a > b ? c : d; // ? ternário true faz o primeiro false faz o segundo
}
int main()
{
    cout << "Valor retornado -> " << teste(1,2,'x','y') << endl;
    return 0;
}

e esse símBolo    < >    foi Legal .

e você postou no tópico de c++ , mas esse seu código está todo em linguagem c , apenas o cout <<  é da linguagem c++ , que poderia ser assim  :

#include <iostream>
#include <iomanip>
#include <vector>
#include <string.h>
#include <cstring>
#include <string>
using namespace std;
string teste(double a, double b, string c, string d)// tipo string retrna tipo string
{
    return a > b ? c : d; // ? ternário true faz o primeiro false faz o segundo
}
int main()
{
    cout << "Valor retornado -> " << teste(1,2,"x","y") << endl;
    return 0;
}

 

  • Curtir 1
  • Amei 1
Postado

@devair1010 Muito obrigado man, o codigo rodo certinho. Estava a uma semana tentando fazer esse codigo rodar para criar uma dll no vba do excel, agora outra lutra para rodar ele na vba como dll . Esse codigo é generico em cima dele vou criar outros mais complexo. Ainda estou aprendendo c++, então, não sei muito a diferença entre c e c++ na forma de escrever o codigo, com tempo pego o jeito. Valeu e um grande abraço.

4 horas atrás, devair1010 disse:

@Carlos Vilas boas     você pode colocar a função com o tipo char , e tudo irá bem ,






#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
char teste(double a, double b, char c, char d)// tipo char retrna tipo char
{
    return a > b ? c : d; // ? ternário true faz o primeiro false faz o segundo
}
int main()
{
    cout << "Valor retornado -> " << teste(1,2,'x','y') << endl;
    return 0;
}

e esse símBolo    < >    foi Legal .

e você postou no tópico de c++ , mas esse seu código está todo em linguagem c , apenas o cout <<  é da linguagem c++ , que poderia ser assim  :






#include <iostream>
#include <iomanip>
#include <vector>
#include <string.h>
#include <cstring>
#include <string>
using namespace std;
string teste(double a, double b, string c, string d)// tipo string retrna tipo string
{
    return a > b ? c : d; // ? ternário true faz o primeiro false faz o segundo
}
int main()
{
    cout << "Valor retornado -> " << teste(1,2,"x","y") << endl;
    return 0;
}

 

 

Postado
8 horas atrás, Carlos Vilas boas disse:
2 horas atrás, Carlos Vilas boas disse:

a diferença entre c e c++ na forma de escrever o codigo

Preciso criar uma função que tenha dois parametros diferente um do outro, estilo a formula se() do excel. Onde se consegue usar qualquer tipo de dados juntos nos paremtros e no retorno

 

Não entendi o que precisa fazer. 

 

Em C++ pode simplesmente declarar as funções com o mesmo nome e a lista de parâmetros de que precise. Isso se chama overload e não está disponível em C, embora possa ser conseguido usando void*.

 

O compilador C++ escolhe a versão correta a partir dos parâmetros.

 

templates em C++ vão gerar as funções em tempo de compilação com os parâmetros adequados e pode ser outra opção.

 

C e C++ são linguagens bem diferentes. Muito diferentes. No entanto quase tudo de C compila ok em C++. Só isso. C tem 60 anos, C++ tem 50, e continuam evoluindo.

 

 

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...