Другие языки программирования и технологии
ПОМОГИТЕ С С#!!! ТУПЛЮ
В массиве размером n×n, элементы которого являются целыми числами, произвести следующие действия: удалить все столбцы, в которых четное количество нечетных элементов;
Ну лови, страдалица:
class MyMatrix
{
private int[,] Values;
public int Width { get { return Values.GetLength(0); } }
public int Height { get { return Values.GetLength(1); } }
public MyMatrix(int _Width, int _Height)
{
Values = new int[_Width, _Height];
}
public void RandomFill(int _Min, int _Max)
{
Random rnd = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < Width; i++)
for (int j = 0; j < Height; j++)
Values[i, j] = rnd.Next(_Min, _Max);
}
public void Print()
{
for (int i = 0; i < Height; i++)
{
for (int j = 0; j < Width; j++)
Console.Write("{0} ", Values[j, i]);
Console.WriteLine();
}
}
private int OddCount(int _Col)
{
int Result = 0;
for (int i = 0; i < Height; i++)
Result += Values[_Col, i] & 1;
return Result;
}
private void RemoveColumn(int _Col)
{
for (int i = _Col; i < Width - 1; i++)
for (int j = 0; j < Height; j++)
Values[i, j] = Values[i + 1, j];
int[,] NewArray = new int[Width - 1, Height];
for (int i = 0; i < Width - 1; i++)
for (int j = 0; j < Height; j++)
NewArray[i, j] = Values[i, j];
Values = NewArray;
}
public void DoJob()
{
int i = 0;
while (i < Width)
if ((OddCount(i) & 1) == 0)
RemoveColumn(i);
else
i++;
}
}
class Program
{
const int n = 10;
static void Main(string[] args)
{
MyMatrix a = new MyMatrix(n, n);
a.RandomFill(1, 10);
Console.WriteLine("Source matrix:");
a.Print();
a.DoJob();
Console.WriteLine("Processed matrix:");
a.Print();
Console.ReadKey();
}
}
Как все это счастье работает, будешь объяснять сама...
class MyMatrix
{
private int[,] Values;
public int Width { get { return Values.GetLength(0); } }
public int Height { get { return Values.GetLength(1); } }
public MyMatrix(int _Width, int _Height)
{
Values = new int[_Width, _Height];
}
public void RandomFill(int _Min, int _Max)
{
Random rnd = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < Width; i++)
for (int j = 0; j < Height; j++)
Values[i, j] = rnd.Next(_Min, _Max);
}
public void Print()
{
for (int i = 0; i < Height; i++)
{
for (int j = 0; j < Width; j++)
Console.Write("{0} ", Values[j, i]);
Console.WriteLine();
}
}
private int OddCount(int _Col)
{
int Result = 0;
for (int i = 0; i < Height; i++)
Result += Values[_Col, i] & 1;
return Result;
}
private void RemoveColumn(int _Col)
{
for (int i = _Col; i < Width - 1; i++)
for (int j = 0; j < Height; j++)
Values[i, j] = Values[i + 1, j];
int[,] NewArray = new int[Width - 1, Height];
for (int i = 0; i < Width - 1; i++)
for (int j = 0; j < Height; j++)
NewArray[i, j] = Values[i, j];
Values = NewArray;
}
public void DoJob()
{
int i = 0;
while (i < Width)
if ((OddCount(i) & 1) == 0)
RemoveColumn(i);
else
i++;
}
}
class Program
{
const int n = 10;
static void Main(string[] args)
{
MyMatrix a = new MyMatrix(n, n);
a.RandomFill(1, 10);
Console.WriteLine("Source matrix:");
a.Print();
a.DoJob();
Console.WriteLine("Processed matrix:");
a.Print();
Console.ReadKey();
}
}
Как все это счастье работает, будешь объяснять сама...
Похожие вопросы
- Тупит комп. Переставил винду не помогло. Что это может быть????Помогите!
- помогите последнюю неделю комп стал тупить
- Опишите по человечески как работает массив array (записывать в массив и извлекать из него) . Чет немного туплю. Помогите
- Помогите, пожалуйста с задачей :( Сижу, туплю уже какой день, вообще не соображу - чтокуда. Задача на Паскале
- То ли я блондинка, то ли оно всё-таки тупит...
- Туплю в паскале
- Что делать, если карта памяти на телефоне очень сильно тупит ???
- Delphi, вроде легкое дело, а что то я туплю
- че нужно зделать чтобы комп не вис и не тупил
- постоянно тупит фотошоп((говорит что не хватает ему оперативной памяти(((не виртуальной а оперативной именно!