Jump to content

Recommended Posts

Holas miren les cuento mi duda tengo un arreglo M y debo tener un arreglo A el cual cuando encuentre un numero 10 agrege un 1 y un 0 en base de M

 

ejemplo m = 10

A= 1,10,0

 

pense en usar if (m==10) para que que detectara y agregara, pero esto cambiaria el arreglo y la verdad nosé como inicializar el arreglo A, no pido codigo sino alguna idea xd

 

mi pseudo codigo xd

 

	    int m []= {4,6,10,3,10,5,7,12};
    for (int i=0;i<8;i++)
    {	       
    if (m[i]!=10)
    {
   	 int g=m[i];
       //
    }	    
    if (m[i]==10)
    {
   	 int f=1,10,0;
       // 
    }
    }
    int a []= {n,n,f,n,f,n,n,n};

 

toda idea es bienvenida c:

Link to comment
Share on other sites

averiguando bien la funcion y agregando codigo pude hacer lo que buscaba vale vale choco te pasaste, pero tengo una advertencia al compilarlo, pero igual puedo correrlo, me podrias decir porfas a que se debe?

 

Note: C:Users*Documentsejemz.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

 

import java.util.ArrayList;

	int[] m = {4,6,10,3,10,5,7,12};
	ArrayList a = new ArrayList();
		for(int i=0;i<m.length;i++)
		{
		if(m[i]!=10) {
		   a.add(m[i]);
		}
		if(m[i]==10) {
		   a.add(1);
		   a.add(10);
		   a.add(0);
		}
	System.out.println(a);
	}

Edited by ChronoCross
Link to comment
Share on other sites

averiguando bien la funcion y agregando codigo pude hacer lo que buscaba vale vale choco te pasaste, pero tengo una advertencia al compilarlo, pero igual puedo correrlo, me podrias decir porfas a que se debe?

 

Note: C:Users*Documentsejemz.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

 

import java.util.ArrayList;

	int[] m = {4,6,10,3,10,5,7,12};
	ArrayList a = new ArrayList();
		for(int i=0;i<m.length;i++)
		{
		if(m[i]!=10) {
		   a.add(m[i]);
		}
		if(m[i]==10) {
		   a.add(1);
		   a.add(10);
		   a.add(0);
		}
	System.out.println(a);
	}

 

debe ser por que al ArrayList le faltaron los diamantes <>, con los diamantes especificas el tipo de elementos que contendrá tu ArrayList.

prueba con:

 

 

ArrayList<int> a = new ArrayList<>();

 

Si mi memoria no falla, así sería el código y con eso se arreglaría.

Link to comment
Share on other sites

ArrayList<int> a = new ArrayList<>();

 

Si mi memoria no falla, así sería el código y con eso se arreglaría.

 

mm gracias perrin pero me tira :

 

 

C:Users*Documentsejemz.java:22: error: unexpected type

ArrayList<int> a = new ArrayList<>();

^

required: reference

found: int

C:Users*Documentsejemz.java:22: error: unexpected type

ArrayList<int> a = new ArrayList<>();

^

required: class

found: <E>ArrayList<E>

where E is a type-variable:

E extends Object declared in class ArrayList

2 errors

 

Process completed.

 

 

la verdad es que no cacho, pk recien estoy en los arreglos xD!, o tal vez me falta declarar algo mas o:?

Edited by ChronoCross
Link to comment
Share on other sites

:mmm: Si entendí bien, estás recién comenzando a ver arreglos en Java. Si es así, entonces no creo que tengas que utilizar la clase ArrayList, sino sólo arreglos comunes.

Así que, según yo, deberías hacerlo en 2 pasos:

  • Recorrer el arreglo M y contar cuántos valores iguales a 10 hay.
  • Sabiendo cuántos valores son iguales a 10, puedes declarar el nuevo arreglo A (sabes cuántos elementos tendrá).

 

y ahora puedes empezar a asignarle los valores al nuevo arreglo A, o sea, le vas copiando los valores desde el arreglo M.

