Position in Plateau(Console Application)
Verfasst: Sa Jan 06, 2018 8:21 pm
Ich muss ein Programm schreiben, in dem der User eine Zahl eingibt und diese dann nach dem längsten Plateau geprüft wird. (Plateau=wenn mehrere gleiche Ziffern nacheinander gleich sind also in 1113546 zb die 3 1er.)
Zudem muss ich dazu die Länge des Plateaus angeben, und die Position, an der das Plateau startet, also ganz links ist die Position 0. (bei meinem vorher angegeben Beispiel wäre die Länge also 3 und die Position 0).
Mein Lösungsversuch:
Zurzeit funktioniert nur die Position ist, mir ist auch klar warum, weil die Position ja immer hochgezählt wird. Wie kann ich die Position jetzt in einer extra Variable speichern?
LG
Zudem muss ich dazu die Länge des Plateaus angeben, und die Position, an der das Plateau startet, also ganz links ist die Position 0. (bei meinem vorher angegeben Beispiel wäre die Länge also 3 und die Position 0).
Mein Lösungsversuch:
Code: Alles auswählen
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Plateau
{
class Program
{
static void Main(string[] args)
{
long[] digits;
long number;
string userInput;
int counter=0;
long maxPlateau=0;
int length=0;
int position=0;
long plateauDigit;
long startPosition=0;
Console.WriteLine("Erechnen des längsten Plateaus einer Zahl");
Console.WriteLine("=========================================");
Console.WriteLine();
Console.Write("Bitte geben Sie eine zahl im Wertebereich von long ein: ");
userInput = Console.ReadLine();
number = Convert.ToInt64(userInput);
while (number > 0)
{
number /= 10;
counter++;
}
number = Convert.ToInt64(userInput);
digits = new long[counter];
while (number > 0)
{
digits[counter - 1] = number % 10;
number /= 10;
counter--;
}
plateauDigit = digits[0];
for (int i = 0; i < digits.Length; i++)
{
if (i > 0)
{
if (digits[i] == digits[i - 1])
{
length++;
plateauDigit = digits[i];
}
else
{
length = 0;
}
}
if (length > maxPlateau)
{
maxPlateau = length;
if (false!=!(false))
{
startPosition = position;
}
}
position++;
}
if (userInput!="0")
{
maxPlateau += 1;
Console.WriteLine($"Die Länge des längsten Plateaus in der Zahl {userInput} beträgt {maxPlateau}, die Position an der das Plateau startet, ist {position} und die Ziffer, welche das Plateau hat ist {plateauDigit}. ");
}
Console.ReadKey();
}
}
}
LG