ejercicios de c++

39
Introducci´ on Selectiva simple Selectiva doble Selectiva m´ ultiple anidada Ejemplos Introducci´ on a los Computadores Estructuras algor´ ıtmicas selectivas CNM-130 Departamento de Matem´ aticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft 2010. Reproducci´on permitida bajo los erminos de la licencia de documentaci´on libre GNU.

Transcript of ejercicios de c++

Page 1: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Introduccion a los ComputadoresEstructuras algorıtmicas selectivas

CNM-130

Departamento de MatematicasFacultad de Ciencias Exactas y Naturales

Universidad de Antioquia

Copyleft «2010. Reproduccion permitida bajo los

terminos de la licencia de documentacion libre GNU.

Page 2: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Contenido

1 Introduccion

2 Estructura selectiva simple

3 Estructura selectiva doble

4 Estructura selectiva anidada

5 Ejemplos

Page 3: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Estructuras de control selectivas

Una sentencia condicional es una instruccion o grupo deinstrucciones que se pueden ejecutar o no en funcion del valor de unacondicion.

Se utilizan cuando en el desarrollo de la solucion de un problema sehace necesario tomar una decision para establecer un proceso.

Los sentencias condicionales constituyen, junto con los bucles, lospilares de la programacion estructurada.

Las estructuras selectivas se utilizan para tomar decisiones logicas.

Por medio de las estructuras selectivas se evalua una condicion ydependiendo del resultado la misma se realiza un proceso.

Page 4: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Estructuras de control selectivas

Las condiciones evaluadas por medio de las estructuras selectivas seespecifican utilizando expresiones logicas.

Clasificacion de las estructuras de control selectivas:

Si entonces (Estructura selectiva simple)

Si entonces / sino (Estructura selectiva doble)

Si multiple (Estructura selectiva multiple)

Page 5: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Estructura selectiva simple

La instruccion selectiva determina si una instruccion particular seejecuta o no, segun el cumplimiento de una condicion P.

La representacion de una estructura selectiva se hace con palabras(pseudocodigo) o por medio de una figura geometrica (diagrama deflujo).

Sintaxis en Octave

if P

Instrucciones;

end

donde

P: condicion o conjunto de condiciones aevaluar.

Intrucciones: instrucciones a realizar sila condicion P es verdadera.

Page 6: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplos

Ejemplo 2.1

Ralice un algoritmo (implementelo en DFD y Octave) tal que dado como dato lacalificacion de un alumno en un examen, escriba “reprobado” en caso de quedicha nota sea menor a 3.

Solucion

nota.m

% Programa : nota.m

% Descripcion: Dada la calificacion de un

% alumno en un examen, se imprime "reprobado"

% si la calificacion menor a 3.

% Lee la calificacion del alumnoNOTA = input("Ingrese la nota: ");

if NOTA<3.0

disp("Reprobado");

end

Page 7: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 2.2

Ejemplo 2.2

A un trabajador se le aplica un aumento del 15 % en su salario si este esmenor a 400 mil pesos. Realice un algoritmo (diagrama de flujo,pseudocodigo) que imprima el sueldo del trabajador. Implementelo en DFD.

Solucion

Datos:

SUE: variable de tipo real que representa el salario del trabajador.

Variables de salida:

AUM: variable de tipo real; almacena el aumento del trabajador.

NSUE: variable de tipo real; almacena el nuevo sueldo del trabajador.

Page 8: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 2.2

sueldo.m

% Dado como dato el sueldo de un trabajador,

% el programa aplica un aumento del 15 % si

% el sueldo es inferior a 400 mil pesos.

% Lee el sueldo del empleadoSUE = input("Ingrese el sueldo: ");

if SUE<400000

AUM = SUE*0.15;

NSUE = SUE + AUM;

fprintf("El nuevo sueldo es %g \n", NSUE);

end

# SUE AUM NSUE

1 145000 21750 1667502 5173203 284215 42632,25 326847,254 180500 27075 207575

Page 9: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Estructura selectiva doble

La instruccion selectiva doble si entonces / sino permite que el flujodel diagrama se bifurque por dos ramas diferentes dependiendo delcumplimiento de una condicion P.

