Как найти второй положительный элемент массива? - C#
Формулировка задачи:
В лабе требуется найти произведение элементов массива с чётными номерами записать на место второго положительного элемента.
Как найти второй положительный элемент?
P.S. В этом коде оно записывает произведение вместо последнего положительного
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace laba2_mass
{
class Program
{
public const int n = 10;
public static void Main()
{
int[] a = new int[n];
int i, idx1 = 0, idx2 = 0, p = 1;
Console.WriteLine("Массив");
Random rand = new Random();
for (i = 0; i < n; i++)
{
a[i] = rand.Next(-10, 10);
Console.Write(a[i] + " ");
}
Console.WriteLine();
Console.WriteLine();
//============================//
for (i = 0; i < n; i++)
{
if(i == 1 || i == 3 || i == 5 || i == 7 || i == 9)
p *= a[i];
}
Console.WriteLine("p = " + p + "\n");
//============================//
for (i = 0; i < n; i++)
{
if (a[i] > 0)
{
if (idx1 == 0)
{
idx1 = i;
}
if (idx1 < i)
{
idx2 = i;
}
}
}
Console.WriteLine("a[idx1] = " + a[idx1] + "\n");
Console.WriteLine("idx1 = " + idx1 + "\n");
Console.WriteLine("a[idx2] = " + a[idx2] + "\n");
Console.WriteLine("idx2 = " + idx2 + "\n");
//===========================//
for (i = 0; i < n; i++)
{
if (i == idx2)
{
a[idx2] = p;
}
Console.Write(a[i] + " ");
}
Console.WriteLine();
Console.ReadKey();
}
}
}Решение задачи: «Как найти второй положительный элемент массива?»
textual
Листинг программы
int multiplication =1;
int wtf = 0;
int[] massiv = new int[10];
Random rnd = new Random();
bool a = false;
bool b = true;//если начинаем с четного элемента
for (int i = 0; i < massiv.Length; i++)
{
massiv[i] = rnd.Next(-10, 10);
if (massiv[i] > 0 && a == true)
wtf = i;
if (massiv[i] > 0)
a = true;
if(b){
multiplication *= massiv[i];
b=false;}
else
b=!b;
}
massiv[wtf] = multiplication;
Console.WriteLine("2 положительный элемент массива = {0}",massiv[2]);
//Кривовато, но пишет вместо второго. А вообще генерация нуля все портит.