18/02/2020, 05:39:09 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: Homenaje a aladan
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: magnitud de un vector dado su dimension y componentes (donde esta el error)  (Leído 1316 veces)
0 Usuarios y 1 Visitante están viendo este tema.
leonardo09
Leonardo Andrés Jofré Flor
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Chile Chile

Mensajes: 798

Leonardo Jofré


Ver Perfil WWW
« : 22/07/2008, 13:59:21 »

/* Diceñar una funcion Modulo(x,n) que determina el largo del vector*/

#include <stdio.h>
#include <math.h>

float Modulo(float, float);

main()
{
      int n, counter;
      float x[n];
     
      printf("Ingrese la longitud del vector");
      scanf("%d", &n);
     
      if(n <= 1){
           printf("Valor no valido");
           }
      else{
           for(counter = 0; counter <=(n-1); counter++) {
                 printf("Ingrese el dato para X[%d]",counter);
                 scanf("%f", &x[counter]);     
                       }
      printf("La magnitud del vector ingresado es: %f", Modulo(x,n));
           }
      getchar();
      return(0);
      }
     
float Modulo(float x, int n)
{
      double magnitud;
      int j, total = 0;
     
      for(j = 0; j = n-1; j++){
            total = total + pow(x[j],2);
            }
           
      magnitud = sqrt(total);
     
      return(magnitud);
     
      }

¿Cual es el error?
En línea

nunca seré buen matemático
Luis Fuentes
el_manco
Administrador
Pleno*
*****

Karma: +0/-0
Conectado Conectado

Sexo: Masculino
España España

Mensajes: 45.970


Ver Perfil
« Respuesta #1 : 23/07/2008, 05:22:39 »

Hola

 Correcciones y comentarios:


#include <stdio.h>
#include <math.h>

float Modulo(float *x, int n);

Declara la función exactamente como la vas a definir luego. Además los vectores y matrices se pasan como punteros. Es decir no pasas una copia del vector, sino la dirección de su primer elemento. De ahí el asterisco.

main()
{
      int n, counter;
      float x[n];
     
      printf("Ingrese la longitud del vector");
      scanf("%d", &n);
     
      if(n <= 1){
           printf("Valor no valido");
           }
      else{
           for(counter = 0; counter <=(n-1); counter++) {
                 printf("Ingrese el dato para X[%d]",counter);
                 scanf("%f", &x[counter]);     
                       }
      printf("La magnitud del vector ingresado es: %f", Modulo(x,n));
           }
      getchar();
      return(0);
      }
     
float Modulo(float * x, int n)

De nuevo el vector como puntero.
{
      double magnitud, total=0.;

total es una variable que va a sumar números no necesariamente enteros. Tampoco entiendo muy bien porque en unos sitios usas double y otros float. Aunque esto funcionará bien en muchos casos en otros podría dar algún problema difícil de encontar. Lo mejor es decidirse si queremos el resultado en precisión simple o doble.
      int j;
     
      for(j = 0; j <= n-1; j++){
te comiste el menor o igual
            total = total + pow(x[j],2);
            }
           
      magnitud = sqrt(total);
     
      return(magnitud);
     
      }

Saludos.
En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!