Si al evaluar la condicion P el resultado es verdadero, entonces seejecuta un conjunto de instrucciones; si el resultado es falso seejecutan otro conjunto de instrucciones.

Sintaxis en Octave

if P

Instrucciones1;

else

Instrucciones2;

end

Page 10: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 3.1

Ejemplo 3.1

Realice un algoritmo (DFD, octave) tal que dado como dato la calificacionde un alumno en un examen, escriba “aprobado” si su calificacion es mayoro igual a 3 y “reprobado” en caso contrario.

Solucion

nota2.m

% Dada la calificacion de un alumno en

% un examen, se imprime "aprobado"si la

% calificacion mayor o igual a 3 y

% "reprobado" en caso contrario

% Lee la calificacion del alumnoNOTA = input("Ingrese la nota: ");

if NOTA>=3.0

disp("aprobado");

else

disp("reprobado");

end

Page 11: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 3.2

Ejemplo 3.2

A un trabajador se le aplica un aumento del 15 % en su salario si este esmenor a 400 mil pesos y 8 % en caso contrario. Realice un algoritmo(diagrama de flujo, pseudocodigo) que imprima el sueldo del trabajador.Implementelo en DFD.

Solucion

Datos:

SUE: variable de tipo real que representa el salario del trabajador.

Variables de salida:

NSUE: variable de tipo real; almacena el nuevo sueldo del trabajador.

Page 12: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 3.2

sueldo2.m

% Dado como dato el sueldo de un trabajador,

% el programa aplica un aumento del 15 % si

% el sueldo es inferior a 400 mil pesos y en

% caso contrario el aumento es del 8 %.

% Lee el sueldo del empleadoSUE = input("Ingrese el sueldo: ");

if SUE<=400000

NSUE = SUE*1.15;

else

NSUE = SUE*1.08;

end

printf("El nuevo sueldo es %f \n", NSUE);

# SUE NSUE

1 200000 2300002 550000 5940003 140000 1610004 400000 460000

Page 13: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Estructura selectiva anidada

Son estructuras selectivas que contienen a otras estructuras selectivas

Sintaxis en Octave

if Condicion1

if Condicion2

Operacion21;

else

Operacion22;

end

end

Page 14: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo

Sintaxis en Octave

if P1

Operacion11;

elseif P2

Operacion21;

else

Operacion22;

end

Page 15: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo

Sintaxis en Octave

if Condicion1

if Condicion2

Operacion21;else

Operacion22;

end

else

if Condicion3

Operacion31;

end

end

Page 16: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 4.1

Realice un algoritmo (DFD, octave) tal que dado como dato un entero,determine si es par y en caso de no serlo, determine si es divisble por 3.

Solucion

par.m

% Determina si un entero es par y en caso

% de no serlo, determina si es divisible

% por 3

% Lee enteroa = input("Ingrese un entero: ");

if (rem (a, 2) == 0)

printf ("El numero es par \n");elseif (rem (a, 3) == 0)

printf("El numero es impar...y no es divisible por 3 \n");

end

Page 17: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 4.2

Ejemplo 4.2

Realice un algoritmo (diagrama de flujo, pseudocodigo) que reciba comodatos de entrada tres numeros enteros distintos A, B y C y los escriba demayor a menor. Implementelo en FreeDFD.

Solucion

Datos:

A, B, C: variables de tipo entero.

Variables de salida:

A, B, C: variables de tipo entero; se imprimen en orden descendente.

Page 18: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

comparar.m

%*******************************************

% Descripcion: Dado tres enteros distintos,

% el programa los ordena de mayor a menor.

%*******************************************

% Lee tres enteros distintos

A = input("Ingrese un entero: ");

B = input("Ingrese un entero: ");

C = input("Ingrese un entero: ");

if A>B

if A>C

if B>C

printf(" %d, %d, %d \n", A, B, C);

else

printf(" %d, %d, %d \n", A, C, B);

end

else

printf(" %d, %d, %d \n", C, A, B);

end

else

if B>C

if A>C

printf(" %d, %d, %d \n", B, A, C);

else

printf(" %d, %d, %d \n", B, C, A);

end

else

printf(" %d, %d, %d \n", C, B, A);

end

end

Page 19: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.1

Ejemplo 5.1

