PDA

Visualizza la versione completa : algoritmo elimina-occorrenze


Lucked
08-12-2003, 01:25
Ciao dinuovo a tutti! Sto cercando di fare un algoritmo(in java) che elimini le occorrenze di un numero da un array ordinato.
Questo vuol dire che 1,2,3,3,3,8,16,22,22,25
diventa: 1,2,3,8,16,22,25

Ha...ovviamente non usando array di appoggio. Chi si vuole esercitare negli algoritmi, sia il benvenuto, questo problema relativamente facile presenta non poche insidie....uff.f.f.f.f
- abbastanza difficile gia solo ordinare le idee su cosa deve fare l'agoritmo

Lucked
08-12-2003, 01:32
USANDO UN SOLO ARRAY E PERCORRENDOLO UNA SOLA VOLTA!

V1RuZ
08-12-2003, 12:06
...non credo che sia possibile scorrendeo l'array 1 sola volta!

Lucked
08-12-2003, 13:45
Addirittura? : ) Si, con 2 indici, ma dopo il primo scambio, non so come comportarmi, un indice lo fermo su cosa voglio sovrascrivere(cio un valore uguale al precedente) e l'altro lo mando avanti e mi serve per la copia..Si difficile, capire l'algoritmo preciso, mi servivano dei consigli

Luc@s
08-12-2003, 14:05
#include <cstdio>
#include <iostream>
#define N 3
#define DIM 10

using namespace std;

int main(int argc, char * argv[])
{
int arr[DIM];
for(int i = 0; i < DIM; i++)
{
if(arr[i] == N)
arr[i] = 0;
}

for(int i = 0; i < DIM;i++)
{
char * num = (arr[i] == 0) ? 'N' : (char *) arr[i];
printf("%s\n", &num);
num = NULL;
}
return 0;
}

Lucked
08-12-2003, 14:17
Purtroppo in C, e non lo posso provare, ma se la logica giusta, posso farne uno simile in java

Lucked
08-12-2003, 14:19
mmhh....per non lo capisco molto! :bubu:

Luc@s
08-12-2003, 14:23
#define N 3 // il numero da togliere
#define DIM 10 // la dimensione dell'array

.........

int arr[DIM]; // l'array
for(int i = 0; i < DIM; i++)
{
if(arr[i] == N) // se l'elemento all'indice i N allora mettilo a 0
arr[i] = 0;
}

for(int i = 0; i < DIM;i++)
{
// se l'elemento arr[i] 0 non visualizzarlo.
char * num = (arr[i] == 0) ? '' : (char *) arr[i];
printf("%s\n", &num);
num = NULL;
}
return 0;
}


In java dovrebbe essere:


for(int i = 0; i < DIM; i++)
{
if(arr.charAt(i) == N) // se l'elemento all'indice i N allora mettilo a 0
arr.charAt(i) = 0;
}

for(int i = 0; i < DIM;i++)
{
// se l'elemento arr[i] 0 non visualizzarlo.
String num = new String();
if(arr.charAt(i) == 0) {
num = " ";
}else{
num = arr.charAt(i);
}
System.out.println("Num at " + i " => num \n");
num = " "; // reinizializzo a " " x prossimo ciclo
}

Lucked
08-12-2003, 14:27
Mettilo a zero?? N = 3?? Nooooo........ma va.........un algoritmo qualcosa che deve valere in tutti i casi possibili mica solo in questo particolare.. :nonono:

Lucked
08-12-2003, 14:28
Noooo!!! Come non visualizzarlo?? Deve compattarsi l'array... :bubu:

Loading