Foros del Web » Programación para mayores de 30 ;) » C/C++ »

vectores de dimension i-esima.

Estas en el tema de vectores de dimension i-esima. en el foro de C/C++ en Foros del Web. Hola estoy intentand hacer un programita en el qual se pide la introduccion de la dimension de un vector1 y la de un vector2 y ...
  #1 (permalink)  
Antiguo 04/12/2007, 13:46
 
Fecha de Ingreso: noviembre-2004
Mensajes: 149
Antigüedad: 19 años, 5 meses
Puntos: 0
vectores de dimension i-esima.

Hola estoy intentand hacer un programita en el qual se pide la introduccion de la dimension de un vector1 y la de un vector2 y despues que efectuen el producto escalar entre ellos(esto es multiplicar componente a componente y despues sumar). Para ello pido la dimension, luego los valores de las componentes de los vectores, hasta ahi todo bien pero luego, no se como hacer que se multipliquen la componente 1 del vector1 con la componente 1 del vector 2.

ejemplo de producto escalar:
<1,2>*<2,1>=2+2=4
Si el vector fuera de dimension explicita seria muy facil pero, al poder introducir el usuario la dimension no me sale!!!!!
Alguien me ayuda ????
__________________
¨`~*'¤^v-¥-()->»[: "3£ 1NƒîêRNø Nø ê$ UN Må£ £UGåR" :]«<-()-¥-v^¤'*~´¨
  #2 (permalink)  
Antiguo 04/12/2007, 14:18
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: vectores de dimension i-esima.

Con un ciclo for y una variable para acumular la suma sale eso, el ciclo for (o el while) comenzaría en 0 y llega hasta n-1, donde n es la cantidad de elementos de tu arreglo.

Piensalo un poco con las pistas que te acabo de dar.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 04/12/2007, 14:55
 
Fecha de Ingreso: noviembre-2004
Mensajes: 149
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: vectores de dimension i-esima.

oki, lo intentare xDDD.
__________________
¨`~*'¤^v-¥-()->»[: "3£ 1NƒîêRNø Nø ê$ UN Må£ £UGåR" :]«<-()-¥-v^¤'*~´¨
  #4 (permalink)  
Antiguo 04/12/2007, 15:44
 
Fecha de Ingreso: noviembre-2004
Mensajes: 149
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: vectores de dimension i-esima.

pues lo he estado pensando y ni papa. Pego el Codigo fuente a ver si asi emjor.
#include <stdio.h>
#define MAX 1000

