elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Array multidimensional
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Array multidimensional  (Leído 3,242 veces)
adriana305

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Array multidimensional
« en: 14 Junio 2014, 09:57 am »

Hola a todos !!
Estoy resolviendo unos ejercicios sobre este array
Una Empresa de Software tiene N empleados (Máximo = 100). Se consideran de cada
uno de ellos los siguientes datos:

Legajo: ENTERO
Apellido y nombre: CADENA DE CARACTERES
Remuneración anual: NUMERO REAL

Desarrolle un programa con las funciones o métodos necesarios para que admita las
siguientes opciones desde un menú:
a. Ingreso de los datos de los empleados en 3 arreglos unidimensionales de hasta 100
elementos cada uno. Un arreglo para cada dato.
b. Impresión de la lista de empleados ordenada por legajo, en forma creciente, con todos
sus datos.
c. Búsqueda de un empleado por su legajo. En caso de no pertenecer a la Empresa,
indicarlo expresamente.
d. Impresión de la lista de empleados ordenada por Apellido y nombre, en forma creciente,
con todos sus datos
e. Impresión del Nombre y apellido, Legajo y Remuneración anual del empleado con menor
remuneración (considere que hay uno sólo).
f. Salida del programa.

Esto es lo que voy avanzando hasta ahora, pero no me compila !!
Código:
import java.util.Scanner;
class Test {
static Scanner leer = new Scanner(System.in);
static int cant_elementos = 100;
static int[] legajo = new int[cant_elementos];
static String[] apenomb = new String[cant_elementos];
static double[] salario = new double[cant_elementos];

public static void main(String[] args) {
int flag = 0;
while (flag == 0) {

switch (inicio()) {
case 0: flag = 1; break;
case 1: registro(); break;
case 2: imprimir(); break;
case 3: busqueda(); break;
case 4: ordenar(); break;
case 5: salariomenor(); break;

default:System.out.println("Seleccione una opcion valida."); break;
}
}
}
public static int inicio() {

System.out.println(" M E N U de O P C I N E S ");
System.out.println(" 1- Ingresar datos de empleados: ");
System.out.println(" 2- Imprimir lista ordenada por legajo: ");
System.out.println(" 3- Busqueda por legajo: ");
System.out.println(" 4- Ordenar por apellido los datos de los empleados de la empresa ");
System.out.println(" 5- Mostrar datos del empleado con menor remuneracion ");
System.out.println(" 0- Programa Finalizado.");
System.out.println(" Ingrese una opcion valida: ");
return leer.nextInt();
}

public static void registro() {
System.out.println("Ingrese legajo:");
int le = leer.nextInt();
System.out.println("Ingrese Apellidos y nombres:");
String an = leer.next();
System.out.println("Ingrese sueldo:");
double sa = leer.nextDouble();
legajo[le] = le;
apenomb[le] = an;
salario[le] = sa;
}

public static void imprimir() {
for (int i = 0; i < cant_elementos; i++) {
if (legajo[i] > 0) {
System.out.println(legajo[i] + "-" + apenomb[i] + "-" + salario[i]);
}
}
}

public static void busqueda() {
System.out.println("Ingrese el numero de legajo que quiere buscar: ");
int nro = leer.nextInt();

if (legajo[nro] > 0) {
System.out.println(legajo[nro] + "-" + apenomb[nro] + "-" + salario[nro]);

if (legajo[nro] != 0) {
System.out.println("Legajo no corresponde a un empleado de la empresa");
}
}
}
public static void ordenar() {
for(int i = 0; i < cant_elementos -1; i++){
int ii = 0;

for(int j=i+1;j < cant_elementos;j++){
if(legajo[j]<legajo[ii]){
ii=j;

if(i != ii){
int a = legajo[i];
legajo[i] = legajo[ii];
legajo[ii] = a;

int c = apenomb[i];
apenomb[i] = apenomb[ii];
apenomb[ii] = c;

double s = salario[i];
salario[i] = salario[ii];
salario[ii] = s;
}
}
}
}
}
public static void salariomenor() {
int ii = 0;
double salariomenor = salario[0];

for(int i=0; i < cant_elementos;i++){
if(salario[i] < salariomenor){
ii = i;
salariomenor = salario[i];
}
}
printLine("");
printLine("");
printLine("-----------------------------------------------");
printLine("Datos del empleado de menor sueldo: ");
printLine("Legajo: " + legajo[ii] + "\tNombre y apellido: " + apenomb[ii] + "\tSueldo: " + salario[ii]);
}
}
me tira estos errores D:
error: incompatible types (lineas 83-85)
error: cannot find symbol (lineas 106 a 109)

Me estoy volviendo loca con array.
Me podrian dar una manito en solucionar estos errores por favor.
Y si alguno conoce algun tutorial o ejercicios sobre array nxm por favor!!
Muchisimas gracias de antemano!!


En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Array multidimensional
« Respuesta #1 en: 14 Junio 2014, 13:13 pm »

Hola si pusieras etiquetas Geshi donde se ponen las negritas hay un apartado con ese nombre elige Java. ya que mencionas la linea (lineas 83-85) pero no creo que alquien las cuente.

con respecto al error: incompatible types eso significa que los valores que estas pasando no son compatibles que significa esto.

Si una funcion recibe un valor tipo entero y tu le pasas una string son incompatibles deberas de convertir la cadena a entero para que la funcion o metodo se realice correctamente.

si no me equivoco el error a de andar por aca ya que del decis un entero c = apenomb. Y apenomb esta declaraco como String asi que queres llenar un arreglo de string con enteros como dige antes si eso es lo que deceas hacer deberas de convertir c. y luego hacer la igualdad

Código
  1. int c = apenomb; //Oh no se si quisiste hacer String c = apenomb;
  2. apenomb[i] = apenomb[ii];
  3. apenomb[ii] = c;

Saludos cuidate para la proxima etiquetas Geshi java.


« Última modificación: 14 Junio 2014, 13:17 pm por nolasco281 » En línea

Lo que se puede imaginar... se puede programar.
adriana305

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Array multidimensional
« Respuesta #2 en: 15 Junio 2014, 03:57 am »

Holaa logre solucionar el problemas muchisimas gracias !!!
Ahora ando haciendo otro y encontre unos pequeños errores ._.
Desarrollar un programa Java que permita ingresar los votos obtenidos por cada uno de los N candidatos a Gobernador de una provincia, en cada uno de los M distritos de la misma. El programa deberá:
a) Imprimir una tabla (matriz de orden N x M ) distritos vs. candidatos con los votos emitidos.
b) Calcular e imprimir el número total de votos recibidos por cada candidato y el porcentaje del total de votos emitidos. Asimismo, deberá visualizar el candidato más votado.
c) Si algún candidato recibe más del 50% de los votos, el programa imprimirá un mensaje declarándole ganador.
d) Si ningún candidato recibe más del 50% de los votos, el programa debe imprimir los dos candidatos más votados.

La a si me cumple, en la b me muestra al menos votado en lugar del mas votado ._., en la c me manda al perdedor como ganador ._., y la d me manda al menos votado tambien ._.

