Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что не так с данным кодом C#

coda8 Ученик (47), на голосовании 2 дня назад
 static void Main(string[] args) 
{
Console.WriteLine("Введите число индексов в массиве: ");
int indexArray = int.Parse(Console.ReadLine());


if (indexArray < 0)
{
Console.WriteLine("Нельзя вводить значения меньше нуля.");
return;
}

int[] myArray = new int[indexArray];

Console.WriteLine("Выберите где хотите поменять значение для массива(в начале, в конце, ввести самому): ");

string select = Console.ReadLine();

valueArray(ref myArray, indexArray, select);
}

static void valueArray(ref int[] myArray, int indexArray, string select)
{
if (select == "В конце" || select == "в конце" || select == "В КОНЦЕ" || select == "Конец")
{

Console.WriteLine("Какое значение хотите добавить в конец массива: ");
int endValueArray = int.Parse(Console.ReadLine());

for (int i = 0; i <= myArray.Length ; i++)
{
if (i == myArray.Length - 1)
{
myArray[i] = endValueArray;

Console.WriteLine("Значение массива под индексом " + myArray.Length +" изменено на " + endValueArray);
}
}

//for (int i = 0; i < myArray.Length; i++)
//{
// Console.WriteLine(myArray[i]);
//}


}
else if (select == "В начале" || select == "в начале" || select == "В НАЧАЛЕ" || select == "Начало")
{

Console.WriteLine("Какое значение хотите добавить в начало массива: ");
int startValueArrayZero = int.Parse(Console.ReadLine());



myArray[0] = startValueArrayZero;

Console.WriteLine("Значение массива под индексом " + 0 + " изменено на " + startValueArrayZero);


//for (int i = 0; i < myArray.Length; i++)
//{
// Console.WriteLine(myArray[i]);
//}

}
else if (select == "Ввести самому" || select == "ввести самому" || select == "ВВЕСТИ САМОМУ" || select == "Сам")
{

Console.WriteLine("Под какой индекс хотите добавить значения: ");
int indexValue = int.Parse(Console.ReadLine());

Console.WriteLine("Какое значение хотите добавить: ");
int valueArray = int.Parse(Console.ReadLine());


for (int i = indexArray; i <= myArray.Length; i++)
{
if (i == myArray.Length - 1)
{
myArray[i] = valueArray;

Console.WriteLine("Значение массива под индексом " + myArray.Length + " изменено на " + valueArray);
}
else if (indexArray > myArray.Length)
{
Console.WriteLine("Такого индекса нету, их всего: " + myArray.Length);
}

}


for (int i = 0; i < myArray.Length; i++)
{
Console.WriteLine(myArray[i]);
}
}
else
{

Console.WriteLine("Вы ввели что то неправильно, давайте попробуем еще раз :(");

}
}
Значение введенное пользователь не присваивается под индекс который ввел пользователь, в чем проблема?
Голосование за лучший ответ
Владимир Большаков Гуру (2558) 1 месяц назад
попробуй этот:

 else if (select == "Ввести самому" || select == "ввести самому" || select == "ВВЕСТИ САМОМУ" || select == "Сам")  
{
Console.WriteLine("Под какой индекс хотите добавить значение: ");
int indexValue = int.Parse(Console.ReadLine());

if (indexValue >= 0 && indexValue < myArray.Length)
{
Console.WriteLine("Какое значение хотите добавить: ");
int valueArray = int.Parse(Console.ReadLine());

myArray[indexValue] = valueArray;

Console.WriteLine("Значение массива под индексом " + indexValue + " изменено на " + valueArray);
}
else
{
Console.WriteLine("Такого индекса нет, их всего: " + myArray.Length);
}

for (int i = 0; i < myArray.Length; i++)
{
Console.WriteLine(myArray[i]);
}
}
Jurijus Zaksas Искусственный Интеллект (442810) 1 месяц назад
>Что не так с данным кодом
Это гигантский запутанный линейный код, написанный с нарушением всех конвенций написания собственно кода. Представляет собой типичные макароны, в которых никто не будет копаться в поисках чего-либо.
Существуют самые разные методологии написания кода, изучи любую и пользуйся ей. Всегда.
Похожие вопросы