Foros-FIUBA Foros HostingPortal
 FAQ  •  Buscar  •  Wiki  •  Apuntes  •  Planet  •  Mapa  •  Eyeon  •  Chat
Preferencias  •  Grupos de Usuarios
Registrarse  •  Perfil  •  Entrá para ver tus mensajes privados  •  Login
Ver tema siguiente
Ver tema anterior

Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente
Autor Mensaje
Uciel
Nivel 6


Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288

Carrera: Informática
argentina.gif
MensajePublicado: Mie Mar 28, 2012 12:36 am  Asunto:  Duda sobre este codigo cortito Responder citandoFin de la PáginaVolver arriba

El asunto es que estoy practicando procedimientos y para empezar con uno basico escribi uno que tome 2 numeros los multiplique y ademas me informe si el resultado es positivo o negativo. Aca esta el codigo

#include <iostream>
using namespace std;

void productoDeDosEnteros(int a,int b, int &resultado, bool &positivo);

int main(){
int c, d, resultado;
bool positivo;
cout<<"ingrese 2 valores positivos a multiplicar"<<endl>> c;
cin >> d;
productoDeDosEnteros (c, d, resultado, positivo);
if ((positivo=true)){
cout << resultado << " el resultado es positivo";}
if ((positivo=false)){
cout << resultado << " el resultado es negativo";
}
return 0;
}


void productoDeDosEnteros(int a, int b,int &resultado, bool &positivo){
resultado=a*b;
if (resultado>0){
positivo=true;}
if (resultado<=0){
positivo=false;
}

}



El problema esta en que cuando pongo un numero posivito y el otro negativo para que el resultado sea negativo me imprime:

"el resultado es positivo"

Bueno si alguien me puede corregir donde esta el error en el codigo se lo agradeceria eternamente.

Saludos. Uciel


Tauro Género:Masculino Caballo OfflineGalería Personal de UcielVer perfil de usuarioEnviar mensaje privado
Bistek
Nivel 8



Registrado: 07 May 2010
Mensajes: 691

Carrera: Informática
CARRERA.informatica.3.jpg
MensajePublicado: Mie Mar 28, 2012 12:45 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

en el main en la linea "if ((positivo=true)){ " estas asignandole true al booleano en vez de preguntar por el valor del mismo.

El operador de comparación es == y el de asignación = si mal no recuerdo


Btw, es tiempo ya que en vez de preguntar if (positivo==true) o if (positivo==false) directamente escribas if (positivo) o if (!positivo)

Y a los booleanos escribiles nombres mas claros que expresen claramente que sucede cuando el valor es true/false, por ejemplo "esPositivo", de esa forma se facilita la lectura del código


 Género:Masculino  OcultoGalería Personal de BistekVer perfil de usuarioEnviar mensaje privado
koreano
Nivel 9



Registrado: 15 Jul 2010
Mensajes: 1796

Carrera: No especificada
blank.gif
MensajePublicado: Mie Mar 28, 2012 8:45 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Podés configurar el compilador para que te tire un warning por usar asignación en el if en vez de comparación, no me acuerdo cual es el flag exacto. Si estás usando un IDE te recomiendo poner al compilador en modo mas estricto (aka hinchahuevos), que te va a salvar de varios errores pelotudos.


   OcultoGalería Personal de koreanoVer perfil de usuarioEnviar mensaje privado
Sebastian Santisi
Administrador Técnico


Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451


argentina.gif
MensajePublicado: Mie Mar 28, 2012 10:02 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

-Wall

Te va a decir algo así como "asignación en un branch, ¿estás seguro de que no querés comparar?, te recomiendo usar paréntesis para dejarlo en claro".

_________________
Image[tex] ${. \ \ \ \ \ \ \ \ \ .}$ [/tex][tex] ${\Large Usá \LaTeX, no seas foro...}$ [/tex]

Aries Género:Masculino Perro OfflineGalería Personal de Sebastian SantisiVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Stoma
Nivel 8


Edad: 36
Registrado: 06 Jul 2006
Mensajes: 510

Carrera: Informática
argentina.gif
MensajePublicado: Mie Mar 28, 2012 10:39 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

ademas de eso me gusta la convención de poner constantes a la izquierda cuando se compara:
Código:
 15 == numero && 16 != numero

en vez de
Código:
 numero == 15 && numero != 16


Si te acostumbras a hacer siempre eso, el dia que le pifies y pongas
Código:
15 = numero
salta error de compilación.

Obviamente te va a servir solo cuando se trate de constantes, si comparas 2 variables el warning es el que te ayuda.

_________________
Image
Si yo te digo carnaval...

Geminis Género:Masculino Gato OfflineGalería Personal de StomaVer perfil de usuarioEnviar mensaje privado
Sebastian Santisi
Administrador Técnico


Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451


argentina.gif
MensajePublicado: Mie Mar 28, 2012 10:46 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Y la convención va más allá; a izquierda ponés lo que vos estás comparando y a derecha el con qué lo estás comparando.

Quiero decir, si tuvieras:

Código:
var valor_maximo = 50;
...
x = input();
if(x < valor_maximo) ...

Se usa "x <valor_maximo" y no "valor_maximo > x".

Sintácticamente es lo mismo, semánticamente no.

_________________
Image[tex] ${. \ \ \ \ \ \ \ \ \ .}$ [/tex][tex] ${\Large Usá \LaTeX, no seas foro...}$ [/tex]

Aries Género:Masculino Perro OfflineGalería Personal de Sebastian SantisiVer perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
Uciel
Nivel 6


Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288

Carrera: Informática
argentina.gif
MensajePublicado: Mie Mar 28, 2012 11:52 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Ahhhhhhh.....siiiii....pero que error mas boludo!!!

Tenes razon Bistek, me confundi el "=" de asingnación, con el "==" de comparación.

Con respecto a lo que dijo "koreano"

Cita:
Podés configurar el compilador para que te tire un warning por usar asignación en el if en vez de comparación, no me acuerdo cual es el flag exacto. Si estás usando un IDE te recomiendo poner al compilador en modo mas estricto (aka hinchahuevos), que te va a salvar de varios errores pelotudos.


¿Como es que lo configuro para no tener esos errores boludos?

Estoy usando el Eclipse C++ (Windows 7 64bits)

Desde ya gracias a todos por la manito que me estan dando Smile


Tauro Género:Masculino Caballo OfflineGalería Personal de UcielVer perfil de usuarioEnviar mensaje privado
Mostrar mensajes de anteriores:      
Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente

Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro
No podés responder a temas en este foro
No podés editar tus mensajes en este foro
No podés borrar tus mensajes en este foro
No podés votar en encuestas en este foro
No Podéspostear archivos en este foro
No Podés bajar archivos de este foro


Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker
365 Attacks blocked.

Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods y Créditos

Foros-FIUBA está hosteado en Neolo.com Cloud Hosting

[ Tiempo: 0.3401s ][ Pedidos: 20 (0.2633s) ]