Il prolema principale sta nell'istruzione
gets(sequenzautente);
la quale legge una stringa da input memorizzandola nell'array sequenzautente; ma in C le stringhe sono terminate anche dal carattere nullo '\0', che viene inserito come utlimo carattere della stringa stessa; ora se tu hai dichiarato un array sequenzautente di 4 posizioni, questo conterrà i quattro caratteri che rappresentano i colori, pero poi la gets ci mette anche il carattere di fine stringa, ma sequenzautente puo contenere solo 4 caratteri, quindi quel carattere nullo viene scritto in una posizione di memoria che non appartiene più all'array, ma che ad esempio nel caso del mio compilatore, e probabilmente anche nel tuo, corrisponde alla prima posizione dell'altro array che dichiari, ovvero sequenzapc, infatti se provi a stampare sequenzapc dopo la gets, ti rendi conto che la prima posizione di sequenzapc come intero è diventata 0, che corrisponde al carattere '\0'; per risolvere il problema basta dichiarare sequenzautente come array di 5 caratteri; un altro problema penso che sia il conteggio dei colori che non si trovano nella stessa posizione nei due array, perche quando trovi una corrispondenza tra due colori in posizioni uguali o diverse nei due array, devi ad esempio cancellarli, perke se no puoi contare lo stesso colore piu volte; ho modificato quindi i cicli for, in modo tale che quando si trova un colore, le corrispondendti posizioni degli array vengono azerate: in questo modo bianchi + neri è sempre <= 4:
codice:printf("\n\nI colori sono: Blu Verde Giallo Arancio Rosso Marrone\n\n"); printf("Inserisci la tua sequenza (max 4 colori): "); gets(sequenzautente); //prima controllo i colori se sono uguali posizione per posizione for(j=0;j<4;j++){ if(sequenzautente[j]==sequenzapc[j]){ neri++; sequenzapc[j] = 0; sequenzautente[j] = 0; } } //Poi controllo se qualke colore di sequenzapc puo essere fatto //corrispondere con un colore di sequenzautente in diveersa posizione for(j=0;j<4;j++){ //Se il colore nella posizione j non l'ho trovato ancora... if(sequenzapc[j] != 0){ //lo conronto con le altre posizioni for(k=0;k<4;k++){ if(sequenzautente[k]==sequenzapc[j]){ bianchi++; sequenzautente[k] = 0; sequenzapc[j] = 0; break; } } } }