Oppure

Loading
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
05/01/14 17:25
Dice
Allora, cosa importantissima: chiedo un super scusa se sono stato scorretto, non volevo creare problemi :(

E' sicuramente colpa mia che non mi sono spiegato bene; chiedo ancora scusa :(

Adesso ripongo la domanda (sperando di non creare ulteriore confusione):

avete presente il poker, dove come "tipo di punteggio" c'è il TRIS? ecco, io devo fare una cosa praticamente uguale: sto cercando di ricreare il gioco di dadi YAHTZEE, dove come punteggio c'è anche "TRE DADI UGUALI".
Io ho fatto così: ho preso i 5 risultati casuali (bisogna lanciare 5 dadi) e gli ho memorizzati in un array.

Io devo verificare se tra questi 5 numeri casuali (da 1 a 6) ce ne sono 3 uguali.

Ecco il mio problema.
Spero di essere stato il più chiaro possibile. E scusatemi per tutti i fraintendimenti :(
aaa