C# :: Aufgabe #11 :: Lösung #1

25 Lösungen Lösungen öffentlich
#11

Multiplikation ohne zu multiplizieren

Anfänger - C# von Gustl - 11.11.2012 um 17:24 Uhr
Erstellen Sie ein Konsolenprogramm welches dem Benutzer auffordert 2 Zahlen einzugeben, diese sollen dann multipliziert werden, jedoch ist nur die Grundrechenart Addition erlaubt.

Wenn einer der 2 Zahlen keine Zahl ist, soll eine Fehlermeldung ausgegeben werden und der Benutzer noch einmal aufgefordert werden eine Zahl einzugeben.
#1
vote_ok
von pocki (4190 Punkte) - 15.11.2012 um 21:31 Uhr
Da es in der Angabe nicht genau angegeben ist, bin ich davon ausgegangen, dass mit Zahlen Ganzzahlen gemeint sind.

Für Gleitkommazahlen würde meine Funktion ähnlich aussehen, allerdings würde dafür die Rechenart Division benützt werden müssen, welche allerdings langsamer als eine Multiplikation wäre.

Hier meine Lösung:
Quellcode ausblenden C#-Code
using System;

namespace UE11
{
	class Program
	{
		static void Main(string[] args)
		{
			const string ErrorMsg = "Fehler: Keine Zahl, erneut eingeben: ";

			Console.Write("Erste Zahl eingeben: ");
			int num1;
			//Solange einlesen, bis es eine Ganzzahl ist.
			while (!int.TryParse(Console.ReadLine(), out num1))
			{
				Console.Write(ErrorMsg);
			}			
			
			Console.Write("Zweite Zahl eingeben: ");
			int num2;
			while (!int.TryParse(Console.ReadLine(), out num2))
			{
				Console.Write(ErrorMsg);
			}

			int product = Multiplicate(num1, num2);
			Console.WriteLine("Das Produkt aus {0}x{1} ist: {2}", num1, num2, product);

			Console.ReadKey();
		}

		/// <summary>
		/// Multipliziert die beiden übergebenen Ganzzahlen durch Aufsummieren
		/// </summary>
		/// <param name="num1">1. Zahl</param>
		/// <param name="num2">2. Zahl</param>
		/// <returns>Produkt der übergebenen Zahlen</returns>
		private static int Multiplicate(int num1, int num2)
		{
			int product = 0;

			//Vertauschen der Zahlen um Schleifendurchläufe kleinstmöglich zu halten.
			if (num1 < num2)
				Swap(ref num1, ref num2);

			for (int i = 0; i < num2; i++)
				product += num1;

			return product;
		}

		/// <summary>
		/// Vertauscht die beiden Werte der Variablen
		/// </summary>
		/// <param name="num1">1. Wert</param>
		/// <param name="num2">2. Wert</param>
		private static void Swap(ref int num1, ref int num2) 
		{ 
			int temp = num2;
			num2 = num1;
			num1 = temp;
		}
	}
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben