elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  calcular producto escalar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: calcular producto escalar  (Leído 12,153 veces)
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
calcular producto escalar
« 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>
#include<vector>
#include<cmath>
using namespace std;

double producto_escalar(vector<double>v1,vector<double>v2){
     int i, s=0;
     for(i=0;i<v1.size and i<v2.size ();i=i+1){
               s=s+v1[i]*v2[i];      }
     return s;}
                       
                       


int main(){
    int i, k, e,n,s=0;
    vector<int>v1;
    vector<int>v2;
    cout<<"introduzca el tamaño del vector 1"<<endl;
    cin>>n;
    for(i=0;i<n;i=i+1){
                       cout<<"este es el elemento"<<i<<"...";
                       cin>>e;
                       v1[i]=e;}
    cout<<"introduzca el tamaño del vector 2"<<endl;
    cin>>n;
    for(i=0;i<n;i=i+1){
                       cout<<"este es el elemento"<<i<<"...";
                       cin>>e;
                       v2[i]=e;}
   
 producto_escalar (s=s+v1[i]*v2[i];  ){
 cout<<"el producto escalar es"<<s<<endl;}

system ("pause");
return 0;

}


En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: calcular producto escalar
« Respuesta #1 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
  1. producto_escalar (s=s+v1[i]*v2[i];  ){
  2. cout<<"el producto escalar es"<<s<<endl;}

Como parámetro deben ir los vectores como bien declaras al principio:

Código
  1. double producto_escalar(vector<double>v1,vector<double>v2)

Lo que debes hacer es:

Código
  1. s = producto_escalar (v1,v2);
  2. cout<<"el producto escalar es"<<s<<endl;

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
  1. for(i=0;(i<v1.size()) && (i<v2.size());i=i+1)

Corrige esto y avisanos como te fue.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: calcular producto escalar
« Respuesta #2 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:

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 = ||
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
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: calcular producto escalar
« Respuesta #3 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!
En línea

indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: calcular producto escalar
« Respuesta #4 en: 11 Diciembre 2012, 19:10 pm »

Gracias por el aporte.

He rectificado las erradas, pero sigue sin compilar bien.

Código:
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;

int producto_escalar(vector<int>v1,vector<int>v2){
     int i,s=0;
     for(i=0;(i<v1.size()) && (i<v2.size());i++){
               s=s+v1[i]*v2[i];      }
     return s;}
                      
                      


int main(){
    int i, k, e,n,s=0;
    
    
    cout<<"introduzca el tamaño del vector 1"<<endl;
    cin>>n;
    vector<int>v1(n);
    for(i=0;i<n;i=i+1){
                       cout<<"este es el elemento"<<i<<"...";
                       cin>>e;
                       v1[i]=e;}
    cout<<"introduzca el tamaño del vector 2"<<endl;
    cin>>n;
    vector<int>v2(n);
    for(i=0;i<n;i=i+1){
                       cout<<"este es el elemento"<<i<<"...";
                       cin>>e;
                       v2[i]=e;}
  
 s=producto_escalar(v1,v2){
 cout<<"el producto escalar es"<<s<<endl;}

system ("pause");
return 0;
En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: calcular producto escalar
« Respuesta #5 en: 11 Diciembre 2012, 19:12 pm »

No has declarado las variables v1, v2 que representan a los vectores.
En línea

indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: calcular producto escalar
« Respuesta #6 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
En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: calcular producto escalar
« Respuesta #7 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?
En línea

indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: calcular producto escalar
« Respuesta #8 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 "

En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: calcular producto escalar
« Respuesta #9 en: 12 Diciembre 2012, 03:33 am »

Pon un espacio entre el tipo del parametro y el nombre, es decir:

Código
  1. int producto_escalar(vector<int> v1,vector<int> v2)

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.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Escalar directorios
Programación Visual Basic
yeikos 5 3,321 Último mensaje 7 Octubre 2005, 18:25 pm
por DarkMouth
Escalar privilegios con c99.txt
Nivel Web
xalupeao 4 5,417 Último mensaje 22 Mayo 2009, 20:01 pm
por xalupeao
como calcular el costo e importe de un producto en java y mysql?
Java
hack-4-life 1 6,617 Último mensaje 16 Mayo 2011, 19:38 pm
por NetJava
Escalar privilegios en Windows
Hacking
Sacre 1 5,662 Último mensaje 9 Febrero 2012, 19:44 pm
por el-brujo
Nº de Serie y Nº de Producto
Hardware
B€T€B€ 6 6,191 Último mensaje 2 Junio 2024, 21:17 pm
por B€T€B€
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines