Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-06-2006, 15:08   #1
Lo_Straniero2003i
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.
Lo_Straniero2003i è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 15:24   #2
motogpdesmo16
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
motogpdesmo16 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 15:48   #3
Lo_Straniero2003i
Member
 
Iscritto dal: Nov 2005
Messaggi: 37
Potresti scrivermi una porzione di codice per favore? Il linguaggio è indifferente. Grazie.
Lo_Straniero2003i è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 15:56   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da Lo_Straniero2003i
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.
Se ho capito bene se c'è il caso particolare come sopra (1 e 4 che si ripetono 3 volte) devi eliminare solo il maggiore cioè 4. Giusto?
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, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 15:59   #5
motogpdesmo16
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];
      }
    }
Vorrei capire comunque se l'array finale e quindi, stando al tuo esempio, quello in cui non compare il numero 4, deve essere sempre num oppure un altro.
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond
motogpdesmo16 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 16:04   #6
Lo_Straniero2003i
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...
Lo_Straniero2003i è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 16:13   #7
Lo_Straniero2003i
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.
Lo_Straniero2003i è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 16:39   #8
motogpdesmo16
Senior Member
 
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
Quote:
Originariamente inviato da Lo_Straniero2003i
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.
Seguendo quanto detto da andbin e supponendo il vettore di dimensione massima DIMAX
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];
    }
  }
 }
2-determiniamo l'elemento massimo e le sue occorrenze (quante volte esso è presente) che andremo a memorizzare in una variabile contatore "cont" inizializzata a 0:
Codice:
massimo=x[0];
cont=0;
for(i=0; i<=(dimax-1); i++)
{
      if( num[i]>=massimo ) 
      {
        massimo=num[i];
        cont++;
      }
    }
3-eliminiamo dal vettore ordinato gli ultimi cont elementi e pertanto il ciclo si arresta fino a quando i vale dimax-cont, cioè il totale degli elementi del vettore meno gli elementi duplicati:
Codice:
for (i=dimax;i=(dimax-cont);i--)
{
  num[i]='';
}
Non uso java da un bel po'. pertanto non sono sicuro che num[i]='' sia una assegnazione legittima avendo dichiarato precedentemente int num[]

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.
motogpdesmo16 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 16:43   #9
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da motogpdesmo16
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]=num[i];
    }
  }
 }
ehm ... perche' assegni un valore ad appoggio se poi non lo usi ?
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 16:47   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da motogpdesmo16
2-determiniamo l'elemento massimo e le sue occorrenze (quante volte esso è presente) che andremo a memorizzare in una variabile contatore "cont" inizializzata a 0:
Codice:
massimo=x[0];
cont=0;
for(i=0; i<=(dimax-1); i++)
{
      if( num[i]>massimo ) 
      {
        massimo=num[i];
        cont++;
      }
    }
"cont" messo li conta solo quante volte trova un numero piu' grande, cioe' i cambi di valore
__________________
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 16:51   #11
motogpdesmo16
Senior Member
 
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
Quote:
Originariamente inviato da trallallero
ehm ... perche' assegni un valore ad appoggio se poi non lo usi ?
servira' a qualcosa no ?
si per la fretta ho dimenticato di rivalorizzare num con appoggio.
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
motogpdesmo16 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 16:55   #12
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da motogpdesmo16
si per la fretta ho dimenticato di rivalorizzare num con appoggio.
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....
ok
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 17:00   #13
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da motogpdesmo16
si per la fretta ho dimenticato di rivalorizzare num con appoggio.
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....
'azz ... t'ho letto di fretta
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 17:06   #14
motogpdesmo16
Senior Member
 
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
Quote:
Originariamente inviato da trallallero
'azz ... t'ho letto di fretta
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
Mi sa che hai proprio ragione. Si vede che ho fatto di fretta...ma a grandi linee l'ho fatto.
Codice:
massimo=x[0];
cont=0;
for(i=0; i<=(dimax-1); i++)
{
      if( num[i]>massimo ) 
      {
         cont++;
      }
      else
     {
        massimo=num[i];
        cont=1;
     }

    }
Intendevi questo, vero?
__________________
Ho felicemente trattato con: Raziel1984,]Rik`[,fab77,pralina,vin81,drago,Qrama,Hangar18,gallo85,kikbond
motogpdesmo16 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 18:43   #15
Furla
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}
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 20:11   #16
Lo_Straniero2003i
Member
 
Iscritto dal: Nov 2005
Messaggi: 37
Il vettore da te scritto resterebbe tale
Lo_Straniero2003i è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 21:14   #17
Lo_Straniero2003i
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) ???
Lo_Straniero2003i è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 21:46   #18
motogpdesmo16
Senior Member
 
Iscritto dal: Feb 2004
Città: Molfetta (BA) Squadra:BARI
Messaggi: 1085
Quote:
Originariamente inviato da Lo_Straniero2003i
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) ???
for (i=dimax;i<=(dimax-cont);i--)
{
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
motogpdesmo16 è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2006, 08:17   #19
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da motogpdesmo16
ennesimo errore di scrittura. Scusami ancora...ma oggi evidentemente era giornata di mente annebbiata.
se pensi al mare mentre scrivi é normale

Codice:
if( num[i]>massimo ) 
      {
         cont++;
      }
      else
     {
        massimo=num[i];
        cont=1;
     }

Intendevi questo, vero?
niente, proprio stordito completamente
diciamo che cosi' funziona meglio:
Codice:
   if( num[i] > massimo ) 
   {
      massimo = num[i];
      cont = 1;
   }
   else
   {
      cont++;
   }
dai se ti puó consolare pensa che io fino a settembre non ho ferie
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
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2006, 10:05   #20
Lo_Straniero2003i
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!!!
Lo_Straniero2003i è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Sale LAN, la Manovra 2027 introduce una ...
11 prezzi imperdibili in Amazon: non sol...
Giù i prezzi di Xiaomi 17T e Xiao...
Una tassa di 5,5 centesimi su ogni gigab...
Vuoi clonare un videogioco con l'IA? Cla...
Furto da 6,3 miliardi di dollari, Binanc...
Gli USA dipendono dai robot stranieri: T...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Il JPL estende la vita operativa della s...
DAZN Full è in offerta: tutta la ...
GTA 6 su PC potrebbe arrivare prima del ...
Da zero al tracciato in secondi: LibreCo...
Il regista Rian Johnson lancia a 12,99 d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v