Código
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. public class Elecciones {
  6.  
  7. private int N;
  8. private int M;
  9. private int CANDIDATOS_BALOTAJE = 2;
  10. private double PORC_MIN_GANADOR = 0.5;
  11. private String[] CANDIDATOS;
  12. private String[] DISTRITOS;
  13. private int[][] ESCRUTINIO;
  14. private int[] VOTOS_X_CANDIDATO;
  15. private BufferedReader in;
  16. public static byte IZQUIERDA = (byte) 0;
  17. public static byte DERECHA = (byte) 1;
  18.  
  19. public Elecciones() throws IOException {
  20. N = leerInt("Introduzca la cantidad de candidatos: ");
  21. M = leerInt("Introduzca la cantidad de distritos: ");
  22. CANDIDATOS = new String[N];
  23. DISTRITOS = new String[M];
  24. ESCRUTINIO = new int[DISTRITOS.length][CANDIDATOS.length];
  25. VOTOS_X_CANDIDATO = new int[CANDIDATOS.length];
  26. for (int i = 0; i < N; i++) {
  27. CANDIDATOS[i] = "Candidato" + (i + 1);
  28. }
  29. for (int i = 0; i < M; i++) {
  30. DISTRITOS[i] = "Distrito" + (i + 1);
  31. }
  32. }
  33.  
  34. private String leer(String m) throws IOException {
  35. if (in == null) {
  36. }
  37. if (m != null) {
  38. System.out.print(e);
  39. }
  40. return in.readLine();
  41. }
  42.  
  43. private int leerInt(String m) throws IOException {
  44. return Integer.parseInt(leer(e));
  45. }
  46.  
  47. void cargarDatos() throws IOException {
  48. System.out.println("\nIngrese la cantidad de votos obtenidos");
  49. for (int j = 0; j < DISTRITOS.length; j++) {
  50. String distrito = DISTRITOS[j];
  51. String linea = repetir('-', distrito.length());
  52. System.out.println(linea);
  53. System.out.println(distrito);
  54. System.out.println(linea);
  55. for (int i = 0; i < CANDIDATOS.length; i++) {
  56. ESCRUTINIO[j][i] = leerInt(CANDIDATOS[i] + ": ");
  57. }
  58. }
  59. }
  60.  
  61. public void mostrar() throws IOException {
  62. leer("\nDatos ingresados correctamente. **Presione enter para continuar.");
  63. System.out.println(repetir('-', (CANDIDATOS.length + 1) * 12));
  64. System.out.println(" " + centrar("Candidatos", CANDIDATOS.length * 12));
  65. System.out.println(repetir('-', (CANDIDATOS.length + 1) * 12));
  66. System.out.print(alinear("Distritos", 12, IZQUIERDA));
  67. for (int i = 0; i < N; i++) {
  68. System.out.print(alinear(CANDIDATOS[i], 12, DERECHA));
  69. }
  70. System.out.println("\n" + repetir('-', (CANDIDATOS.length + 1) * 12));
  71. for (int j = 0; j < DISTRITOS.length; j++) {
  72. System.out.print(alinear(DISTRITOS[j], 12, IZQUIERDA));
  73. for (int i = 0; i < CANDIDATOS.length; i++) {
  74. System.out.print(alinear("" + ESCRUTINIO[j][i], 12, DERECHA));
  75. }
  76. System.out.println();
  77. }
  78. System.out.println(repetir('-', (CANDIDATOS.length + 1) * 12));
  79. }
  80.  
  81. public void votosPorCandidato() {
  82. double total = 0;
  83. for (int j = 0; j < ESCRUTINIO.length; j++) {
  84. for (int i = 0; i < CANDIDATOS.length; i++) {
  85. int v = ESCRUTINIO[j][i];
  86. VOTOS_X_CANDIDATO[i] += v;
  87. total += v;
  88. }
  89. }
  90. int mas_votado = -1;
  91. int ganador = -1;
  92. System.out.println("\nTotal de votos recibidos para cada candidato y su porcentaje");
  93. System.out.println(repetir(' ', 12) + centrar("Votos", 12) + centrar("Porcentaje", 12));
  94. int[] clasificacion = clasificarCandidatosPorVoto();
  95. for (int i = clasificacion.length - 1; i >= 0; i--) {
  96. int j = clasificacion[i];
  97. int votos = VOTOS_X_CANDIDATO[j];
  98. double porc = votos / total;
  99. if (mas_votado < 0 || votos < VOTOS_X_CANDIDATO[mas_votado]) {
  100. mas_votado = i;
  101. }
  102. if (porc > PORC_MIN_GANADOR) {
  103. ganador = i;
  104. }
  105. System.out.print(alinear(CANDIDATOS[j], 12, IZQUIERDA));
  106. System.out.print(alinear(votos, 12, DERECHA));
  107. System.out.println(alinear(String.format("%3.2f%%" , porc * 100), 12, DERECHA));
  108. }
  109. if (mas_votado > 0) {
  110. System.out.println("\nEl candidato mas votado: ");
  111. System.out.println("\t" + CANDIDATOS[mas_votado] + ": " + VOTOS_X_CANDIDATO[mas_votado]);
  112. }
  113. if (ganador > 0) {
  114. System.out.println("\nResulto ganador el:");
  115. System.out.println("\t" + CANDIDATOS[ganador] + ": " + VOTOS_X_CANDIDATO[ganador]);
  116. } else {
  117. System.out.println("\nLos dos mas votados fueron:");
  118. for (int i = clasificacion.length - 1; i >= 0 && i + CANDIDATOS_BALOTAJE >= clasificacion.length; i--) {
  119. System.out.println("\t" + CANDIDATOS[clasificacion[i]]);
  120. }
  121. }
  122. }
  123.  
  124. private void copiarArray(int[] orig, int[] dest) {
  125. for (int i = 0; i < orig.length; i++) {
  126. orig[i] = dest[i];
  127. }
  128. }
  129.  
  130. private int[] clasificarCandidatosPorVoto() {
  131. int[] vxc = new int[VOTOS_X_CANDIDATO.length];
  132. int[] clasificacion = new int[VOTOS_X_CANDIDATO.length];
  133. for (int i = 0; i < clasificacion.length; i++) {
  134. clasificacion[i] = i;
  135. }
  136. copiarArray(vxc, VOTOS_X_CANDIDATO);
  137. int j;
  138. for (int i = 1; i < vxc.length; i++) {
  139. int votos = vxc[i];
  140. int cand = clasificacion[i];
  141. j = i;
  142. while (j > 0 && votos < vxc[j - 1]) {
  143. vxc[j] = vxc[j - 1];
  144. clasificacion[j] = clasificacion[j - 1];
  145. j--;
  146. }
  147. vxc[j] = votos;
  148. clasificacion[j] = cand;
  149. }
  150. return clasificacion;
  151. }
  152.  
  153. public String repetir(char ch, int cant) {
  154.  
  155. char[] chars = new char[cant];
  156.  
  157. for (int i = 0; i < cant; i++) {
  158. chars[i] = ch;
  159. }
  160.  
  161. return new String(chars);
  162. }
  163.  
  164. public String alinear(int nro, int ancho, byte alineacion) {
  165. return alinear(String.valueOf(nro), ancho, alineacion);
  166. }
  167.  
  168. public String alinear(String texto, int ancho, byte alineacion) {
  169.  
  170. if (texto == null) {
  171. return repetir(' ', ancho);
  172. }
  173.  
  174. if (texto.length() > ancho) {
  175. return texto.substring(0, ancho);
  176. }
  177.  
  178. if (alineacion == DERECHA) {
  179. return repetir(' ', ancho - texto.length()) + texto;
  180. } else {
  181. return texto + repetir(' ', ancho - texto.length());
  182. }
  183. }
  184.  
  185. public String centrar(String texto, int ancho) {
  186. if (texto == null) {
  187. return repetir(' ', ancho);
  188. }
  189. if (texto.length() >= ancho) {
  190. return texto.substring(0, ancho);
  191. }
  192. String s = repetir(' ', (ancho - texto.length()) / 2) + texto;
  193. return s + repetir(' ', ancho - s.length());
  194. }
  195.  
  196. public static void main(String[] args) throws Exception {
  197. Elecciones e = new Elecciones();
  198. e.cargarDatos();
  199. e.mostrar();
  200. e.votosPorCandidato();
  201. }
  202. }
