Título: calcular producto escalar Publicado por: indict en 11 Diciembre 2012, 09:01 am Calcular producto escalar de dos vectores dados.
¿Qué debo rectificar para que me funcione? Código: #include<iostream> Título: Re: calcular producto escalar Publicado por: Ferno en 11 Diciembre 2012, 17:09 pm Primero algunas cuestiones del álgebra.
No podés realizar un producto escalar entre 2 vectores de diferente dimensión (tamaño), por ende, podés simplificar el programa pidiendo una sola vez el tamaño y pedir los valores con el mismo tamaño para ambos vectores. En tu code, lo siguiente no está bien: Código
Como parámetro deben ir los vectores como bien declaras al principio: Código
Lo que debes hacer es: Código
Por último, dentro de la función "producto_escalar", la condición en el for no es correcta. Esto: for(i=0;i<v1.size and i<v2.size ();i=i+1) No compila, porque el compilador no entiende el "and". Las relaciones lógicas, se reemplazan por ciertos caracteres, por ejemplo, para AND y OR: AND = && OR = || Además, utiliza paréntesis siempre que las uses, para evitar confusiones: Código
Corrige esto y avisanos como te fue. Título: Re: calcular producto escalar Publicado por: rir3760 en 11 Diciembre 2012, 18:04 pm Por último, dentro de la función "producto_escalar", la condición en el for no es correcta. Esto: En C++ las palabras reservadas (para ser exactos "alternative tokens") "and", "or" y "not" tienen el mismo efecto que los operadores "&&", "||" y "!" pero raramente se usan (supongo es una costumbre derivada de C donde, eventualmente, se implementaron como macros). for(i=0;i<v1.size and i<v2.size ();i=i+1) No compila, porque el compilador no entiende el "and". Las relaciones lógicas, se reemplazan por ciertos caracteres, por ejemplo, para AND y OR: AND = && OR = || Un saludo Título: Re: calcular producto escalar Publicado por: Ferno en 11 Diciembre 2012, 19:09 pm En C++ las palabras reservadas (para ser exactos "alternative tokens") "and", "or" y "not" tienen el mismo efecto que los operadores "&&", "||" y "!" pero raramente se usan (supongo es una costumbre derivada de C donde, eventualmente, se implementaron como macros). Un saludo Mirá, no tenía ni idea de eso. Tendría que dejar de responder cosas de C++ :P Perdón al autor y gracias rir! Título: Re: calcular producto escalar Publicado por: indict en 11 Diciembre 2012, 19:10 pm Gracias por el aporte.
He rectificado las erradas, pero sigue sin compilar bien. Código: #include<iostream> Título: Re: calcular producto escalar Publicado por: Ferno en 11 Diciembre 2012, 19:12 pm No has declarado las variables v1, v2 que representan a los vectores.
Título: Re: calcular producto escalar Publicado por: indict en 11 Diciembre 2012, 20:07 pm No has declarado las variables v1, v2 que representan a los vectores. Si no me equivoco, están declaradas en la función producto_escalar Título: Re: calcular producto escalar Publicado por: Ferno en 11 Diciembre 2012, 20:15 pm Si no me equivoco, están declaradas en la función producto_escalar No, pero igual me confundí, ya están declarados en el main. ¿Qué error tira el compilador? Título: Re: calcular producto escalar Publicado por: indict en 11 Diciembre 2012, 20:24 pm In function `int producto_escalar(std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)':
Y este mensaje muchas veces reptido "stray '\160' in program " Título: Re: calcular producto escalar Publicado por: naderST en 12 Diciembre 2012, 03:33 am Pon un espacio entre el tipo del parametro y el nombre, es decir:
Código
Otra cosa, si sabes que para realizar el producto escalar entre dos vectores ambos tienen que tener el mismo tamaño, está demás que preguntes en el for por el tamaño de ambos. Título: Re: calcular producto escalar Publicado por: rir3760 en 12 Diciembre 2012, 14:22 pm He rectificado las erradas, pero sigue sin compilar bien. Si no tienes un libro sobre C++ de calidad es hora de conseguir uno. Puedes revisar las recomendaciones mediante el motor de búsqueda de los foros.En tu programa falta la llave de cierre de la función main y al final de esta tienes, por alguna extraña razón, un par de llaves: Código Eliminalas y coloca un punto y coma al final de la primera sentencia para marcar el final de esta: Código
También hay que eliminar la variable "k" en la función main ya que no la utilizas y en la función que calcula el producto el tipo correcto para el contador "i" es "vector<int>::size_type". Con esos cambios el programa debe compilar y ejecutarse correctamente. Un saludo |