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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Ayuda] Problema con Array Bidimensional
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Problema con Array Bidimensional  (Leído 7,502 veces)
heidozanzo

Desconectado Desconectado

Mensajes: 8


Ver Perfil
[Ayuda] Problema con Array Bidimensional
« en: 7 Noviembre 2015, 19:54 pm »

Buenas después de estar mucho tiempo buscando el problema ,así que decante por crear un tema   :D :D.


Tengo una consulta/problema con un arreglo bidimensional ,este mismo tiene 5 notas de n cantidad de alumnos ingresadas ,al momento de pedir el alumno con mayor nota (Osea el nombre y la nota) no tengo problema me lo muestra sin complicaciones pero al mostrar el mínimo me muestra la mínima nota bien pero el nombre del alumno me lo muestra null



Código
  1.  
  2.        mayor  = menor= not1[0][0];//se toma el primero como mayor y menor
  3.  
  4.  
  5.        for (f = 0; f < nombres.length; f++) {  //
  6.            for (a = 0; a < not1[f].length; a++) {
  7.                if (not1[f][a] > mayor) {
  8.                    mayor = not1[f][a];
  9.                    nombreMayor = nombres[f];
  10.                } else if (not1[f][a] < menor) {
  11.                    menor = not1[f][a];
  12.                    nombreMenor = nombres[f];
  13.                }
  14.            }          
  15.        }
  16.        System.out.println("Mayor nota de la clase del alumno  "+nombreMayor+ "  " + mayor);
  17.  
  18.        System.out.println("Menor nota de la clase del alumno  "+nombreMenor+ " " + menor);
  19.  
  20.    }

para orientarse un poco:
Código
  1. int nualumn=0 //es el numeros de alumnos ingresados
  2. public static String[] nombres; //donde ingreso los nombres
  3. public static int [][] not1;     //el array bidimensional para las 5 notas
  4. public static String nombreMenor ; //este es el del problema
  5. public static String nombreMayor ;  //String para almacenar el nombre mayor
  6. int a=0
  7. int f=0  

se que aca no se hace la tarea de nadie ,solo estoy preguntando si como lo formule esta mal puesto o es algun error tonto no pido que me lo resuelvan   :P :P,solo una ayuda que ya me esta desquiciando
si falto algun dato estare pendiente al tema y lo agregare ,y si no cumpli con alguna norma ,soy nuevo  :xD :xD y si las lei pero si se me paso alguna sepan perdonar :P .


« Última modificación: 7 Noviembre 2015, 20:24 pm por heidozanzo » En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #1 en: 7 Noviembre 2015, 20:46 pm »

mayor y menor debería empezar a 0, porque si la primera nota resulta ser la menor o la mayor entonces núnca se ejecutarán nombreMayor = nombres[f]; y nombreMenor = nombres[f];


En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
heidozanzo

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #2 en: 8 Noviembre 2015, 17:03 pm »

Disculpa mi ignorancia pero en que parte el mayor   y menor deberian empezar en cero? las variables las tengo inicializadas en 0
Código
  1. mayor=0
  2. menor=0
pero no creo que te refieras a eso.
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #3 en: 8 Noviembre 2015, 18:35 pm »

Código
  1. mayor  = menor= not1[0][0];//se toma el primero como mayor y menor

Inician con los valores de las primeras notas, sólo tendrías que quitar esa linea.
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
heidozanzo

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #4 en: 8 Noviembre 2015, 20:40 pm »

  Aca hay un imagen de lo que sucede ,elimine la linea que me dijiste y sigue pasando lo mismo solo que aparece null 0 ahora en vez de null y el minimo ,ahi en la imagen aparece la linea que me dijiste pero la puse despues de ejecutar para ver algo. no se si se puede postear la imagen directamente o tengo que poner slo el link cualquier cosa despues lo edito
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #5 en: 8 Noviembre 2015, 22:53 pm »

Perdón es:

Código
  1.  
  2. mayor = -1;
  3. menor = 101;

En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
heidozanzo

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #6 en: 8 Noviembre 2015, 23:17 pm »



Genial funciona lo del nombre por lo menos no me muestra null ,lo unico malo es que ahora solo me toma el mayor y menor de el ultimo ingresado.
Gracias 0xFer por ayudarme con lo del nombre  :D :D
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #7 en: 9 Noviembre 2015, 00:04 am »

Te podemos ayudar más rápido si pegas todo el código, pero utiliza la etiqueta Geshi.
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
heidozanzo

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #8 en: 9 Noviembre 2015, 00:10 am »

