Last Stop
условие: https://judge.softuni.bg/Contests/Practice/DownloadResource/5373
моят код:https://pastebin.com/PwDfwhWS
Може ли малко помощ за Change и Switch
условие: https://judge.softuni.bg/Contests/Practice/DownloadResource/5373
моят код:https://pastebin.com/PwDfwhWS
Може ли малко помощ за Change и Switch
Здравей,
Ето го решението върху твоя код, което дава 100%: https://pastebin.com/QKcL53PR
1. Направил съм 2 метода за Switch & Change ще видиш каква е идеята.
2. Имаше грешка при Insert. В твоя случай се мъчиш да видиш дали картината съществува, а идеята е да ограничиш индекса, така че да е валиден. И там ще се ориентираш като видиш разликите.
Ако мога да помагам с още нещо само кажи :)
Иво
Аз също имам някакъв проблем със Switch командата. В първия случай работи, а във втория не. Ако някой може да помогне ще бъда благодарен. Условието е същото като от предния пост.
https://pastebin.com/uUWNzXy6
Помагайте гърми здраво!!! :(
using System;
using System.Linq;
using System.Collections.Generic;
namespace midExam
{
class Program
{
static List<int> Numbers = new List<int>();
static void Main(string[] args)
{
Numbers = Console.ReadLine()
.Split(" ")
.Select(int.Parse)
.ToList();
string comand = Console.ReadLine();
while (comand != "END")
{
string[] comandSplitet = comand.Split();
switch (comandSplitet[0])
{
case "Insert":
{
int firstNum = int.Parse(comandSplitet[1]);
int secNum = int.Parse(comandSplitet[2]);
if (firstNum<0||firstNum>=Numbers.Count)
{
break;
}
else
{
InsertFunk(firstNum, secNum);
}
break;
}
case "Switch":
{
int firstNum = int.Parse(comandSplitet[1]);
int secNum = int.Parse(comandSplitet[2]);
bool cont = false;
for (int i = 0; i < Numbers.Count; i++)
{
if(Numbers[i]==firstNum||Numbers[i]==secNum)
{
cont = true;
}
}
if(cont)
{
SwitchFunk(firstNum, secNum);
break;
}
else
{
break;
}
}
case "Hide":
{
int firstNum = int.Parse(comandSplitet[1]);
bool cont = false;
for (int i = 0; i < Numbers.Count; i++)
{
if(Numbers[i]==firstNum)
{
cont = true;
}
}
if(cont)
{
HideFunk(firstNum);
}
else
{
break;
}
break;
}
case "Reverse":
{
for (int i = 0; i < Numbers.Count / 2; i++)
{
int tmp = Numbers[i];
Numbers[i] = Numbers[Numbers.Count - i - 1];
Numbers[Numbers.Count - i - 1] = tmp;
}
break;
}
case "Change":
{
int firstNum = int.Parse(comandSplitet[1]);
int secNum = int.Parse(comandSplitet[2]);
bool cont = false;
for (int i = 0; i < Numbers.Count; i++)
{
if (Numbers[i] == firstNum)
{
cont = true;
}
}
if (cont)
{
ChangeFunk(firstNum, secNum);
break;
}
else
{
break;
}
}
default:
break;
}
comand = Console.ReadLine();
}
Console.WriteLine(string.Join(" ", Numbers));
}
static void InsertFunk(int index, int number)
{
Numbers.Insert(index + 1, number);
}
static void SwitchFunk(int one, int two)
{
int indexone = 0;
int indextwo = 0;
for (int i = 0; i < Numbers.Count; i++)
{
if (Numbers[i] == one)
{
indexone = i;
}
if (Numbers[i] == two)
{
indextwo = i;
}
}
int temp = one;
Numbers[indexone] = Numbers[indextwo];
Numbers[indextwo] = temp;
}
static void HideFunk(int one)
{
Numbers.Remove(one);
}
static void ChangeFunk(int one, int two)
{
int indexone = 0;
for (int i = 0; i < Numbers.Count; i++)
{
if (Numbers[i] == one)
{
indexone = i;
}
}
Numbers.RemoveAt(indexone);
Numbers.Insert(indexone, two);
}
}
}
Мерси много!