Prob. mit längste oder kürzeste String Ausgabe

meste

Erfahrenes Mitglied
Hallo allerseits!

Zuerst mal sorry für den Beitrag, weil ich nicht wußte wohin damit,
ich habe ein sehr nervendes Problem, welches mich seit gestern in Verzweiflung bring und hoffe dabei auf eure Hilfe.

Ich habe ein Array mit unteschiedlichen Größen. Bei der Ausgabe möchte ich nach dem längsten oder kürzesten (egal) Wort Suchen, und nur diese Ausgeben. Ich habe es, weiß ich nicht schon wie oft probiert, aber es will einfach nicht.

Code:
        For i = 0 To a.GetUpperBound(0) - 1
            If a(i).Length <= a(i + 1).Length Then
                WriteLine("Das kürzeste Wort lautet: " & a(i))
            End If
        Next

Danke im vorhinein

meste
 
Hallo,

Du vergleichst nur sich nachfolgende Elemente. Für das Suchen von Max/Min Werten solltest Du aber jeden Wert mit jedem vergleichen.

Am besten Du suchtst Dir einen einfachen Sortieralgorithmus, wie den Bubble Sort, der auf zwei Schleifen basiert...sortierst das Array aufsteigend und siehe da an Position 0 steht das kleinste an der Stelle UBound das größte Objekt.

Hoffe das hilft Dir weiter.

Gruß
Alex
 
Du kannst dir auch eine Liste zusammenbauen, die das für dich übernimmt.

Im nachstehenden Code siehst du, wie man das machen kann. Ich weise aber gleich darauf hin, dass der untere Code

1. nicht typisiert ist
2. entsprechende Maßnamen in der Methode Remove, RemoveAt etc. noch fehlen und entsprechend implementiert werden müssen

Soll ja auch nur zeigen wie man das verwenden kann.
Code:
using System;
using System.Collections;

namespace SortTest
{
	/// <summary>
	/// Zusammenfassung für DualSortedList.
	/// </summary>
	public class DualSortedList : IList
	{
		private ArrayList list = null;
		private string shortest = String.Empty;
		private string longest = String.Empty;

		public string Shortest 
		{
			get { return this.shortest; }
		}

		public string Longest 
		{
			get { return this.longest; }
		}

		public DualSortedList()
		{
			list = new ArrayList();
		}

		public int Count 
		{
			get { return this.list.Count; }
		}

		public void Clear() 
		{
			this.list.Clear();
		}

		public bool IsFixedSize 
		{
			get { return this.list.IsFixedSize; }
		}

		public bool IsReadOnly 
		{
			get { return this.list.IsReadOnly; }
		}

		public void CopyTo(Array array, int index) 
		{
			this.list.CopyTo(array, index);
		}

		public void Insert(int index, object o) 
		{
			if (o == null || o.ToString().Length < this.shortest.Length)
				this.shortest = o.ToString();
			
			if (o == null || o.ToString().Length > this.longest.Length)
				this.longest = o.ToString();

			this.list.Insert(index, o);
		}

		public int Add(object o) 
		{
			if (this.shortest == String.Empty  || o.ToString().Length < this.shortest.Length)
				this.shortest = o.ToString();
			
			if (this.longest == String.Empty || o.ToString().Length > this.longest.Length)
				this.longest = o.ToString();

			return this.list.Add(o);
		}

		public IEnumerator GetEnumerator() 
		{
			return this.list.GetEnumerator();
		}

		public bool IsSynchronized 
		{
			get { return this.list.IsSynchronized; }
		}

		public bool Contains(object o) 
		{
			return this.list.Contains(o);
		}

		public int IndexOf(object o) 
		{
			return this.list.IndexOf(o);
		}

		public void Remove(object o) 
		{			
			this.list.Remove(o);
		}

		public void RemoveAt(int index) 
		{
			this.list.RemoveAt(index);
		}

		public object this[int index] 
		{
			get { return this.list[index]; }
			set { this.list[index] = value; }
		}

		public object SyncRoot
		{
			get { return this.list.SyncRoot; }
		}
	}
}
Das ganze kann jetzt zum Beispiel so getestet werden:
Code:
DualSortedList dsl = new DualSortedList();
dsl.Add("muh");
dsl.Add("muh1");
dsl.Add("test");
dsl.Add("test3");
dsl.Add("huhuhuhuhu");

Console.WriteLine("Shortest: " + dsl.Shortest);
Console.WriteLine("Longest: " + dsl.Longest);
Ausgabewerte:
Shortest: muh
Longest: huhuhuhuhu
 
Hi!
Danke vorerst für die Antworten, aber es soll nur der längste od. der kürzeste String Wert ausgegeben werden ohne sortierung, sondern nur vergleichen, welches Array(index) der längste od. der kürzeste ist und den dann Ausgeben.


meste
 
Zurück