Operaciones con vectores (II)

De Ejercicios

Contenido

Enunciado

El siguiente programa es el mismo que se sugirió en Operaciones con vectores, pero puestos a escribirlo otra vez se ha introducido una novedad: la sentencia switch. La sentencia switch funciona de la siguiente manera: se evalúa la expresión que se encuentra a la derecha del switch y entre paréntesis. A continuación se rastrean las etiquetas hasta que se encuentra una que corresponda a dicho valor; entonces se transfiere el control del programa a dicha línea. Si ninguna de las etiquetas encaja se transfiere el control a la línea marcada con la etiqueta default. La sentencia break, que es opcional, hace que el programa salga del switch y se dirija a la sentencia situada inmediatamente después del mismo. De no utilizar el break, se ejecutarían todas las sentencias situadas entre la etiqueta correspondiente y el final del switch. Las etiquetas de un switch deben ser constantes de tipo entero (incluyendo char) o bien expresiones de constantes. ¡Nunca se pueden emplear variables!. Guarda este programa como vectors2.c.

Soluciones

Programa en C por Angel

Solución comentada al Ejercicio:

 /* fichero vectors2.c */
 #include <stdio.h>
 void main(void) {
   double vector1[3], vector2[3], vector3[3];
   int i,numero;
   void suma(double *, double *, double *);
   void resta(double *, double *, double *);
   double productoEscalar(double *, double *);
   void productoVectorial(double *, double *, double *);
   printf("Este programa realiza las siguientes operaciones:");
   printf("con dos vectores:\n");
   printf("1.- Suma\n\b2.- Resta\n\b");
   printf("3.- Multiplica escalarmente\n\b");
   printf("4.- Multiplica vectorialmente\n");
   printf("Que operacion deseas realizar? ");
   printf("Teclea su numero correspondiente: ");
   scanf("%d", &numero);
   printf("\nDame las componentes del primer vector:\n");
   for (i=0; i<3; i++) {
      printf("vector1[%d]=", i+1);
      scanf("%lf", &vector1[i]);
   }
   printf("\nDame las componentes del segundo vector:\n");
   for(i=0; i<3; i++) {
     printf("vector2[%d]=", i+1);
     scanf("%lf", &vector2[i]);
   }
   printf("\n");
   switch (numero) {
     case 1:
            suma(vector1, vector2, vector3);
            printf("La suma de los dos vectores es el vector:\n");
            printf("{ ");
            for (i=0; i<3; i++)
               printf("%lf ",vector3[i]);
            printf("}\n");
            break;
     case 2:
            resta(vector1, vector2, vector3);
            printf("La resta de los dos vectores es el vector:\n");
            printf("{ ");
            for (i=0; i<3; i++)
               printf("%lf ",vector3[i]);
            printf("}\n");
            break;
     case 3:
            printf("El producto escalar de los dos vectores es: %lf\n", productoEscalar(vector1, vector2));
            break;
     case 4:
            productoVectorial(vector1, vector2, vector3);
            printf("El producto vectorial de los dos vectores es:\n");
            printf("{ ");
            for(i=0; i<3; i++)
               printf("%lf ", vector3[i]);
            printf("}\n");
            break;
   }
 }
 void suma(double *a, double *b, double *c) {
   int i;
   for (i=0; i<3; i++)
      c[i]=a[i]+b[i];
 }
 void resta(double *a, double *b, double *c) {
   int i;
   for (i=0; i<3; i++)
      c[i]=a[i]-b[i];
 }
 double productoEscalar(double *a, double *b) {
   int i;
   double escalar=0;
   for (i=0; i<3; i++)
     escalar+=a[i]*b[i];
   return(escalar);
 }
 void productoVectorial(double *a, double *b, double *c) {
   c[0]=a[1]*b[2]-a[2]*b[1];
   c[1]=-a[0]*b[2]+a[2]*b[0];
   c[2]=a[0]*b[1]-a[1]*b[0];
 }

Comentario

Este programa es muy fácil de entender y no requiere ningún comentario particular.

Tipos de soluciones
Herramientas
icono.png);" href="/mcdiaz/docencia/ejercicios/index.php?title=P%C3%A1gina_Principal" title="Portada [z]" accesskey="z">
Tipos de soluciones