2 Estructura de Datos

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 20

PROGRAMA:

INGENIERIA DE SOFTWARE

ASIGNATURA:
ESTRUCTURA DE DATOS

TEMA:
ACTIVIDAD DE APRENDIZAJE DE LA UNIDAD 2

MANUEL DE JESUS PEREZ NAVARRO

TUTOR:
BIVIAN ROBLES ACOSTA
Ejercicios Propuestos - Unidad II

Investigar y presentar en un documento de Word las siguientes preguntas:

1. Cuales son y para que se utilizan los Métodos definidos por Vector

- Void addElement(Object obj): Añade un elemento al final del vector.

- Object ElementAt(int índice): Devuelve el elemento de la posición del vector indicada por
el indice.

- Void insertElementAt(Object obj, int índice): Inserta un elemento en la posición


indicada.

- Boolean removeElementAt(Object obj): Elimina el elemento indicado del vector,


devolviendo true si dicho elemnto estaba contenido en el vector, y false en caso contrario.

- Void removeElemntAt(int indice): Elimina el elemento de la posición indicada en el


indice.

- Void setElementAt(Object obj, int indice): Sobrescribe el elemento de la posición


indicada con el objeto especificado.

- int size(): Devuelve el número de elementos del vector.

Ejemplo:

package vector;

import java.util.*;

