|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 37
|
Array di interi...problemino
Salve, ragazzi. Ho un array di interi non necessariamente ordinato in ordine crescente. Devo ottenere questo risultato:
array iniziale: int num[] = {0,0,1,1,1,3,3,4,4,4} array che devo ottenere: int num[] = {0,0,1,1,1,3,3} Cioè devo eliminare il numero che si ripete più volte più grande. Potete aiutarmi??? GRAZIE!!! Ultima modifica di Lo_Straniero2003i : 19-06-2006 alle 15:34. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
|
IMHo: parti dall'algoritmo del massimo di un vettore e, contestualmente, ci valorizzi una variabile-contatore che conta le ripetizioni di quel valore nell'array.
Inizia ad abbozzare qualcosa...
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 37
|
Potresti scrivermi una porzione di codice per favore? Il linguaggio è indifferente. Grazie.
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Inoltre per l'array di destinazione devi usare lo stesso array o un altro (anche allocato dinamicamente)?? Comunque credo che convenga: 1) Ordinare in modo crescente l'array. 2) Cercare il numero che si ripete più volte. 3) Copiare i dati in un altro array saltando il numero che compare più volte. Poi magari posta qualcosa che vediamo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
|
Per calcolare il massimo assumiamo inizialmente che il massimo elemento è il primo e poi facciamo una scansione degli elementi del vettore.
Se troviamo un elemento che è maggiore del massimo, quello è il nuovo massimo. Codice:
massimo=x[0];
for(i=0; i<=numeroelementi-1; i=i+1)
{
if( x[i]>massimo )
{
massimo=x[i];
}
}
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 37
|
E tutto giusto...ma non ci riesco!!
Per favore, mi scriveresti il codice? sò che sarà na stupidagine...ma proprio non riesco ad arrivarci... |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 37
|
La ricerca del massimo era chiara; ma da un vettore iniziale, devo avere lo stesso vettore senza il num che si ripete più volte più grande.
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
|
Quote:
1-ordiniamo il vettore in maniera crescente Codice:
for (i=0;i<(dimax-1);i++)
{
for (j=i+1;j<dimax;j++)
{
if (num[i]<=num[j])
{
appoggio=num[i];
num[i]=num[j];
num[j]=appoggio[i];
}
}
}
Codice:
massimo=x[0];
cont=0;
for(i=0; i<=(dimax-1); i++)
{
if( num[i]>=massimo )
{
massimo=num[i];
cont++;
}
}
Codice:
for (i=dimax;i=(dimax-cont);i--)
{
num[i]='';
}
Spero di esserti stato comunque utile.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond Ultima modifica di motogpdesmo16 : 19-06-2006 alle 16:50. |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
servira' a qualcosa no ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
|
Quote:
inoltre nella ricerca del massimo, la clausola è ">=" e non solo uguale e pertanto il cont piazzato li conta quante volte avviene il cambio di valore o alternativamente quando viene trovato un valore massimo uguale a quello già memorizzato. Dovrebbero essere risolti ora gli errori a cui facevi riferimento....
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
ocio che la fretta é una brutta bestia
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
No, l'errore non e' il > Qui hai 2 rami: - il numero e' uguale a quello appena letto ? si -> incrementa cont di 1 no -> resetta cont = 1 ed assegna a massimo il numero trovato Questo ovviamente dato per scontato che l'array e' in ordine crescente
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
|
Quote:
Codice:
massimo=x[0];
cont=0;
for(i=0; i<=(dimax-1); i++)
{
if( num[i]>massimo )
{
cont++;
}
else
{
massimo=num[i];
cont=1;
}
}
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1454
|
non ho capito bene il problema...
il numero incriminato è il più alto indipendentemente dal numero di volte che si ripete o è quello che si presenta il maggior numero di volte ed in caso di pareggio fra due numeri è il più alto? per intenderci, nel seguente vettore rimarrebbe l'uno o gli zeri? {0,0,0,1} |
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 37
|
Il vettore da te scritto resterebbe tale
|
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 37
|
Scusa motogpdesmo16... mi serve capire questo:
hai scritto questo: for (i=dimax;i=(dimax-cont);i--) { num[i]=''; } ma la condizione è che i==(dimax-cont) ??? |
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
|
Quote:
{ num[i]=''; } ennesimo errore di scrittura. Scusami ancora...ma oggi evidentemente era giornata di mente annebbiata.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
Codice:
if( num[i]>massimo )
{
cont++;
}
else
{
massimo=num[i];
cont=1;
}
Intendevi questo, vero?
diciamo che cosi' funziona meglio: Codice:
if( num[i] > massimo )
{
massimo = num[i];
cont = 1;
}
else
{
cont++;
}
chissá le boiate che scriveró ad Agosto
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z ∞Mb - Win Eight SP (1 > yours) 16 Valve |
|
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 37
|
Scusatemi, ma in java come faccio a dare il valore a vuoto? Perchè se metto "" o '' mi dà errore...mi sta portando via troppo tempo sto esercizio...e la prox settimana ho l'esame!!!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:57.



