void main(){
int dim1,dim2,i,j,resultat;
int vector1[MAX];
int vector2[MAX];
printf("####Calcul del producte escalar de 2 vectors de dimensio qualsevol####\n\n\n ");
printf("Introdueix la dimensio del vector\n");
scanf("%d",&dim1);
printf("Introdueix la dimensio del segon vector\n");
scanf("%d",&dim2);

if(dim1 && dim2 >=MAX) {
printf("No es permeten vectors de mes de 999 components\n");
}
else if(dim1 == dim2){
printf("La dimensio dels vectors es igual\n");
printf("Introdueix els valors del vector1\n");
for(i=0;i<=dim1-1;i++)
{
scanf("%d",&vector1[i]);
}
printf("Introdueix els vals del vector2\n");
for(j=0;j<=dim2-1;j++)
{

scanf("%d",&vector2[j]);
}
for(i=0;i<=dim1-1;i++)
for(j=0;j<=dim2-1;j++)
{
resultat=(vector1[i]*vector2[j])+(vector1[i++]*vector2[j++]);//aqui es lo que me falla

}
printf("%d",resultat);



}
else{

printf("La dimensio dels vectors no es igual!!\n");



}
}
__________________
¨`~*'¤^v-¥-()->»[: "3£ 1NƒîêRNø Nø ê$ UN Må£ £UGåR" :]«<-()-¥-v^¤'*~´¨
  #5 (permalink)  
Antiguo 05/12/2007, 06:44
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Re: vectores de dimension i-esima.

Consejo: coloca todo el código en las etiquetas CODE para que se vea mejor:
Código:
#include <stdio.h>
#define MAX 1000

void main()
{
   int dim1,dim2,i,j,resultat;
   int vector1[MAX];
   int vector2[MAX];
   printf("####Calcul del producte escalar de 2 vectors de dimensio qualsevol####\n\n\n ");
   printf("Introdueix la dimensio del vector\n");
   scanf("%d",&dim1);
   printf("Introdueix la dimensio del segon vector\n");
   scanf("%d",&dim2);

   if(dim1 && dim2 >=MAX) 
   {
      printf("No es permeten vectors de mes de 999 components\n");
   }
   else if(dim1 == dim2)
   {
      printf("La dimensio dels vectors es igual\n");
      printf("Introdueix els valors del vector1\n");
      for(i=0;i<=dim1-1;i++)
      {
         scanf("%d",&vector1[i]);
      }
      printf("Introdueix els vals del vector2\n");
      for(j=0;j<=dim2-1;j++)
      {
         scanf("%d",&vector2[j]);
      }
      for(i=0;i<=dim1-1;i++)
         for(j=0;j<=dim2-1;j++)
         {
            resultat=(vector1[i]*vector2[j])+(vector1[i++]*vector2[j++]);//aqui es lo que me falla

         }
      printf("%d",resultat);
   }
   else
   {
      printf("La dimensio dels vectors no es igual!!\n");
   }
Más fácil de leer, ¿cierto?

En primer lugar si vas a sumar o a calcular el producto escalar de dos vectores estos tienen que ser de la misma dimensión, lo cual implica que no es necesario tener las 2 dimensiones, a menos que las requieras para una operación posterior o pretendas que en algún momento sean de dimensión diferente.

En vez de escribir el for asi:
Código:
for(j=0;j<=dim2-1;j++)
Lo haría así:
Código:
for(j = 0; j < dim2; j++)
Lo mismo para los otros ciclos que tienes. En cuanto a la parte en la que calculas el producto:
Código:
   for(i=0;i<=dim1-1;i++)
         for(j=0;j<=dim2-1;j++)
         {
            resultat=(vector1[i]*vector2[j])+(vector1[i++]*vector2[j++]);//aqui es lo que me falla

         }
Que no se te olvide que en el ciclo ya incrementas las variables de control (i y j), asi que no es necesario usar el operador "++" en la expresión donde calculas el producto de las componentes del arreglo, otro detalle es que no debes olvidar que en cada iteración de tu código estás borrando el valor calculado con anterioridad, es decir, debe usar un acumulador:
Código:
variable += <expresion>; //equivalente a: variable = variable + <expresion>;
Eso funciona con cualquier operador. Te dejo de tarea que apliques esos cambios y corrijas los detalles que faltan.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #6 (permalink)  
Antiguo 05/12/2007, 09:56
 
Fecha de Ingreso: noviembre-2004
Mensajes: 149
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: vectores de dimension i-esima.

muchar gracias, en cuanto a lo de la dimension ya se que tiene que ser de la misma dimension pero quiza quieras hacer el producto escalar de 2 vectores de diemnsion 30 o de dimension 2. xXDDD
__________________
¨`~*'¤^v-¥-()->»[: "3£ 1NƒîêRNø Nø ê$ UN Må£ £UGåR" :]«<-()-¥-v^¤'*~´¨
  #7 (permalink)  
Antiguo 05/12/2007, 10:08
 
Fecha de Ingreso: noviembre-2004
Mensajes: 149
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: vectores de dimension i-esima.

he echo todos los cambios mencionados pero me sigue sin dar bien :
Código:
#include <stdio.h>
#define MAX 1000

void main(){
	int dim1,dim2,i,j,resultat;
	int vector1[MAX];
	int vector2[MAX];
    printf("####Calcul del producte escalar de 2 vectors de dimensio qualsevol####\n\n\n ");
	printf("Introdueix la dimensio del vector\n");
	scanf("%d",&dim1);
	printf("Introdueix la dimensio del segon vector\n");
		scanf("%d",&dim2);

		if(dim1 && dim2 >=MAX) {
			printf("No es permeten vectors de mes de 999 components\n");
		}
		else if(dim1 == dim2){
			printf("La dimensio dels vectors es igual\n");
			printf("Introdueix els valors del vector1\n");
			for(i=0;i<=dim1-1;i++)
			{
				scanf("%d",&vector1[i]);
			}
			printf("Introdueix els vals del vector2\n");
            for(j=0;j<=dim2-1;j++)
			{
				
				scanf("%d",&vector2[j]);
			}
		for(i=0;i<dim1;i++)
			for(j=0;j<dim2;j++)
			{
				resultat+=(vector1[i]*vector2[j])+(vector2[j]*vector1[i]);//aqui es lo que me falla
					
			}
			printf("%d",resultat);
		
	

		}
		else{
	
			printf("La dimensio dels vectors no es igual!!\n");
			


}
}
__________________
¨`~*'¤^v-¥-()->»[: "3£ 1NƒîêRNø Nø ê$ UN Må£ £UGåR" :]«<-()-¥-v^¤'*~´¨
  #8 (permalink)  
Antiguo 05/12/2007, 10:10
 
Fecha de Ingreso: noviembre-2004
Mensajes: 149
Antigüedad: 19 años, 5 meses
Puntos: 0
Re: vectores de dimension i-esima.

bueno lo del for no lo he cambiado xDDD.
__________________
¨`~*'¤^v-¥-()->»[: "3£ 1NƒîêRNø Nø ê$ UN Må£ £UGåR" :]«<-()-¥-v^¤'*~´¨
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:47.