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.