Muchisimas gracias !!!  ya lo modifique, disculpa u.u
« Última modificación: 15 Junio 2014, 09:24 am por adriana305 » En línea

nolasco281


Desconectado Desconectado

Mensajes: 319


Ver Perfil
Re: Array multidimensional
« Respuesta #3 en: 15 Junio 2014, 08:11 am »

Hola repito usa etiquetas Geshi y selecciona Java. Saludos cuando las uses te empesaremos a ayudar.

Ya que le facilitas el trabajo a la persona que intenta ayudarte.

Saludos
En línea

Lo que se puede imaginar... se puede programar.
adriana305

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Array multidimensional
« Respuesta #4 en: 15 Junio 2014, 22:58 pm »

ya cambie la etiqueta disculpa ._.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
manipulación de un objeto multidimensional
Programación C/C++
david_BS 2 2,722 Último mensaje 3 Abril 2012, 21:53 pm
por david_BS
List multidimensional
.NET (C#, VB.NET, ASP)
Jero67 0 1,762 Último mensaje 7 Mayo 2012, 17:50 pm
por Jero67
PROBLEMA ENTRE ARRAY MULTIDIMENSIONAL Y FUNCIONES
Programación C/C++
BJM 2 2,788 Último mensaje 29 Septiembre 2012, 12:47 pm
por leosansan
C++ busqueda en arreglo multidimensional
Programación C/C++
_Slash_ 2 3,214 Último mensaje 26 Noviembre 2014, 17:23 pm
por _Slash_
Error al devolver array multidimensional
Java
viher 0 1,860 Último mensaje 25 Diciembre 2014, 00:30 am
por viher
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines