04/01/14 18:07
Dice
ho un problema:
io ho un array di 5 elementi e devo contare quanti elementi uguali ci sono (ad esempio se ci sono 3 quattro; oppure 3 cinque, ecc...).
Come devo fare?
aaa
04/01/14 19:49
TheDarkJuster
int array[5] = { ......... };
int s = 0;
int diversi = 0;
int *duplicati;
int *numeroDuplicati;
for (int i = 0; i < 5; i++)
{
bool trovato = false;
for (int j = 0; j < 5; j++)
if ((array[i] == array[j]) && (i != j))
trovato = true;
if (!trovato)
diversi++;
}
così trovi i diversi fra loro........
duplicati = (int*)malloc(5 - diversi);
numeroDuplicati = (int*)malloc(5 - diversi);
for (int i = 0; i < 5; i++)
{
bool presente = false;
for (int j = 0; j < 5- diversi; j++)
if (array[i] == duplicati[j])
presente = true;
if (!presente)
{
bool trovato = false;
for (int j = 0; j < 5; j++)
if ((array[i] == array[j]) && (i != j))
trovato = true;
duplicati[s++] = array[i];
}
}
ora, se non ho sbagliato, hai:
array che non è cambiato; diversi con il numero di numeri diversi fra loro nell' array, duplicati che è grande 5 - diversi e che in ogni "elemento" ha un numero doppio in array (il numero non è duplicato) e numeroDuplicati che è da riempire...... Io lo riempirei così: duplicati[X] ha il valore di un numero duplicato in array, numeroDuplicati[X] ha il numero di volte in cui duplicati[X] è ripetuto nell' array. Hai capito?
dove vedi = (int*)malloc..... cambia con = new int[5-diversi] e togli int *duplicati e lascia int[] duplicati;
Ultima modifica effettuata da TheDarkJuster 04/01/14 20:03
aaa
04/01/14 20:24
nessuno
La domanda mi sembra per il C# e la risposta per C/C++ ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
05/01/14 10:35
Dice
in effetti si, io devo fare questo lavoro in C#, non in C/C++.
Come posso risolvere in modo semplice senza scrivere mille righe di codice?
aaa
05/01/14 12:30
TheDarkJuster
Purtroppo mi sono accorto troppo tardi, va beh, ma è uguale, solo che invece di int * metti int[] e dove vedi (int*)malloc(5-diversi) metti new int[5 - diversi]
Il resto non cambia
aaa
05/01/14 14:25
Dice
forse sono stupido io, ma... ti posso chiedere il grande favore di riscrivermi soltanto la parte che mi serve per verificare quanti numeri uguali ci sono?
aaa
05/01/14 14:30
TheDarkJuster
Eh no, adesso esageriamo. Non solo tu prima mi hai chiesto la pappa pronta e io, forse un pò troppo buono te la ho anche data, ma adesso, non avendo capito cambi la domanda e vuoi altro codice. Sarò io cattivo ma non credo che scrivere le cose al posto tuo sia una grande idea. Se tu specifichi BENE cosa vuoi (nota bene che la domanda e ciò che mi hai chiesto ora sono due cose diverse) ti posso anche dire l' algoritmo per arrivare alla soluzione, oppure ti arrangi......
aaa