In Ihrem Programm speichert das char
Array abc
alle slowenischen Alphabete in Reihenfolge. Sie können dieses Array als Referenz zu den Rängen aller slowenischen Alphabete zu verwenden, vergleichen Sie die slowenischen Wörter. Im folgenden Code habe ich eine Methode CompareSl()
definiert, um slowenische Wörter zu vergleichen, genau wie die Compare()
Methode der String
Klasse vergleicht englische Wörter. (Die Methode index()
den Index eines Zeichens in dem Array abc zurückgibt.)
Die Vergleichen() Verfahren der String Klasse nimmt zwei Strings s1 und s2 als Argumente und
♦ gibt 0 zurück, wenn die Strings gleich
♦ Returns (+) sind ve wenn s1> s2
♦ Returns (-) ve wenn s1 < s2
using System;
class Sl_Sort{
static void Main(){
string[] words = new string[]{"žiga", "špela", "črt"};
Console.WriteLine("Unsorted array is");
foreach(String st in words)
Console.Write(st+" , ");
//do selection sort to sort in ascending order
for(int i=0; i<words.Length-1;i++){
int min = i;
for(int j=i+1; j<words.Length;j++){
if(CompareSl(words[min], words[j]) > 0)
min = j;
}
string temp = words[i];
words[i] = words[min];
words[min] = temp;
}
Console.WriteLine("\nSorted array is");
foreach(String st in words)
Console.Write(st+" , ");
Console.ReadKey(); //waits till user presses a key before terminating
}
public static int CompareSl(string s1, string s2){
if(s1.Length == s2.Length){
for(int i=0; i<s1.Length; i++){
if(s1[i] != s2[i])
return index(s1[i]) - index(s2[i]);
}
}
else{
String s = s1.Length<s2.Length?s1:s2;
for(int i=0; i<s.Length; i++){
if(s1[i] != s2[i])
return index(s1[i]) - index(s2[i]);
}
if(s == s1)
return -1;
else
return 1;
}
return 0;
}
private static int index(char c){
char[] abc = { 'a', 'b', 'c', 'č', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 'š', 't', 'u', 'v', 'z', 'ž' };
for(int i=0; i<abc.Length; i++){
if(abc[i]==c)
return i;
}
return -1;
}
}
OUTPUT:
Unsorted array is
ziga , spela , crt ,
Sorted array is
crt , spela , ziga
Hinweis: Die Zeichen ž
, š
und č
wurde umgewandelt z
, s
und c
jeweils weil die Plattform ich den Code lief auf nicht gesetzt zu UTF-8
oder Unicode
, die Slowenisch unterstützen, aber ANSI
, die Slowenisch nicht unterstützt. Stellen Sie sicher, dass Ihr System Slowenisch unterstützt, um die korrekte Ausgabe zu erhalten.
Hoffe, das hilft.
Was ist das Problem beim Erstellen eines 'Comparer' und verwenden Sie' Sort'? –
@Omar versuchen mit Kultur 'Array.Sort (abc, StringComparer.InvariantCulture);' – sawbeanraz
es ist eine Aufgabe und nur Schleifen nicht mehr verwenden – Omar