Det enklaste att greppa rent logiskt, tror jag är att dela upp rättningen i två steg. Det är viktigt att ni förstår precis vad ni gör och varför det fungerar.
Börja med att loopa igenom "slumpatOrd" och för varje bokstav kolla om "inputOrd" innehåller samma bokstav på samma plats. Om så är fallet, sparar man det i en sträng som vi kallar "rättPlats". Om inte, sparar man bokstaven i en sträng vi kallar "felPlatsEllerFinnsInte" och lägger in ett mellanslag i strängen "rättPlats".
På så sätt har vi nu två strängar att jobba med, varav den ena (rättPlats) berättar vilka bokstäver som användaren satte på rätt plats. Det löser hälften av rättningen.
Nästa hälft är att kolla vilka av bokstäverna som faktiskt fanns, men sitter på fel plats. Det gör ni på liknande sätt genom att loopa igenom alla bokstäver i strängen "felPlatsEllerFinnsInte" och för varje bokstav kolla om "inputOrd" innehåller denna bokstav. Om inte, lägg bokstaven till en sträng "finnsInte". Om bokstaven finns i "inputOrd", spara bokstaven till en sträng "finnsPåAnnanPlats".
Nu har ni tre strängar (rättPlats, finnsPåAnnanPlats, finnsInte) som är ganska självförklarande. De berättar allt ni behöver veta, tror jag. Det är i om inte annat en god bit på vägen.
En C# string kan användas som en array med chars (tecken). Det går t.ex. att loopa igenom den såhär:
string ord = "abcde";
foreach (char bokstav in ord) {
// ...
}
För att lägga till en char till en string, kan ToString behövas:
string ord = "abcde";
char bokstav = 'f';
ord += bokstav.ToString();
// ord == abcdef
...eller inte:
string ord = "abcde";
string bokstav = "f";
ord += bokstav;
// ord == abcdef
Inte här heller:
string ord = "abcde";
char bokstav = 'g';
ord += "f" + bokstav;
// ord == abcdefg