Programando en Linux,Plantillas!!!No funciona

Iniciado por CATBro, 21 Mayo 2012, 06:03 AM

0 Miembros y 1 Visitante están viendo este tema.

CATBro

Buenas noches gente ando practicando C++ en Debian 6, utilizando Mono como IDE, estoy en el tema de las plantillas.
La plantilla que hice es para saber la cifra mayor de tres valores introducidos por el teclado y mostralos por pantalla aqui esta el codigo de la plantilla

 
/ Definicion de la plantilla maximo

template < class T >
T maximo ( T valor1, T valor2, T valor3 )
{
T valorMaximo = valor1;

if ( valor2 > valorMaximo )
valorMaximo = valor2;

if ( valor3 > valorMaximo )
valorMaximo = valor3;

return valorMaximo;
}// fin de la plantilla maximo


Codigo cliente

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include "maximo.h"

int main (int argc, char *argv[])
{
int int1, int2, int3;

cout<< "Introduzca tres valores enteros: ";
cin >> int1, int2, int3;

cout << "El valor int de maximo es: " << maximo( int1, int2, int3 );

double double1, double2, double3;

cout << "\n\nIntroduzca tres valores double: ";
cin  >> double1, double2, double3;

cout << "El valor double de maximo es: " <<maximo(double1, double2, double3)<<endl;
return 0;
}// fin de main



Compila el programa, en tiempo de ejecucion esto pasa:

Introduzca tres valores enteros: 1 2 3
El valor int maximo es: 134515225       <----------------------------------------------XD!!!

Introduzca tres valores double: El valor double de maximo es: 2


Alguien sabe porque pasa esto??? Estuve calando con varios numeros pero los resultados varian pero igual de incorrecto.

Saludos


exel

cin >> int1, int2, int3;

No tengo muchos conocimientos de C++, pero tengo entendido que en realidad es asi:

cin >> int1>>int2>>int3;

CATBro

XD Tienes toda la razon no me di cuenta muchas gracias, una pregunta mas, cuando se da una violacion de segmento???

Saludos

exel

 Pues la violacion de segmento sucede cuando intentas acceder a una direccion de memoria no permitida. Comunmente esto sucede cuando te olvidas de especificar la referencia a una direccion como con el uso de scanf() en el cual muchos se olvidan del simbolo apuntador &; si se olvida el &, al compilar la funcion scanf() recibira el valor de la variable y no su direccion.
Cuando se es nuevo, es comun que se tenga errores al usar punteros(que es la forma de manejar direccionaiento a memoria en C). Pero lo malo es que muchas veces el compilador ni siquiera te advierte.

Saludos