Porsiaca, el largo del arreglo A será:

 

LARGO(A) = LARGO(M) + (OCURRENCIAS * 2)

 

donde OCURRENCIAS es cuántos valores iguales a 10 encontraste en el arreglo M.

Link to comment
Share on other sites

  • Recorrer el arreglo M y contar cuántos valores iguales a 10 hay.
  • Sabiendo cuántos valores son iguales a 10, puedes declarar el nuevo arreglo A (sabes cuántos elementos tendrá).

 

gracias estimado, pero ummm intente hacer tu idea pero me da error,

 

 

4 6 0 3 0 5 7 12 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8

at ejemplos.main(ejemplos.java:34)

 

alguna sugerencia ?

 

 

       int sum;
       int cont=0;
       int[] m = {4,6,10,3,10,5,7,12};
       for(int i=0;i<m.length;i++)
       {
        if (m[i]==10)
        cont=cont+2;
       }
       sum=cont+m.length;
       //System.out.println(sum);
       int a[] = new int [sum]; 
       for (int i=0;i<a.length;i++){
        if (m[i]!=10){
         a[i]=m[i];}
        if (m[i]==10){
         a[i]=1;}
           if (a[i]==1){ 
         a[i]++;
         a[i]=10;}
          if (a[i]==10){
         a[i]++;
         a[i]=0; 
        }
        System.out.print(a[i]+" "); 
        }

Link to comment
Share on other sites

El largo del arreglo A es mayor o igual al largo de M; por lo tanto, el ciclo for se pasa de largo, porque estás usando la longitud de A para recorrer el arreglo M :tonto:

Además tienes que usar if...else (tú estás usando 2 if), o sea:

if (m[i] != 10){
  // copiar valor desde arreglo M
}
else{    // En caso contrario (m[i] es igual a 10)
  // insertar un 1
  // copiar valor desde arreglo M
  // insertar un 0
}

 

Lo otro, tienes que usar un índice para cada arreglo, es decir, el índice del ciclo for te sirve para recorrer el arreglo M, y necesitas otro índice para ir asignándole valores al arreglo A.

Además recuerda que el arreglo A está "vacío", así que sólo debes asignarle valores dentro del ciclo for, no consultar si algún elemento tiene determinado valor (ya que no han sido asignados todavía).

Link to comment
Share on other sites

averiguando bien la funcion y agregando codigo pude hacer lo que buscaba vale vale choco te pasaste, pero tengo una advertencia al compilarlo, pero igual puedo correrlo, me podrias decir porfas a que se debe?

 

Note: C:Users*Documentsejemz.java uses unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

 

import java.util.ArrayList;

	int[] m = {4,6,10,3,10,5,7,12};
	ArrayList a = new ArrayList();
		for(int i=0;i<m.length;i++)
		{
		if(m[i]!=10) {
		   a.add(m[i]);
		}
		if(m[i]==10) {
		   a.add(1);
		   a.add(10);
		   a.add(0);
		}
	System.out.println(a);
	}

 

Esas son advertencias de compilador, cosas de versiones.

 

Te di el ejemplo con ArrayList (Colecciones) por un tema de costumbre.

 

Aquí te dejo el ejemplo en Array del mismo que te di anteriormente en Colecciones, ya que veo que algunos respondieron algo sin dar un ejemplo claro. Hay otras formas, pero hacen lo mismo.

 

	int[] m = {4,6,10,3,10,5,7,12};
	int contador = 0;

	for(int i = 0; i < m.length; i++) {
		if(m[i] == 10 ) {
			contador = contador + 3;
		}
	}

	int[] a = new int[contador];

	for(int i = 0; i < m.length; i++) {
		if(m[i] == 10) {
			for(int j = 0; j < a.length; j = j + 3) {
				a[j] = 1;
				a[j + 1] = 10;
				a[j + 2] = 0;
			}
		}
	}

	for( int x = 0; x < a.length; x++) {
		System.out.println(a[x]);
	}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...