Código
  1. import java.util.*;
  2. import org.jfree.chart.ChartFactory;
  3. import org.jfree.chart.ChartFrame;
  4. import org.jfree.chart.JFreeChart;
  5. import org.jfree.data.general.DefaultPieDataset;
  6.  
  7. public class Finalv1 {
  8.  
  9.  
  10.    public static void main(String[] args)
  11.    {
  12.        int intentos = 0,op = 0;
  13.        Scanner teclado = new Scanner(System.in);
  14.        String usuarioCorrecto = "admin";
  15.        String usuarioIngresado = "";
  16.        String contraseñaCorrecta = "123";
  17.        String contraseñaIngresada = "";
  18.  
  19.  
  20.        do
  21.        {
  22.         System.out.println("Bienvenido a Gestion de Alumnos 1.0 ");
  23.         System.out.println("Ingrese Usuario: ");
  24.            usuarioIngresado = input.next();
  25.            System.out.println("Ingrese Contraseña: ");
  26.            contraseñaIngresada = input.next();
  27.            if (usuarioIngresado.equals(usuarioCorrecto) == false || contraseñaIngresada.equals(contraseñaCorrecta) == false || ((intentos <= 3)))
  28.            {
  29.             intentos++; // contador para los intentos
  30.             if (usuarioIngresado.equals(usuarioCorrecto)  && contraseñaIngresada.equals(contraseñaCorrecta))
  31.                {
  32.             System.out.println("Datos ingresados correctos");
  33.  
  34.                }
  35.             else if (intentos < 3)/* Aca que se repitiera siempre y cuando los intentos sean menores  a 3*/
  36.             {
  37.             System.out  .println("Error! usuario o contraseña incorrecta");
  38.             }
  39.             else
  40.             {
  41.            // Y aca te manda el ultimatum si te equivocas 3 veces
  42.             System.out.println("Contacte con el soporte tecnico.");
  43.             System.exit(0);
  44.             }
  45.             }  
  46.            }
  47.        while (usuarioIngresado.equals(usuarioCorrecto) == false || contraseñaIngresada.equals(contraseñaCorrecta) == false);
  48.        do{  
  49.  
  50.         try{
  51.         System.out.print("\n\nMenú principal \n\n1: Ingresar información \n\n2: Grafica \n\n3: Datos de los Alumnos  \n\n4: Finalizar programa");
  52.         System.out.println("\nSeleccione una opción del menú");
  53.         op=input.nextInt();
  54.         }catch(Exception e){
  55.         System.out.println("Error! ingrese una opción válida del menú");
  56.         input.nextLine();
  57.         }
  58.         switch (op){
  59.         case 1: ingreseDatos();
  60.         break;
  61.         case 2:
  62.         try{
  63.         grafica();
  64.         }catch(NullPointerException e){
  65.         System.out.println("Error todavia no se ha ingresado ningun dato Presione Cualquier tecla para volver");
  66. input.nextLine();
  67. }finally{
  68. break;}
  69. case 3:
  70. try{
  71. mostrarDatos();
  72. System.out.println("Error todavia no se ha ingresado ningun dato Presione Cualquier tecla para volver");
  73. input.nextLine();
  74. }finally{
  75. break;}
  76. case 4:
  77. System.out.println("Fin del programa");
  78. break;
  79. default:
  80. System.out.println("Error! ingrese una opción válida del menú");
  81. }
  82.         }while (op!=4 );
  83.        }
  84.  
  85.    public static Scanner input = new Scanner(System.in);
  86.    public static String[] nombres;
  87.    public static String nombreMayor;
  88.    public static String nombreMenor;
  89.    public static int[][] not1;
  90.    public static int a = 0, f = 0, pos = 0, sumaPos = 0, r = 0, suma = 0, PromedioTMP = 0,nualumn = 0, mayor=-1, menor=101,promedioAlumn,promedioGral,sumaProm,promFin,cont1=0,cont2=0,cont3=0,cont4=0;
  91.  
  92.    public static void ingreseDatos()
  93.    {
  94.     try{
  95.     System.out.println("Cantidad de alumnos en el grupo: ");
  96.     nualumn = input.nextInt();    
  97.     }catch(Exception e){
  98.     input.nextLine();
  99.     System.out.println("Error Numero invalido regresando al menu");    
  100.     }
  101.     nombres = new String[nualumn];
  102.     not1 = new int[nualumn][5];
  103.     for (f = 0; f < nombres.length; f++)
  104.     {
  105.     System.out.println("Ingrese nombre del alumno ");
  106.     nombres[f] = input.next();
  107.  
  108.     for (a = 0; a < 5; a++)
  109.     {
  110.     while ( not1[f][a]   < 1 ||  not1[f][a]   > 12)
  111.     {
  112.     try{
  113.     System.out.println("Introduzca nota "+(a+1));
  114.     not1[f][a]   = input.nextInt();
  115.     }catch(InputMismatchException e){
  116.                        input.nextLine();
  117.                        System.out.println("Error ingrese un numero valido");
  118.                        }
  119.     }
  120.     }
  121.     }
  122.     }
  123.  
  124.  
  125.  
  126.    private static void grafica() {
  127.     DefaultPieDataset dataset = new DefaultPieDataset();
  128.     dataset.setValue("Aprobados", cont1);
  129.     dataset.setValue("Desaprobados", cont2);
  130.     JFreeChart grafica = ChartFactory.createPieChart3D(
  131.     "Grafica de Aprobados y Desaprobados", // El nombre de la gráfica
  132.     dataset, // El arreglo de datos
  133.     false, // Indica si lleva leyenda
  134.     true, // Indica si lleva tooltips
  135.     false); // Indica si son URls
  136.       // Mostramos la grafica en pantalla
  137.     ChartFrame frame = new ChartFrame("Graficador", grafica);
  138.        frame.pack();
  139.     frame.setVisible(true);
  140.  
  141.     }
  142.  
  143.    // Opcion 3 de la lista
  144.  
  145.    private static void mostrarDatos(){
  146.  
  147.  
  148.     for (f = 0; f < nombres.length; f++)
  149.     {
  150.     System.out.println("Alumno: " + nombres[f]);
  151.     for (a = 0; a < 5; a++)
  152.     {
  153.     System.out.println("Notas " + not1[f][a]);
  154.     }  
  155.     }
  156.     for (f = 0; f < nombres.length; f++)
  157.     {    
  158.     PromedioTMP = 0;
  159.     // Ciclo para recorrer las columnas
  160.     for (a = 0; a < 5; a++)
  161.     {    
  162.     PromedioTMP = PromedioTMP + not1[f][a];
  163.     }
  164.     promedioAlumn=PromedioTMP/5;
  165.     for( int i=0; i<nualumn; i++ ){
  166.     sumaProm+= promedioAlumn;
  167.     }
  168.     promFin=((sumaProm/nualumn)/nualumn);
  169.  
  170.     System.out.println("Promedio del alumno " + nombres[f] + ": "+ promedioAlumn);
  171.  
  172.     if(promedioAlumn>=7){
  173.     cont1 = cont1 + 1;
  174.     System.out.println("Aprobado");
  175.     }
  176.     else{
  177.     System.out.println("Reprobado");
  178.             cont2=cont2+1;
  179.             }
  180.     if(promedioAlumn>=3||promedioAlumn<7){
  181.     cont3 = cont3 + 1;
  182.  
  183.     }
  184.     else if(promedioAlumn < 3){
  185.             cont4=cont4+1;
  186.             }
  187.     }
  188.  
  189.  
  190.  
  191.  
  192.        for (f = 0; f < nombres.length; f++) {  //
  193.            for (a = 0; a < not1[f].length; a++) {
  194.                if (not1[f][a] > mayor) {
  195.                    mayor = not1[f][a];
  196.                    nombreMayor = nombres[f];
  197.                } else if (not1[f][a] < menor) {
  198.                    menor = not1[f][a];
  199.                    nombreMenor = nombres[f];
  200.                }
  201.            }          
  202.        }
  203.  
  204.     System.out.println("Mayor nota ingresada de la clase del alumno "+ nombreMayor + " " + mayor);
  205.     System.out.println("Menor nota ingresada de la clase del alumno "+ nombreMenor + " " + menor);
  206.     System.out.println("Promedio General de la Clase :  "+promFin);
  207.     }
  208.    }
  209.  
  210.  

