Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless
MSI FORGE GK600 TKL WIRELESS: switch lineari hot-swap, tripla connettività, display LCD e 5 strati di fonoassorbimento. Ottima in gaming, a 79,99 euro
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-06-2006, 14: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 14:34.
Lo_Straniero2003i è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 14: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, 14: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, 14:56   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
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, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 14: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, 15: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, 15: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, 15: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 15:50.
motogpdesmo16 è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2006, 15: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, 15: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, 15: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, 15: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, 16: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, 16: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, 17: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, 19: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, 20: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, 20: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, 07: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, 09: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


Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
iPhone 18 Pro: il componente che garanti...
DeepL alza il livello: con Voice-to-Voic...
Apple sta utilizzando sempre più ...
Il MacBook Neo vende tanto? Microsoft le...
AST SpaceMobile BlueBird 7: Blue Origin ...
È il momento migliore per comprar...
Svendita MacBook Pro: c'è il mode...
Oggi questa TV TCL QLED da 43 pollici co...
Il caricatore multiplo da 200W che va be...
Top 7 Amazon, il meglio del meglio di qu...
Spento lo strumento LECP della sonda spa...
Voyager Technologies ha siglato un accor...
GoPro annuncia la linea MISSION 1 con tr...
Alcune varianti dei futuri Samsung Galax...
Il ridimensionamento di OnePlus in Europ...
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: 06:01.


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