Realice un algoritmo (DFD, Octave) que determine si un punto concoordenadas (x, y) se encuentra en el segundo o cuarto cuadrante del planocartesiano. Implementelo en FreeDFD.

Solucion

Datos:

x, y: variables de tipo real (coordenadas del punto).

Consideraciones:

Un punto (x, y) se encuentra en el segundo cuadrante si

x < 0 y y > 0 (1)

Un punto (x, y) se encuentra en el cuarto cuadrante si

x > 0 y y < 0 (2)

De (1) y (2), un punto (x, y) se encuentra en el segundo o cuarto cuadrante si

x · y < 0 (3)

Page 20: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.1

cuadrantes.m

% Determina si un punto de coordenadas

% (x,y) se encuentra en el segundo o

% cuarto cuadrante

% Lee x e yx = input("Ingrese x: ");y = input("Ingrese y: ");

if x*y<0

disp("Sı esta");

else

disp("Sı esta");

end

Page 21: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.2

Ejemplo 5.2

Realice un algoritmo (DFD, Octave) que determine si un punto concoordenadas (x, y) se encuentra en el interior de la circunferencia concentro en el origen y radio 3. Implementelo en FreeDFD.

Solucion

Datos:

x, y: variables de tipo real (coordenadas del punto).

Consideraciones:

La circunferencia con centro en (0, 0) y radio 3 esta dada por el conjunto depuntos (x, y) que satisfacen

x2 + y2 = 9 (4)

Un punto (x, y) se encuentra en el interior de dicha circunferencia si

x2 + y2 < 9 (5)

Page 22: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.2

cuadrantes.m

% Determina si un punto de coordenadas

% (x,y) se encuentra en el interior de

% una circunferencia con centro en el

% origen y radio 3

% Lee x e yx = input("Ingrese x: ");y = input("Ingrese y: ");

expr = x∧2+y∧2;

if expr<9

disp("Sı esta");

else

disp("No esta");

end

Page 23: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.3

Ejemplo 5.3

Realice un algoritmo (DFD, Octave) que calcule, de ser posible, las raicesreales de la ecuacion

ax2 + bx + c = 0, a 6= 0. (6)

Solucion

Consideraciones:

Las soluciones de la ecuacion cuadratica (6) vienen dadas por

x =−b±

√b2 − 4ac

2a(7)

La formula (7) puede conducir a soluciones complejas si

∆ = b2 − 4ac < 0

Variables:

a, b, c: variables de tipo real (coeficientes de la ecuacion) con a 6= 0.

dis: variable de tipo real; almacena el discriminante de la ecuacion.

x1 y x2: variables de tipo real; almacenan las raices de la ecuacion.

Page 24: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.3

raices.m

% Determina las soluciones reales de la

% ecuacion cuadratica ax∧2+bx+c=0

% Lee los coeficientes de la ecuaciona = input("Ingrese a: ");b = input("Ingrese b: ");c = input("Ingrese c: ");

dis = b∧2-4*a*c;

if dis>=0

x1 = (-b+sqrt(dis))/(2*a);

x2 = (-b-sqrt(dis))/(2*a);

printf("Raıces reales: %g y %g \n", x1, x2);

end

Page 25: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.4

Ejemplo 5.4

Realice un algoritmo (DFD, Octave) tal que dado como dato un numeroentero, determine e imprima si el mismo es postivo, negativo o nulo.

Solucion

signo.m

% Dado como dato un entero,

% determina si el numero es

% postivo, negativo o nulo.

% Lee el numeroNUM = input("Ingrese un numero: ");

if NUM > 0disp("Positivo");

elseif NUM == 0

disp("Nulo");else

disp("Negativo");end

end

Page 26: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.5

Ejemplo 5.5

Realice un algoritmo (DFD, Octave) tal que dado como dato un numeroentero, determine e imprima si el mismo es par, impar o nulo.

Solucion

par2.m

% Dado como dato un numero entero

% N, determina si el numero es par,

% impar o nulo.

% Lee el numeroN = input("Ingrese un numero: ");

if N==0disp("Nulo");

elseif (-1)∧ N > 0

disp("Par");else

disp("Impar");end

endif

Page 27: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.6

Ejemplo 5.6

Realice un algoritmo (DFD, Octave) tal que dado como datos tres numerosenteros, determine si estos estan en orden creciente.

Solucionordenar.m

% Descripcion: Dado tres enteros distintos, determina

% si estan ordenados de menor a mayor

% Lee tres enteros distintos

A = input("Ingrese un entero: ");

B = input("Ingrese un entero: ");

C = input("Ingrese un entero: ");

if A < B

if B <= C

disp("Los numeros estan en orden creciente");

else

disp("Los numeros no estan en orden creciente");

end

else

disp("Los numeros no estan en orden creciente");

end

Page 28: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.7

Ejemplo 5.7

Una tienda norteamericana efectua un descuento a sus clientes dependiendodel monto de la compra (en dolares). El descuento se efectua de acuerdo alos siguientes criterios:

1 monto < $500⇒ no haydescuento

2 $500 < monto ≤ $1000⇒ 5 %de descuento

3 $1000 < monto ≤ $7000⇒

11 % de descuento

4 $7000 < monto ≤ $15000⇒18 % de descuento

5 monto > $15000⇒ 25 % dedescuento

Realice un algoritmo (diagrama de flujo, pseudocodigo) tal que dado elmonto de la compra de un cliente, determine lo que el mismo debe pagar.

Solucion

Datos:

COMPRA: variables de tipo real; representa el monto de la compra.

PAGO: variables de tipo real; representa el valor a pagar.

Page 29: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.7

descuentos.m

COMPRA = input("Valor de la compra: ");

if COMPRA < 500

PAGO = COMPRA;

else

if COMPRA < 1000;

PAGO = 0.95*COMPRA;

else

if COMPRA <= 7000;

PAGO = 0.89*COMPRA;else

if COMPRA <= 15000;

PAGO = 0.82*COMPRA;else

PAGO = 0.75*COMPRA;

end

end

end

endif

printf("Cantidad a pagar: %g \n", PAGO);

Page 30: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.8

Ejemplo 5.8

En un paıs los impuestos que debe pagar una persona al comprar unartıculo se calculan de la siguiente manera: los primeros $20 no causanimpuesto, los siguientes $20 tienen el 30 % de impuesto y el resto el 40 % deimpuesto, pero si el costo del producto es mayor a $500, entonces en lugardel 40 % se cobra el 50 %.

Realice un algoritmo (DFD, Octave) que lea el costo basico de unartıculo y calcule su precio total (precio total = precio basico + impuesto).

Solucion

Variables:

PREBAS: variables de tipo real; almacena el precio basico del producto.

IMP: variables de tipo real; almacena el impuesto del producto que seingresa.

PRETOT: variables de tipo real; almacena el costo total del producto(costo basico mas impuesto).

Page 31: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

impuestos.m

% Dado el costo de un artıculo,

% aplica un descuento.

% Lee el precio basicoPREBAS = input("Ingrese precio basico: ");

if PREBAS > 500

IMP = 20*0.30 + (PREBAS-40)*0.5;

else

if PREBAS > 40

IMP = 20*0.30 + (PREBAS-40)*0.4;

else

if PREBAS > 20

IMP = (PREBAS-20)*0.3;

else

IMP = 0;

end

end

end

PRETOT = PREBAS + IMP;

printf("Precio total: %g \n", PRETOT);

Page 32: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.9

Ejemplo 5.9

Cierta universidad para liquidar el pago de matrıcula de un estudiante exige lossiguientes datos:

1 Numero de inscripcion

2 Nombres

3 Patrimonio

4 Estrato social

La universidad cobra un valor constante para cada estudiante de $50000. Si elpatrimonio es mayor a dos millones y el estrato es superior a 3, se le incrementaun porcentaje dle 3 % sobre el patrimonio. Realice un algoritmo (diagrama deflujo, pseudocodigo) que muestre:

Numero deinscripcion

Nombres Pago de matrıcula

Solucion

Variables:

NI: variable de tipo entera, representa el numero de inscripcion.

NOM: variable de tipo cadena de caracteres, representa el nombre.

PAT: variable de tipo real, representa el patrimonio.

EST: variable de tipo entera, representa el estrato.

PAGMAT: variable de tipo real, almacena el pago de matrıcula.

Page 33: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.9

pago matricula.m

% Calcula el pago de matrıcula de un

% estudiante dependiendo de su estrato

% social y su patrimonio.

NI = input("Ingrese numero de inscripcion: ");NOM = input("Ingrese nombres: ", "s");PAT = input("Ingrese patrimonio: ");EST = input("Ingrese estrato social: ");

PAGMAT = 50000;

if (PAT> 2000000) & EST>3

PAGMAT = PAGMAT + 0.03;

endif

printf("\nNumero de inscripcion: %g \n", NI);printf("Nombre: %s \n", NOM);printf("Pago de matrıcula: %g \n", PAGMAT);

Page 34: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.10

Ejemplo 5.10

Un almacen efectua una promocion en la cual se hace un descuento sobre elvalor de la compra total, segun el color de la bolita que el cliente saque alpagar en la caja. Si la bolita es blanca no se le hara descuento alguno, si esverde se le hara un 10 % de descuento, si es amarilla un 25 %, si es azul un50 % y si es roja un 100 %.

Realice un algoritmo (DFD, Octave) que determine la cantidad final que uncliente debera pagar por su compra. Se sabe que solo hay bolitas de loscolores mencionados.

Solucion

Variables :

VCOMP: variable de tipo real, almacena el valor de la compra.

COL: variable de tipo cadena de caracteres, almacena el color de labolita.

VPAG: variable de tipo real, almacena valor a pagar.

PDES: variable de tipo entera, almacena el porcentaje de descuento.

Page 35: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

balotas.m

VCOMP = input("Ingrese valor de la compra: ");COL = input("Ingrese color obtenido: ", "s");

if strcmp(COL,"BLANCO")

PDES = 0;

else

if strcmp(COL,"VERDE")

PDES = 10;

else

if strcmp(COL, "AMARILLO")

PDES = 25;

else

if strcmp(COL,"AZUL")

PDES = 50;

else

PDES = 100;

end

end

end

end

VPAG = VCOMP - PDES*VCOMP/100;printf("El cliente debe pagar: %g \n", VPAG);

Page 36: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Ejemplo 5.11

Ejemplo 5.11

Se tienen cuatro esferas A, B, C y D de las cuales se sabe que tres son deigual peso y una diferente. Realice un algoritmo (DFD, Octave) que recibacomo datos los pesos de las cuatro esferas y determine cual es la esferadiferente y si es de mayor o menor peso.

Solucion

Variables :

PESOA: variable de tipo real, almacena el peso de la esfera A

PESOB: variable de tipo real, almacena el peso de la esfera B

PESOC: variable de tipo real, almacena el peso de la esfera C

PESOD: variable de tipo real, almacena el peso de la esfera D

Page 37: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Page 38: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

esferas.m

PESOA = input("Ingrese peso esfera A: "); PESOB = input("Ingrese peso esfera B: ");

PESOC = input("Ingrese peso esfera C: "); PESOD = input("Ingrese peso esfera D: ");

if (PESOA == PESOB) & (PESOA == PESOC)

if PESOD > PESOA

disp("La esfera D es la diferente y es de mayor peso");

else

disp("La esfera D es la diferente y es de menor peso");

end

else

if (PESOA == PESOB) & (PESOA == PESOD)

if PESOC > PESOA

disp("La esfera C es la diferente y es de mayor peso");

else

disp("La esfera C es la diferente y es de menor peso");

end

else

if (PESOA == PESOC) & (PESOA == PESOD)

if PESOB > PESOA

disp("La esfera B es la diferente y es de mayor peso");

else

disp("La esfera B es la diferente y es de menor peso");

end

else

if PESOA > PESOB

disp("La esfera A es la diferente y es de mayor peso");

else

disp("La esfera A es la diferente y es de menor peso");

end

end

end

endif

Page 39: ejercicios de c++

Introduccion Selectiva simple Selectiva doble Selectiva multiple anidada Ejemplos

Referencias

O. CairoMetodologıa de la programacionSegunda edicion. Alfaomega Grupo Editor, S.A., 2005

M.A. CriadoProgramacion en lenguajes estructuradosAlfaomega Grupo Editor, S.A. de C.V. Primera Edicion, 2006

J.W. EatonGNU Octave: A high-level interactive language for numericalcomputationsNetwork Theory Ltd., 2002