将它转过来的整数序列

时间:2013-01-11 09:14:52

标签: c# integer int sequence divide

我必须制作一个整数序列,以后会把它转过来。例。如果整数是0,1,2,3,4,它最终将它转为-4,-3,-2,-1,0。

我试过这个,我有(mas1)的int值除以-1,所以它会改变数字上的标记。如果我尝试我得到一个错误,但无法解决。错误:

  

“运算符”/'不能应用于'int []'和'类型的操作数   'int'“

以下是代码:

int[] mas1 = { 0, 1, 2, 3, 4 };
int mas2;
int[] mass = new int[1]{mas1.Length};
Array.Sort(mass);
int arvud = mas1.Length;
int[] koik = new int[arvud];
List<int> list = new List<int>();
foreach (int i in mass)

if (i == mas1.Length) foreach (int a in mas1) list.Add(a);

foreach (int i in list) Console.Write(i + ",");



mas1 / -1 = mas2;

3 个答案:

答案 0 :(得分:4)

使用LINQ,您可以:

int[] mas1 = new []{ 0, 1, 2, 3, 4 };
int[] newArray = mas1.Reverse().Select(r => r * -1).ToArray();

或者如果你想对任何数字都有负号,无论是正数还是负数。

int[] newArray = mas1.Reverse().Select(r => -System.Math.Abs(r)).ToArray();

如果你打印它:

foreach (int item in newArray)
{
    Console.WriteLine(item);
}

然后输出为:

-4
-3
-2
-1
0

由于以下行,您收到错误:

mas1 / -1 = mas2;

您不能将数组mas1除以整数值(-1)。我不知道你在代码中做了什么。

答案 1 :(得分:1)

有一些不同的方法可以做到这一点。您可以否定每个项目并反转数组:

int[] mas1 = { 0, 1, 2, 3, 4 };
int[] mas2 = new int[mas1.Length];
for (int i = 0; i < mas1.Length; i++) {
  mas2[i] = -mas1[i];
}
Array.Reverse(mas2);

您可以使用LINQ扩展方法执行相同的操作:

int[] mas1 = { 0, 1, 2, 3, 4 };
int[] mas2 = mas1.Select(i => -i).Reverse().ToArray();

答案 2 :(得分:0)

如果要编辑阵列,可以这样有效地执行此操作:

int[] nums = { 0, 1, 2, 3, 4 };
var reverseVal = -nums[nums.Length - 1];
for (int i = 0; i < nums.Length; i++)
     nums[i] += reverseVal;

假设数组按照您的示例进行排序,此代码采用最大数字(最后一个元素),将其符号反转以添加到每个元素,从而生成所需的结果。

如果你想要一个新阵列:

int[] mas1 = { 0, 1, 2, 3, 4 };
var len = mas1.Length;

int[] mas2 = new int[len];
var reverseVal = -mas1[len - 1];
for (int i = 0; i < len; i++)
   mas2[i] = mas1[i] + reverseVal;