You are on page 1of 7

CAPTULO

2.4 crear un tad para representar un vector, matriz y numero complejo


tad vector (secuencia de n elementos del mismo tipo).
sintaxis
*crearvector (entero)
*asignar (vector, entero, elemento)
obtenerelemento (vector, entero)
subvector (vector, entero, entero)

->
->
->
->

vector.
vector.
elemento.
vector.

una matriz y sus diferentes operaciones


tad matriz (secuencia de elementos organizados en filas y columnas).
sintaxis
*crearmatriz (entero, entero)
asignar (matriz, entero, entero, elemento)
obtenerelemento (matriz, entero, entero)
sumar (matriz, matriz)
productoescalar (matriz, valor)

->

ejemplo:
archivo de cabecera matriz.h
typedef struct matriz
{
int filas, columnas;
tipodato **m;
}
matriz;
matriz *crearmatriz (int filas, int columnas)
void asignar (matriz mat, int f, int c, tipodato el)
tipodato *obtenerelemento (matriz mat, int f, int c)
matriz *sumar (matriz mat1, matriz mat2)
matriz *productoescalar (matriz mat, int n)
archivo de implementacin matriz.c
matriz *crearmatriz (int filas, int columnas)

tipodato **vfilas;
matriz mat;
int i;
vfilas = (tipodato**) malloc (filas*sizeof(tipodato*));
for (i=0; i filas; i++)

->
matriz.
->
matriz.
->
matriz.
->
matriz.
matriz.

vfilas[i] = (tipodato*) malloc


(columnas*sizeof(tipodato));
mat.filas = filas;
mat.columnas = columnas;
mat.m = vfilas;
return &mat;

void asignar (matriz mat, int f, int c, tipodato el)


{
mat.m[f][c] = el;
}
tipodato *obtenerelemento (matriz mat, int f, int c)
{
return (&mat.m[f][c]);
}
matriz *sumar (matriz mat1, matriz mat2)
{
matriz res;
int i, j;
if ((mat1.filas != mat2.filas) ||
(mat2.columnas != mat2.columnas))
return null;
res = crearmatriz (mat1.filas, mat1.columnas);
for (i = 0; i mat1.filas; i++)
for (j = 0; j mat1.columnas; j++)
res.m[i][j] = mat1.m[i][j] + mat2.m[i][j];
return (&res);
}
matriz *productoescalar (matriz mat, int n)
{
matriz res;
int i, j;
res = crearmatriz (mat1.filas, mat1.columnas);
for (i = 0; i mat1.filas; i++)
for (j = 0; j mat1.columnas; j++)
res.m[i][j] = mat.m[i][j] * n;
return (&res);
}
archivo de prueba pruebamatrices.c
typedef int tipodato;