Aca esta el codigo ,lo unico que use librerias de JfreeChart para unas graficas.
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: [Ayuda] Problema con Array Bidimensional
« Respuesta #9 en: 9 Noviembre 2015, 00:48 am »

También debes crear dos arreglos para guardar las notas mayores y menores de cada alumno:

Código
  1. int[] mayor = new int[nombres.length];
  2. int[] menor = new int[ nombres.length];
  3.  
  4. for (f = 0; f < nombres.length; f++) {  //
  5.           for (a = 0; a < not1[f].length; a++) {
  6.               if (not1[f][a] > mayor) {
  7.                   mayor[f] = not1[f][a];
  8.                   nombreMayor = nombres[f];
  9.               } else if (not1[f][a] < menor) {
  10.                   menor[f] = not1[f][a];
  11.                   nombreMenor = nombres[f];
  12.               }
  13.           }          
  14.       }
  15.  

así puedes saber las notas mayores y menores de los alumnos
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Array bidimensional en pascal.
Ejercicios
sv51 4 14,305 Último mensaje 21 Junio 2008, 22:30 pm
por sv51
Ordenar array bidimensional
Java
KaRaLLo 5 19,060 Último mensaje 1 Abril 2013, 02:36 am
por seraff
[c++][Ayuda] Constructor y destructor con array bidimensional.
Programación C/C++
anonimo12121 2 3,209 Último mensaje 28 Marzo 2012, 22:02 pm
por anonimo12121
Ayuda con Array bidimensional
Programación General
Javaniano 0 2,179 Último mensaje 8 Diciembre 2012, 13:38 pm
por Javaniano
Ayuda error en array bidimensional
Programación C/C++
kerkox 1 1,947 Último mensaje 21 Abril 2014, 08:48 am
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines