Autor Tema: Cómo operar números de un arreglo

0 Usuarios y 1 Visitante están viendo este tema.

20 Agosto, 2015, 03:29 am
Leído 5736 veces

Antoniio

  • Aprendiz
  • Mensajes: 258
  • Karma: +0/-0
  • Sexo: Masculino
Hola, a penas ayer comencé a llevar un curso de programación en java por medio de internet. Me han solicitado un primer programa donde necesito crear un arreglo que contenga x números (por ejemplo: 2,7,3,0,5) y que esos números se sumen, dividan, resten y multipliquen. Intenté hacer la división y me quedó así:

Código: [Seleccionar]
public class PrimerProgra {
 public static void main(String[] args) { 
             int a=2, b=7, c=3, d=0, e=5;
             int divInt = a/b/c/d/e;
                System.out.println("El valor entero de la division es " + divInt);
 }
 
}

Pero no supe cómo hacerlo sin crear tantas variables, osea, eso no debe hacerse. Alguna sugerencia para hacerlo sin tener variables?, que sea sólo en 1 arreglo?, gracias de antemano.

20 Agosto, 2015, 04:43 am
Respuesta #1

ingmarov

  • Moderador Global
  • Mensajes: 4,693
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Hola

No sé nada de Java pero si tienes un arreglo, ¿por qué no lo usas (al arreglo) para contener a todos los número? y luego accedes a ellos a través de índices, pienso que en Java también se ha de poder hacer. Quiero decir si tienes el arreglo "a"             a[0]: correspondería al primer elemento del arreglo "a"

Saludos
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

20 Agosto, 2015, 06:34 am
Respuesta #2

Antoniio

  • Aprendiz
  • Mensajes: 258
  • Karma: +0/-0
  • Sexo: Masculino
De acuerdo, ya indagué un poco más. Pude realizar suma:

Código: [Seleccionar]
class operaciones {
  public static void main(String[] args){
   
    int matricula[] = {2,1,4,2,0,1,9,5,3};
    int suma = 0;

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

           suma+=matricula[i];
    }
    System.out.println("La suma es igual a: " +suma);

   }
}

Realizando un for, quedó perfecto. Después intenté hacerlo con las demás operaciones ( resta, multiplicación y división) pero no pude hacer que funcionara, intenté pero no puedo :s lo dejé así pero todos suman:

Código: [Seleccionar]
class operaciones {
  public static void main(String[] args){
   
    int matricula[] = {2,1,4,2,0,1,9,5,3};
    int suma = 0;
    int resta = 0;
    int multi = 1;
    int div = 0;

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

           suma+=matricula[i];
   resta+=matricula[i];
           multi+=matricula[i];
           div+=matricula[i];
    }
    System.out.println("La suma es igual a: " +suma);
    System.out.println("La restauki aaaaes igual a: " +resta);
    System.out.println("La multiplicacion es igual a: " +multi);
    System.out.println("La division es igual a: " +div);
   }
}

dónde debo modificar para que se realice cada función?...

20 Agosto, 2015, 06:48 am
Respuesta #3

ingmarov

  • Moderador Global
  • Mensajes: 4,693
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Seguramente es porque la división por cero no está permitida.
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

20 Agosto, 2015, 07:10 am
Respuesta #4

Antoniio

  • Aprendiz
  • Mensajes: 258
  • Karma: +0/-0
  • Sexo: Masculino
No, dudo mucho que sea por eso (después de solucionar esto cambiaré los 0 por -1 como se me ha solicitado) pero el código que envié sólo suma los números de la matrícula, todos realizan la misma operación pues es la única que pude hacer, no se qué es lo que debe cambiar para que en lugar de sumar reste, en lugar de sumar multiplica y en lugar de sumar divida.

20 Agosto, 2015, 07:15 am
Respuesta #5

ingmarov

  • Moderador Global
  • Mensajes: 4,693
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
De acuerdo, ya indagué un poco más. Pude realizar suma:

Código: [Seleccionar]
class operaciones {
  public static void main(String[] args){
   
    int matricula[] = {2,1,4,2,0,1,9,5,3};
    int suma = 0;

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

           suma+=matricula[i];
    }
    System.out.println("La suma es igual a: " +suma);

   }
}

Realizando un for, quedó perfecto. Después intenté hacerlo con las demás operaciones ( resta, multiplicación y división) pero no pude hacer que funcionara, intenté pero no puedo :s lo dejé así pero todos suman:

Código: [Seleccionar]
class operaciones {
  public static void main(String[] args){
   
    int matricula[] = {2,1,4,2,0,1,9,5,3};
    int suma = 0;
    int resta = 0;
    int multi = 1;
    int div = 0;

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

           suma+=matricula[i];
   resta+=matricula[i];
           multi+=matricula[i];
           div+=matricula[i];
    }
    System.out.println("La suma es igual a: " +suma);
    System.out.println("La restauki aaaaes igual a: " +resta);
    System.out.println("La multiplicacion es igual a: " +multi);
    System.out.println("La division es igual a: " +div);
   }
}

dónde debo modificar para que se realice cada función?...


AH, ya veo

NO uses         suma+=matricula

Usa    suma=suma+matricula                Aunque es lo mismo, escribe así para que tu programa sea más facil de leer, no ganas nada escribiendo de forma resumida.



Para resta pon     resta=resta-matricula       lo que escribiste fue suma para todos


y así sucesivamente, ¿Ves tu error?
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

20 Agosto, 2015, 07:44 am
Respuesta #6

Antoniio

  • Aprendiz
  • Mensajes: 258
  • Karma: +0/-0
  • Sexo: Masculino
De acuerdo, tienes razón. Bien, la suma y la multiplicación están perfectas, la división lógicamente no me permitía correr el programa por el error del 0 así que lo quité, de todas maneras me envía un resultado erróneo al igual que la resta, este es el code:

Código: [Seleccionar]
class operaciones {
  public static void main(String[] args){
   
    int matricula[] = {2,1,4,2,1,9,5,3};
    int suma = 0;
    int resta = 0;
    int multi = 1;
    int div = 1;

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

           suma=suma+matricula[i];
           resta=resta-matricula[i];
   multi=multi*matricula[i];
           div=div/matricula[i];

    }

    System.out.println("La suma es igual a: " +suma);
    System.out.println("La resta es igual a: " +resta);
    System.out.println("La multiplicacion es igual a: " +multi);
    System.out.println("La division es igual a: " +div);

   }
}

los resultados son:
27
-27
2160
0

la resta debería ser -23, pero está iniciando con el 0 que declaré arriba, el problema es que si quito ese valor de resta me manda error, osea, si lo dejo int resta; me dice que no está declarado. Lo de la división no se por qué me da 0...

20 Agosto, 2015, 07:51 am
Respuesta #7

ingmarov

  • Moderador Global
  • Mensajes: 4,693
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
...

los resultados son:
27
-27
2160
0

la resta debería ser -23, pero está iniciando con el 0 que declaré arriba, el problema es que si quito ese valor de resta me manda error, osea, si lo dejo int resta; me dice que no está declarado. Lo de la división no se por qué me da 0...


Es que así como planteas el programa no se le puede pedir más, la suma resta y multiplicación están "aceptables".

En cuanto a la división si divides cero entre cualquier número te dará 0, ¿no lo sabías?

Algo que puedes hacer es inicializar todas las variables (suma,resta,...) como matricula[0]    (quiero decir por ejemplo int suma=matricula[0],...)  y en el ciclo for inicia i=1.

Pruébalo y estúdialo.
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

20 Agosto, 2015, 08:34 am
Respuesta #8

Antoniio

  • Aprendiz
  • Mensajes: 258
  • Karma: +0/-0
  • Sexo: Masculino
Si lo sabía Haha pero no estoy dividiendo entre cero, es porque es entero que me da el 0 :3

Ahora sólo cambiaré el 0 de la matrícula por un -1, eso ya lo he hecho antes, a ver como me va en java.

Gracias, está resuelto :3

20 Agosto, 2015, 08:48 am
Respuesta #9

ingmarov

  • Moderador Global
  • Mensajes: 4,693
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Si lo sabía Haha pero no estoy dividiendo entre cero, es porque es entero que me da el 0 :3
...

Ah claro.




Yo me había referido erróneamente a tu anterior código

...

Realizando un for, quedó perfecto. Después intenté hacerlo con las demás operaciones ( resta, multiplicación y división) pero no pude hacer que funcionara, intenté pero no puedo :s lo dejé así pero todos suman:

class operaciones {
  public static void main(String[] args){
   
    int matricula[] = {2,1,4,2,0,1,9,5,3};
    int suma = 0;
    int resta = 0;
    int multi = 1;
    int div = 0;

   ...
dónde debo modificar para que se realice cada función?...
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

20 Agosto, 2015, 11:01 am
Respuesta #10

feriva

  • Matemático
  • Mensajes: 8,945
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
  • ¡EUKERA!... ¡UEREKA!... ¡EUREKA! (corregido)

la resta debería ser -23, pero está iniciando con el 0...

Hola. En resta, define  “resta = matricula [ 0 ] ”, de esta forma te irá restando al primer elemento de la lista (o sea, 2 en este caso) los demás; y te dará -23. Creo que eso es lo que quieres, si estoy entendiendo, que no estoy seguro.

Saludos.

Bueno, ahora que lo pienso si haces eso te empieza restando 2-2 no 2-1. Para que te reste el siguiente pudes cambiar la línea de ejecución del bucle por

resta=resta-matricula[i+1]

con un condicional "if" antes para que cuando llegue al último no se produzca un error





Pones la sentencia de la resta la última y delante el condicional

if (i+1 == matricula.length) {break};

supongo que funcionará, ejecutará todas las demás menos ésa última, así no se ejecuta par i+1
 

(Ingamrov ya había dicho lo mismo que yo en cuanto a lo de la inicialización, no había leído)




21 Agosto, 2015, 01:23 am
Respuesta #11

ingmarov

  • Moderador Global
  • Mensajes: 4,693
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Spoiler

la resta debería ser -23, pero está iniciando con el 0...

Hola. En resta, define  “resta = matricula [ 0 ] ”, de esta forma te irá restando al primer elemento de la lista (o sea, 2 en este caso) los demás; y te dará -23. Creo que eso es lo que quieres, si estoy entendiendo, que no estoy seguro.

Saludos.

Bueno, ahora que lo pienso si haces eso te empieza restando 2-2 no 2-1. Para que te reste el siguiente pudes cambiar la línea de ejecución del bucle por

resta=resta-matricula[i+1]

con un condicional "if" antes para que cuando llegue al último no se produzca un error





Pones la sentencia de la resta la última y delante el condicional

if (i+1 == matricula.length) {break};

supongo que funcionará, ejecutará todas las demás menos ésa última, así no se ejecuta par i+1
 
[cerrar]
(Ingamrov ya había dicho lo mismo que yo en cuanto a lo de la inicialización, no había leído)



[/color]

Bueno feriva, al menos ya no me siento tan solo de haber sido ignorado en esta sugerencia.  ;D ;D ;D
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

21 Agosto, 2015, 03:03 am
Respuesta #12

feriva

  • Matemático
  • Mensajes: 8,945
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
  • ¡EUKERA!... ¡UEREKA!... ¡EUREKA! (corregido)


Bueno feriva, al menos ya no me siento tan solo de haber sido ignorado en esta sugerencia.  ;D ;D ;D

Es que me salto cosas al leer porque veo menos que un galápago en lejía  8^) (es una frase de un humorista español :D )

21 Agosto, 2015, 07:32 am
Respuesta #13

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,292
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
De acuerdo, tienes razón. Bien, la suma y la multiplicación están perfectas, la división lógicamente no me permitía correr el programa por el error del 0 así que lo quité, de todas maneras me envía un resultado erróneo al igual que la resta, este es el code:

Código: [Seleccionar]
class operaciones {
  public static void main(String[] args){
   
    int matricula[] = {2,1,4,2,1,9,5,3};
    int suma = 0;
    int resta = 0;
    int multi = 1;
    int div = 1;

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

           suma=suma+matricula[i];
           resta=resta-matricula[i];
   multi=multi*matricula[i];
           div=div/matricula[i];

    }

    System.out.println("La suma es igual a: " +suma);
    System.out.println("La resta es igual a: " +resta);
    System.out.println("La multiplicacion es igual a: " +multi);
    System.out.println("La division es igual a: " +div);

   }
}

los resultados son:
27
-27
2160
0

la resta debería ser -23, pero está iniciando con el 0 que declaré arriba, el problema es que si quito ese valor de resta me manda error, osea, si lo dejo int resta; me dice que no está declarado. Lo de la división no se por qué me da 0...

La división es entera, sin decimales.
Si divides 1 por cualquier número mayor, te da 0.
A partir de ahí, las demás divisiones todas darán 0.

22 Agosto, 2015, 10:12 pm
Respuesta #14

Antoniio

  • Aprendiz
  • Mensajes: 258
  • Karma: +0/-0
  • Sexo: Masculino
En efecto, gracias!, así quedó el código:

Código: [Seleccionar]
class operaciones {
  public static void main(String[] args){
   
    int matricula[] = {2,1,4,2,0,1,9,5,3};
    int suma=matricula[0], resta=matricula[0], multi=matricula[0];
    float div=matricula[0];

    for(int i=1;i<matricula.length;i++){

if (matricula[i]==0){matricula[i]=-1;}

           suma=suma+matricula[i];
           resta=resta-matricula[i];
   multi=multi*matricula[i];
           div=div/matricula[i];

    }
    System.out.println("La matricula es: (2,1,4,2,0,1,9,5,3) ");
    System.out.println("La suma es igual a: " +suma);
    System.out.println("La resta es igual a: " +resta);
    System.out.println("La multiplicacion es igual a: " +multi);
    System.out.println("La division es igual a: " +div);


   }
}

Perfecto y andando :3