public class VectorApp {

public static void main(String[] args) {

Vector v=new Vector();

v.addElement("uno");

v.addElement("dos");

v.addElement("cuatro");

v.addElement("cinco");

v.addElement("seis");

v.addElement("siete");
v.addElement("ocho");

v.addElement("nueve");

v.addElement("diez");

v.addElement("once");

v.addElement("doce");

v.insertElementAt("tres", 2);

System.out.println("nº de elementos "+v.size());

System.out.println("dimensión "+v.capacity());

Enumeration enum=v.elements();

while(enum.hasMoreElements()){

System.out.print(enum.nextElement()+"\t");

System.out.println();

if(v.contains("tres")){

System.out.println("Encontrado tres");

v.removeElement("tres");

for(int i=0; i<v.size(); i++){

System.out.print(v.elementAt(i)+"\t");

System.out.println();

try {

//espera la pulsación de una tecla y luego RETORNO


System.in.read();

}catch (Exception e) { }

2. Uso de Array de caracteres y cadenas de texto (String y StringBuffer). Mencione además con
que métodos puede trabajar cada una

los arrays únicamente pueden ser enviados a una función por referencia. Para ello
deberemos enviar la dirección de memoria del primer elemento del array. Por tanto, el
argumento de la función deberá ser un puntero.

Ejemplo:

/* Envío de un array a una función. */

#include

void visualizar(int []); /* prototipo */


main() /* rellenamos y visualizamos */
{
int array[25],i;
for (i=0;i<25;i++)
{
printf("Elemento nº %d",i+1);
scanf("%d",&array[i]);
}
visualizar(&array[0]);
}

void visualizar(int array[]) /* desarrollo */


{
int i;
for (i=0;i<25;i++) printf("%d",array[i]);
}
En el ejemplo se puede apreciar la forma de enviar un array por referencia. La función se
podía haber declarado de otra manera, aunque funciona exactamente igual.

3. ¿Cómo Copiar y Comparar Arreglos en Java?

Al trabajar con arrays de tipos primitivos o de objetos se nos puede plantear la necesidad de
copiar arrays. La copia de arrays está permitida, pero conviene ser cauto cuando realicemos
procesos de este tipo. Recordar que un array es un objeto (aunque sea especial) y por tanto
la variable que lo nombra en realidad contiene un puntero al objeto, no el objeto en sí
mismo.

Al hacer una operación del tipo array1 = array2, el puntero de array1 apunta al mismo objeto
que array2 mientras que el objeto al que apuntaba array1 queda inaccesible. A partir de ese
momento existe identidad entre los arrays y la comparación usando == nos devolverá true.
A través de código, vamos a plantearnos distintas situaciones y a comentar cuáles son los
resultados.

Ejemplo:

import java.util.Arrays;

//Test de copia de arrays aprenderaprogramar.com public class

TestCompararArrays {

public static void main (String [ ] Args) {

int [ ] miArray1 = {2, -4, 3, -7};

for (int i=0; i<miArray1.length; i++) {

System.out.print ("miArray1[" + i +"]= " + miArray1[i]+"; ");

System.out.println("");

int [ ] otroArray = {1, 2, 4, 8};

for (int i=0; i<otroArray.length; i++) {

System.out.print ("otroArray[" + i +"]= " + otroArray[i]+"; ");}

System.out.println("");

System.out.println ("¿Son el mismo objeto? ... " +


(miArray1==otroArray) );

System.out.println("");

otroArray = miArray1; //otroArray pasa a ser el mismo objeto que


miArray1

for (int i=0; i<otroArray.length; i++) {

System.out.print ("otroArray[" + i +"]= " + otroArray[i]+"; ");}

System.out.println("");

System.out.println ("¿Son el mismo objeto? ... " +


(miArray1==otroArray) );
} //Cierre del main
} //Cierre de la clase

4. Uso de la Clase arrays del API de Java

Esta clase contiene varios métodos para manipular arrays (por ejemplo, para ordenar un
array o buscar un valor u objeto dentro de él) y para comparar arrays.
Dado que pertenece al package util, para poder usar esta clase habremos de incluir en
cabecera import java.util.Arrays; o bien import java.util.*;. Al igual que los arrays son unos
objetos que hemos dicho son especiales (al carecer de métodos), podemos decir que la
clase Arrays es una clase un tanto especial por cuanto carece de constructor. Digamos que
directamente al cargar la clase con la sentencia import correspondiente automáticamente se
crea un objeto denominado Arrays que nos permite realizar manipulaciones con uno o
varios arrays (p. ej. ordenar un array, comparar dos arrays, etc.). Dicho objeto podemos
utilizarlo directamente: no es necesario declararlo ni crearlo, eso es automático en Java, y
por eso decimos que esta clase es una clase especial. La clase Arrays tiene muchos
métodos, entre ellos varios métodos Equals (sobrecarga del método) que hacen que Equals
sea aplicable tanto a arrays de los distintos tipos primitivos como a arrays de objetos. En
concreto el método aplicable a arrays de enteros primitivos es:

5. Uso de los métodos arraycopy, Equals, copyOf, fill.

NOMBRE DESCRIPCION PARAMETROS DATO DEVUELTO


Un array y la longitud.
Si se pasa del tamaño del
array original, rellena
Copia un array y lo con ceros las posiciones Array del mismo tipo
copyOf devuelve en un nuevo sobrantes. Estos pueden que se introduce.
array ser un byte, char, doublé,
float, int, long, short u
objeto.
Indica si dos arrays don Dos arrays del mismo
Equals iguales. tipo True o false
Rellena un array con un Un array y el valor a
valor que indiquemos rellenar. Estos pueden
fill como parámetro. ser un byte, char, doublé, No devuelve nada
float, long, short u
objeto.

6. ¿Cómo Recorrer Arreglos en Java?

El arreglo es la más fundamental de las estructuras de datos en las ciencias de la


computación. Este tipo de datos simplemente asigna un bloque de memoria a un número
predeterminado de objetos, y permite que el programador acceda a cada objeto de acuerdo
a su lugar en la línea. En Java, también es posible declarar arreglos con múltiples
dimensiones.

Ejemplo:
// ejemplo de arreglo

Object[] arreglo = new Object[10];

//...

for (int i = 0; i < arreglo.length; i++){

// aqui se puede referir al objeto con arreglo[i];

7. Uso del Bucle for-each para recorrido de arreglos y colecciones.

for-each es otra técnica para recorrer arrays de manera sencilla, al igual que el
bucle for, while, do-while; introducido en Java.

Ejemplo:

Con for:

int nums[]={1,2,3,4,5};

int sum=0;

for (int i=0; i<nums.length; i++) sum+=nums;

Con for-each:

int nums[]={1,2,3,4,5};

int sum=0;

for (int x: nums) sum+=x;

8. Nota: Para responder completamente a los 5 puntos, a estos debe agregar


ejemplos prácticos en código java.

Realizar los siguientes ejercicios utilizando como lenguaje JAVA:


1. Utilizando un arrays, escribir un programa que visualice un cuadro mágico de
orden impar n, comprendido entre 3 y 11. El usuario debe elegir el valor de n. “Un
cuadrado mágico se compone de números enteros comprendidos entre 1 y
n. La suma de los números que figuran en cada fila, columna y diagonal son
iguales”.
Ejemplo:
8 1 6
3 5 7
4 9 2

Un método de generación consiste en situar el número 1 en el centro de la primera


fila, el número siguiente en la casilla situada por encima y a la derecha de la última es
la primera. En el caso de que el número generado caiga en una casilla ocupada, se
elige la casilla que se encuentre debajo del número que acaba de ser situado.

R//
package estructura_of_datos; public class CuadroMagico {
int NIVEL=5; int arreglo[][]; public CuadroMagico () { arreglo = new int
[NIVEL][NIVEL]; generar();
}
public void generar () { int mitad = NIVEL/2; int ubicacionC = mitad; int
ubicacionF = 0; arreglo[ubicacionF] [ubicacionC] =1;
int ubicacionFActual = ubicacionF; int ubicacionCActual = ubicacionC;
for (int i=2; i<=(Math.pow(arreglo.length,2)); i++){
ubicacionF--; ubicacionC--; if (ubicacionF<0) {
ubicacionF = arreglo.length-1;
}
if(ubicacionC<0) { ubicacionC = arreglo.length-1; } if (arreglo[ubicacionF]
[ubicacionC]==0) {
arreglo[ubicacionF][ubicacionC]=i;
}else {
ubicacionF = ubicacionFActual+1; ubicacionC = ubicacionCActual;
arreglo[ubicacionF][ubicacionC]=i;
}
ubicacionFActual = ubicacionF; ubicacionCActual = ubicacionC;
} mostrarArreglo();
} public void mostrarArreglo () { for(int i=0;i<arreglo.length;i++) { for(int
j=0; j<arreglo.length;j++) {
System.out.print(arreglo[i][j]+"\t"); }
System.out.println();
}
} public static void main (String... args) {
new CuadroMagico();
}
}

2. Se dispone de N temperaturas almacenadas en un array. Se desea calcular su


media y obtener el número de temperaturas mayores o iguales que la media.
R//

package estructura_of_datos;
import java.util.*; public class nTemperaturas {
public static void main(String[] args) { // TODO Auto-generated method stub
int suma=0; int TemperaturaMayor=0;
int TemperaturaMenor = 0;
int media = 0;
System.out.println("Introduce N temperaturas para almacenarlas en
un array");
int n= new Scanner (System. in ).nextInt(); int [] Temperaturas=new int [n];
for (int i=0;i<n;i++) {
System.out.println("Introduce la temperatuira para la
pocision "+i);
Temperaturas [i]=new Scanner (System.in).nextInt();
suma=suma+Temperaturas[i];
media=suma/n;
} for (int i=0;i<n;i++) {
if (Temperaturas[i]>media) {
TemperaturaMayor=Temperaturas[i];

System.out.println(" numero de temperatura mayores a la media: "+ i+ ":


"+ TemperaturaMayor);

}else {

if (Temperaturas[i]==media) {
TemperaturaMenor=Temperaturas[i];
System.out.println(" numero de temperatura iguales a la
media son: "+i+ ": "+ TemperaturaMenor);
}
}
}
System.out.println(" La media es: "+suma/n);
}
}

3. Leer una matriz de 3 por 3 elementos y calcular la suma de cada una de sus filas y
columnas, dejando dichos resultados en dos vectores, uno de la suma de las filas y
otro de las columnas.
R//

package estructura_of_datos; import java.util.*; public class


CalcularFilasColumnas {
public static void main (String []args) {
int sumf[]=new int [3]; int sumc[]=new int [3]; int Matriz [][]=new int[3][3];
Scanner m=new Scanner (System.in);
for (int x=0; x < Matriz.length; x++) {
for (int y=0; y < Matriz[x].length; y++) {
System.out.println("Introduce el numero en: "+ x+", "+ y + "]
");
Matriz [x][y]= m.nextInt();
}
} for (int x=0; x < Matriz.length; x++) {
System.out.println(" ");
for (int y=0; y < Matriz[x].length; y++) {
System.out.print ("[" + x + "," + y + "] = " + Matriz[x][y]);
}
}
System.out.println( " ");
//SUMA FILAS
for (int i = 0; i < Matriz.length; i++) {

for (int j = 0; j < Matriz[i].length; j++) { sumf[j]=sumf[j]+Matriz[i]


[j];
}

}
for(int filas:sumf) {
System.out.println("La suma de los valores de la fila "+(" ")+" es:
"+filas);
}
//SUMA COLUMNAS
for (int i = 0; i < Matriz[0].length; i++) {

for (int j = 0; j < Matriz.length; j++) {


sumc[i]=sumc[i]+Matriz[j][i];
}
}

for(int columnas:sumc) {
System.out.println("La suma de los valores de la columna "+
(" ")+" es: "+columnas);
}}
}

4. Leer las notas de 15 estudiantes en un arreglo y ordenarlo con el fin imprimirlo de


forma Descendente.

R//

package estructura_of_datos;

import java.util.*;

public class OrdenarFormaDescendenteArray {

public static void main(String[] args) {

// TODO Auto-generated method stub

double notas[]=new double [15];

int i,j;

double aux;

for ( i=0;i<=14;i++) { System.out.println("Nota

del estudiante : "+i);

notas[i]= new Scanner (System.in).nextDouble();

System.out.println();

for (i=0;i<15;i++) {

for (j=i+1;j<15;j++) {
if (notas[i]<notas[j]) {

aux=notas[i];

notas[i]=notas[j];

notas[j]=aux;

System.out.print(" notas en forma Descendente: ");

for(i=0;i<15;i++) {

System.out.print(notas[i]+", ");

5. Se tiene un vector que va a contener como elementos, donde cada elemento es un registro:
Código del Vendedor, Nombre, Salario básico, Valor Venta, salario neto de 10 empleados.

Se debe imprimir por cada empleado:


 Código del vendedor
 Comisión.
La comisión se calcula así:
 Si Valor Venta oscila entre 250 y 300 la Comisión = 20% Valor Venta
 Si Valor Venta oscila entre 301 y 450 la Comisión = 25% Valor Venta
 Si Valor Venta >450 la Comisión = 30% Salario Básico
Se debe imprimir al final de todo el proceso:
 Total pagado en comisión por cada rango
 Total pagado en neto.

R//

package estructura_of_datos;

import java.util.*;

public class VectorEmpleados {


public static void main(String[] args) {
// TODO Auto-generated method stub

int totalcomisionA = 0;

int totalcomisionB=0;

int totalcomisionC=0;

int ValorV[]=new int[10];

int SalarioN[]=new int[10];

int comision[]=new int [10];

int salarioB=1000;

for (int i=0; i<10;i++) {

//Si Valor Venta oscila entre 250 y 300 la Comisión = 20%

Valor Venta

System.out.println("Introduce el precio de la venta "+i);

ValorV[i]=new Scanner (System.in).nextInt();

if (ValorV[i]>250 && ValorV[i]<300) { //CALCULAR LA COMISION

comision[i]=(20*ValorV[i])/100;

SalarioN[i]+=comision[i];

totalcomisionA =+ comision[i];

if (ValorV[i]>301 && ValorV[i]<450) {

comision[i]=(25*ValorV[i])/100; //CALCULAR LA

COMISION

SalarioN[i]+=comision[i];

totalcomisionB =+ comision[i];

if (ValorV[i]>450) {
comision[i]=(30*ValorV[i])/100; //CALCULAR LA

COMISION

SalarioN[i]+=comision[i];

totalcomisionC =+ comision[i];

}
Empleados []empleado=new Empleados [10];

empleado[0]=new Empleados("empleado1",salarioB,ValorV[0],SalarioN[0],1);

empleado[1]=new Empleados(" empleado2 ",salarioB,ValorV[1],SalarioN[1],2);

empleado[2]=new Empleados("empleado3",salarioB,ValorV[2],SalarioN[2],3);

empleado[3]=new Empleados("empleado4",salarioB,ValorV[3],SalarioN[3],4);

empleado[4]=new Empleados("empleado5",salarioB,ValorV[4],SalarioN[4],5);

empleado[5]=new Empleados("empleado6",salarioB,ValorV[5],SalarioN[5],6);

empleado[6]=new Empleados("empleado7",salarioB,ValorV[6],SalarioN[6],7);

empleado[7]=new Empleados("empleado8",salarioB,ValorV[7],SalarioN[7],8);

empleado[8]=new Empleados("empleado9",salarioB,ValorV[8],SalarioN[8],9);

empleado[9]=new Empleados("empleado10",salarioB,ValorV[9],SalarioN[9],10);

for (Empleados e:empleado) {

System.out.println(e.devuelveDatos());

}
for (int i=0;i<10;i++) { // COMISIONES

System.out.println("Total pagado en comisiones es "+ comision[i]+ " Al

empledo "+i);

System.out.println("////////////////////////");

System.out.println(" Total pagado en comision en el rango entre 250 y 300 es:


"+totalcomisionA);

System.out.println(" Total pagado en comision en el rango entre 301 y 450 es:

"+totalcomisionB);

System.out.println(" Total pagado en comision en el rango entre >450 es:

"+totalcomisionC);

for (Empleados e:empleado) {

System.out.println(e.salarioNeto()); //SALARIO NETO

class Empleados {

String Nombre;

int Salariobasico;

double ValorVenta;

int Salarioneto;

private int id;

public Empleados ( String nom, int Salariob, double ValorV, int

salarioN,int id ){

Nombre=nom;

Salariobasico=Salariob;

ValorVenta=ValorV;

Salarioneto=salarioN;

this.id=id;

}
public String devuelveDatos() {
return "El codigo del empleado es: "+id +"-- El nombre es:

"+Nombre+" --El salario basico es: "+Salariobasico+ " \n"

+" -- El valor de la venta es: " +ValorVenta;

public String salarioNeto () {

int Total=Salarioneto+Salariobasico;

return " El total pagado en Neto es: "+ Total + " Al empleado "+

Nombre;

6. Realizar un programa que solicite al usuario desde un vector crear una lista de
números por teclado luego imprimir el vector de forma ordenada con el Método de
Burbuja (Descendentemente).

7. En un Vector se almacenan las calificaciones finales de N alumnos. Realizar un


programa que calcule e imprima:
 El promedio general del grupo
 Número de alumnos aprobados y número de alumnos reprobados
 Porcentaje de alumnos aprobados y porcentaje de alumnos reprobados.
 Número de alumnos cuya calificación fue mayor o igual a 4.

8. En una matriz de 5 Filas X 4 Columnas, calcule la suma de las filas y de las


columnas, dejando los resultados en dos vectores, uno con la suma de las filas y el
otro con la suma de las columnas, imprima los dos vectores resultantes.
Package arreglos;

Import java.util.Scanner;

Public class Arreglos {

Public static void main(String[] args) {

Scanner sc=new Scanner(System.in);

Int mat[][]=new int[5][4];


Int suma=0;

For(int i=0; i<5; i++){

For(int j=0; j<4; j++){

System.out.println(“ingrese datos de la matriz[“+i+”][“+j+”]”);

Mat[i][j]=sc.nextInt();

}System.out.println(“ “);

For(int i=0; i<5;i++){

System.out.println(“ “);

For(int j=0; j<4; j++){

System.out.print(mat[i][j]+” “);

System.out.println(“ “);

For(int i=0; i<5;i++){

Suma=0;

For(int j=0; j<4; j++){

Suma+=mat[i][j];

System.out.println(“la suma de la fila “+i+”es de: “+suma);

}System.out.println(“ “);

For(int i=0; i<5;i++){

Suma=0;
For(int j=0; j<4; j++){

Suma+=mat[j][i];

System.out.println(“la suma de la columna”+i+”es de: “+suma);

9. Suponga que se tiene la siguiente matriz de números:

Calcule e Imprima, cuantos “ceros” aparecen en cada renglón de la matriz.

10. Llenar una matriz de 3x3 e Imprima su traspuesta (la traspuesta se consigue
intercambiando filas por columnas y viceversa).

R//

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

    int x,y,num=0, numeros[4][4];


   
    for (x=0;x<3;x++)
    {
        for (y=0;y<3;y++)
        {
            numeros[x][y]=num;
            num++;
        }
    }
   
    printf("El array original es: \n\n\n");
   
    for(x = 0;x < 3;x++)
    {
      for(y = 0;y < 3;y++)
      {
          printf("    %d     ", numeros[x][y]);
      }
      printf("\n\n\n");
    }
   
    printf("La traspuesta es: \n\n\n");
   
    for(x = 0;x < 3;x++)
    {
      for(y = 0;y < 3;y++)
      {
          printf("    %d     ", numeros[y][x]);
      }
      printf("\n\n\n");
    }
   
    system("PAUSE");     
    return 0;

También podría gustarte