#include "matriz.h"
main()
{
matriz mat1, mat2, *matsuma, *matprod;
int filas, columnas, i, j, el, n;
printf ("introduzca el nmero de filas y de columnas de las matrices\n");
printf ("filas: "); scanf ("%d", &filas);
printf ("columnas: "); scanf ("%d", &columnas);
mat1 = crearmatriz(filas, columnas);
mat2 = crearmatriz(filas, columnas);
printf ("\n introduzca los elementos de la primera matriz \n");
for (i = 0; i filas; i++)
for (j = 0; j columnas; j++)
{
printf ("\nfila: %d, columna: %d = ", i, j);
scanf ("%d", &el);
asignar (mat1, i, j, el);
}
printf ("\n introduzca los elementos de la segunda matriz \n");
for (i = 0; i filas; i++)
for (j = 0; j columnas; j++)
{
printf ("\nfila: %d, columna: %d = ", i, j);
scanf ("%d", &el);
asignar (mat2, i, j, el);
}
matsuma = sumar (mat1, mat2);
printf ("\n\n resultado de la suma de ambas matrices: \n");
for (i = 0; i filas; i++)
{
for (j = 0; j columnas; j++)
{
printf ("%d ", *obtenerelemento (*matsuma, i, j))
printf ("\n");
}
}
printf ("\n introducir un nmero por el que multiplicar la primera matriz: ");
scanf ("%d", &n);
matprod = productoescalar (mat1, n);
printf ("\n\n resultado del producto escalar de la primera matriz por el nmero
%d: \n", n);
for (i = 0; i filas; i++)

{
for (j = 0; j columnas; j++)
printf ("%d ",obtenerelemento (*matsuma, i, j))
printf ("\n");
}
}

un nmero complejo y sus diferentes operaciones.

tad complejo (par de nmeros reales que representan la parte real e


imaginaria de un nmero complejo segn el concepto matemtico).
sintaxis
*asignareal (complejo, real)
*asignaimaginaria (complejo, real)
partereal (complejo)
parteimaginaria (complejo)
modulo (complejo)
suma (complejo1, complejo2)

->
->
->
->
->
->

complejo
complejo
real
real
real
complejo

2.5
crear un tad que represente un dato tipo cadena (string) y sus
diversas operaciones: clculo de longitud, buscar posicin de un carcter
dado, concatenar cadenas, extraer una subcadena,
etc.
tad cadena (secuencia de caracteres ascii terminada por un byte nulo).
sintaxis
*cadenavaca
*asignar (cadena, cadena)
longitud (cadena)
buscar (cadena, carcter)
->
concatenar (cadena1, cadena2)
extraer (cadena, posicin, numcaracteres)

->
cadena
cadena
entero

->
->
entero
->
cadena
->
cadena

ejemplo:
cadena.h
#define n 100
typedef char cadena [n];
cadena cadenavacia ();
cadena asignar (cadena cad1, cadena cad2);
int longitud (cadena cad);
int buscar (cadena cad, char c);
cadena concatenar (cadena cad1, cadena cad2);
cadena extraer (cadena cad, int pos, int numcar);
#include cadena.h

cadena cadenavacia ()
{
char *vacia = (char*) malloc(80);
return vacia;
}
cadena asignar (cadena cad1, cadena cad2)
{
return strcat (cad1, cad2);
}
int longitud (cadena cad)
{
return (strlen (cad));
}
int buscar (cadena cad, char c)
{
return (strchr (cad, c));
}
cadena concatenar (cadena cad1, cadena cad2)
{
return (strcat(cad1,cad2));
}
cadena extraer (cadena cad, int pos, int numcar);
{
char *aux = (char*) malloc (numcar + 1);
int i,j = 0;
for (i = pos; i < pos+numcar; i`++)
aux[j] = cad[i];
return aux;
}
main()
{
cadena cad1;
cadena cad2, cad3;
cad1 = cadenavacia ();
cad2 = cadenavacia ();
cad2 = cadenavacia ();
printf ("introduzca una cadena de caracteres: ");
scanf ("%s", cad1);
printf ("\nsu cadena tiene %d caracteres.\n", longitud(cad1));
printf ("esta es la cadena con las dos mitades intercambiadas\n");
mitad = (int)(longitud(cad1)/2);

cad2 = extraer (cad1, 0, mitad);


cad3 = extraer (cad1, mitad+1, mitad);
cad3 = concatenar (cad3, cad2);
puts (cad3);
}

capitulo 3
3.1 describa y justifique los objetos que obtiene de cada uno de estos casos:
a) los habitantes de europa y sus direcciones de correo
los objetos en esta oracin son los habitantes de europa y las direcciones de
correo ya que al crear la clase habitante se la puede instanciar como alguien que
vive en europa y las direcciones se las puede instanciar diciendo que es una
direccin de correo.
b) los clientes de un banco que tienen una caja fuerte alquilada.
los objetos son los clientes, y la caja fuerte ya que se los puede instanciar a ambos
y darles valor a sus atributos en caso de los clientes decir que son clientes de un
banco y en caso de la caja agregarle que es fuerte y adems alquilada.
c) las direcciones de correo electrnico de una universidad.
los objetos son las direcciones de correo ya que a esta se le puede instanciar y
usarla para cualquier otro tipo de direccin, como ser domicilio, etc.
d) los empleados de una empresa y sus claves de acceso a sistemas de seguridad
los objetos son los empleados, la empresa y el sistema de seguridad ya que con
ellas se puede reutilizar en otros problemas.
3.2 cules seran los objetos que han de considerarse en los siguiente sistemas?
a) un programa para maquetar una revista
objetos: programa, revista
b) un contestador telefnico
objeto: contestador
c) un sistema de control de ascensores
objeto: sistema de control

d) un sistema de suscripcin a una revista


objetos: sistema de suscripcin, revista.
3.3 deducir los objetos necesarios para disear un programa de computadora que
permita jugar a diferentes juegos de cartas.
objetos: cartas, jugadores, jugadas, premio, dinero, juez _dejugadas.
3.4 dibujar un diagrama de objetos que represente la estructura de un coche
(carro). indicar las posibles relaciones de asociacin, generalizacin y agregacin.

relacin de agregacin

Parte de

Motor

Parte de

Coche

Chasis
Parte de

Parte de
Sistem
a de
frenos

Sistema
transmision

relacin de agregacin

Tiene un

Motor

Tiene un

Coche

Chasis
Tiene un
Sistem
a de
frenos

Tiene un

Sistema
transmision

You might also like