0

後でそれを好転させる整数シーケンスを作成する必要があります。例。整数が 0,1,2,3,4 の場合、最終的には -4,-3,-2,-1,0 になります。

私が持っているint値(mas1)を-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;
4

3 に答える 3

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) で除算することはできません。ただし、コードで何をしているのかわかりません。

于 2013-01-11T09:17:15.630 に答える
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();
于 2013-01-11T09:34:00.380 に答える
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;
于 2013-01-11T09:29:57.407 に答える