В одномерном массиве, состоящем из п вещественных элементов, вычислить: произведение положительных элементов массива; сумму элементов массива, расположенных до минимального элемента.
Упорядочить по росту отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lab3
{
class Array
{
int d;
int size1;
int size2;
double[] a;
bool Error;
int aIndex;
public void Field()
{
Console.WriteLine("Введiть межi масиву: ");
Console.Write("Перша межа:");
size1 = Convert.ToInt32(Console.ReadLine());
Console.Write("Друга межа:");
size2 = Convert.ToInt32(Console.ReadLine());
d = size2 - size1 + 1;
}
public void ScanArray()
{
a = new double[d];
int x = size1;
Console.WriteLine("Введiть массив: ");
for (int i = 0; i < d; i++)
{
Console.Write("a[" + x + "]=");
a[i] = Convert.ToDouble(Console.ReadLine());
x++;
}
foreach (double z in a)
Console.Write("\t" + z);
Console.Write("\n");
}
public double this[int index]
{
get
{
if (ok(index))
{
Error = false;
return a[index - size1];
}
else
{
Error = true;
return 0;
}
}
set
{
if (ok(index))
{
a[index] = value;
Error = false;
}
else Error = true;
}
}
private bool ok(int index)
{
if (index >= size1 & index <= size2) return true;
else
return false;
}
public void Dobutok()
{
double p = 1;
for (int i = 0; i < d; i++)
if (a[i] >= 0.0)
p = p * a[i];
Console.WriteLine("Добуток додатних елементiв:" + p);
}
public void Summa()
{
double max = a[0];
double min = a[0];
double S = 0.0;
for (int i = 0; i < S; i++)
{
if (max <= 0)
{
max = a[i];
}
if (min >= a[i])
{
min = a[i];
}
if (a[i] > min && a[i] < max)
S = S + a[i];
}
Console.WriteLine("Добуток елементiв мiж максимальним i мiнiмальним елементом:" + d);
}
public void Sort()
{
??????????
}
public void Scan2()
{
Console.Write("\nВведiть номер елемента для виведення: ");
aIndex = Convert.ToInt32(Console.ReadLine());
}
public void Element()
{
double x;
Console.Write("\nВведiть номер елемента для виведення: ");
aIndex = Convert.ToInt32(Console.ReadLine());
x = this[aIndex];
if (this.Error)
Console.WriteLine("Ви вказали неправильний номер елемента");
else
Console.WriteLine("a[" + aIndex + "]=" + x);
}
static void Main(string[] args)
{
Array a = new Array();
a.Field();
a.ScanArray();
a.Dobutok();
a.Summa();
a.Sort();
a.Element();
Console.ReadKey();
}
}
}
Вот код, решающий Вашу задачу сортировки. Склепал на коленке за 10 минут, просьба не ругаться. Код не претендует на "чистоту", просто делает то, что нужно TC. В переменной sorted
отсортированный массив.
UPD: скорректирован код для работы с повторяющимися элементами массива
var a = new double[] { /*тут инициализируй свой массив*/ };
List<double> lst = a.ToList();
List<double> chet = lst.Where((x, i) => (i % 2) == 1).ToList();
chet.Sort();
List<double> nechet = lst.Where((x, i) => (i % 2) == 0).ToList();
nechet.Sort();
List<double> output = new List<double>();
int chetcounter=0;
int nechetcounter=0;
for (int i = 0; i < chet.Count + nechet.Count; i++)
{
if ((i % 2) == 0)
{
output.Add(nechet[nechetcounter]);
nechetcounter++;
}
else
{
output.Add(chet[chetcounter]);
chetcounter++;
}
}
var sorted = output.ToArray();
Сортировку элементов массива можно спокойно сделать с помощью Linq.Вот пример, если что-то непонятно - спрашивай!
using System; using System.Linq;
class OrderByArray {
static void Main()
{
//Тут должен быть твой массив
double[] d = { 2.0, 8.6, 7.4, 12.0, 9.1, -1.14, -3.6,-8.0,-13.7,4.0};
//Тут значения соритируются по возрастанию и выбираются четные числа
var orderbya = from n in d
orderby n
where n % 2 == 0.0
select n;
Console.Write("Четные числа массива: ");
foreach (var res in orderbya)
{
Console.Write("{0:#.##} ", res);
}
//Тут значения соритируются по возрастанию и выбираются нечетные числа
var orderbyd = from n in d
orderby n
where n % 2 != 0.0
select n;
Console.WriteLine();
Console.Write("Нечетные числа массива: ");
foreach (var res in orderbyd)
{
Console.Write("{0:#.##} ",res);
}
Console.Read();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть некое приложение, которое нажимает кнопки и переходит по этим кнопкам на другие ссылки заполняет input и так далееТак вот есть одна проблема
Здравствуйте! По какой причине программа может виснуть до получения ответа на string answer = ReceiveDataFromServer();? Те
ЗдравствуйтеЕсть сайт, написанный с использованием синтаксиса Razor