namespace ggg
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int n = rnd.Next(5, 14);
double[] a = new double[n];
Console.WriteLine("Исходный массив");
Console.ForegroundColor = ConsoleColor.Red;
for (int i = 0; i < n; i++)
{
Console.Write("{0,6}", i);
}
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
for (int i = 0; i < n; i++)
{
a[i] = -10 + 20 * rnd.NextDouble();
Console.Write("{0,6:f2}", a[i]);
}
Console.WriteLine();
double max = a[0];
int iMax = 0;
for (int i = 1; i < n; i++)
{
if (a[i] > max)
{
max = a[i]; iMax = i;
}
}
Console.WriteLine("\nМаксимальный элемент = {0,6:f2}, а его номер = {1,5}", a[iMax], iMax);
Console.WriteLine("Элементы до последнего положительного: ");
int sMax = 0;
for (int i = a.Length - 1; i > 0; i--)
if (a[i] > 0)
{
for (int j = 0; j < i; j++)
Console.Write("{0,6:f2}", a[j]);
sMax += a[j];
}
Console.WriteLine("\nИх сумма = {0,6:f2}", sMax);
Console.ReadKey();
помогите пожалуйста, ошибка вот в этом куске:
Console.WriteLine("Элементы до последнего положительного: ");
int sMax = 0;
for (int i = a.Length - 1; i > 0; i--)
if (a[i] > 0)
{
for (int j = 0; j < i; j++)
Console.Write("{0,6:f2}", a[j]);
sMax += a[j];
}
Поиск и вывод элементов до последнего положительного.
И как сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b]. Напишите хотя бы алгоритм как это делается, не понимаю (
Другие языки программирования и технологии
C#. Нужна помощь.
using System;
namespace TestArray
{
class MainClass
{
public static void Main (string[] args)
{
Random rnd = new Random ();
double[] arr = new double[rnd.Next (5, 14)];
//Заполнение, поиск последнего полож. и вывод на экран исходного массива
int index = -1;
for(int i=0; i<arr.Length; i++) {
double value = -10 + 20 * rnd.NextDouble();
arr[i] = value;
Console.Write ("{0,6:f2}", value);
if (value >= 0) index = i;
}
Console.WriteLine();
//Вывод массива от 0 до последнего позитивного (включительно)
Console.WriteLine("[0..LastPositive]");
//Если был хоть один положительный
if (index >= 0) {
//Обрезаем массив
Array.Resize(ref arr, index + 1);
//Выводим
Array.ForEach(arr, x => Console.Write ("{0,6:f2}", x));
} else Console.WriteLine("Not found");
//Ищем все элементы в диапазоне a,b, если элемент берется по модулю
Console.WriteLine();
Console.WriteLine("x=abs(x) ; x E [a,b]");
double a = 1.0; double b = 3.0;
arr = Array.FindAll(arr, x => (Math.Abs(x)>=a && Math.Abs(x)<=b));
Array.ForEach(arr, x => Console.Write ("{0,6:f2}", x));
Console.ReadKey();
}
}
}
Пруф ;)

Если что - пишите на почту.
namespace TestArray
{
class MainClass
{
public static void Main (string[] args)
{
Random rnd = new Random ();
double[] arr = new double[rnd.Next (5, 14)];
//Заполнение, поиск последнего полож. и вывод на экран исходного массива
int index = -1;
for(int i=0; i<arr.Length; i++) {
double value = -10 + 20 * rnd.NextDouble();
arr[i] = value;
Console.Write ("{0,6:f2}", value);
if (value >= 0) index = i;
}
Console.WriteLine();
//Вывод массива от 0 до последнего позитивного (включительно)
Console.WriteLine("[0..LastPositive]");
//Если был хоть один положительный
if (index >= 0) {
//Обрезаем массив
Array.Resize(ref arr, index + 1);
//Выводим
Array.ForEach(arr, x => Console.Write ("{0,6:f2}", x));
} else Console.WriteLine("Not found");
//Ищем все элементы в диапазоне a,b, если элемент берется по модулю
Console.WriteLine();
Console.WriteLine("x=abs(x) ; x E [a,b]");
double a = 1.0; double b = 3.0;
arr = Array.FindAll(arr, x => (Math.Abs(x)>=a && Math.Abs(x)<=b));
Array.ForEach(arr, x => Console.Write ("{0,6:f2}", x));
Console.ReadKey();
}
}
}
Пруф ;)

Если что - пишите на почту.
Я так понял нужно вывести часть массива до последнего положительного положительного элемента. Что тебе мешает в предыдущем цикле, где ты максимальный искал, заодно посчитать индекс последнего положительного? И после этого уже просто использовать его в новом цикле.
И зачем сжимать массив? Тебе просто нужно вывести его не полностью, вот и выводи.
for (int i = 0; i < a.Length; i++)
{
if (Math.Abs(a[i]) >= a && Math.Abs(a[i]) <= b)
Console.Write(a[i]);
}
И зачем сжимать массив? Тебе просто нужно вывести его не полностью, вот и выводи.
for (int i = 0; i < a.Length; i++)
{
if (Math.Abs(a[i]) >= a && Math.Abs(a[i]) <= b)
Console.Write(a[i]);
}
преобразуйте в List и из него удаляйте методом Remove
а потом в новый массив можете записать (метод ToArray)
или изначально работать с List вместо массива
а потом в новый массив можете записать (метод ToArray)
или изначально работать с List вместо массива
Похожие вопросы
- Программка c# нужна помощь
- (C++) Нужна помощь в создании метода "пузырька".
- c++ нужна помощь
- C++ Нужна Помощь
- Язык Arduino(C, C++) Нужна помощь: в изучении arduino встретил знак "&" помогите, пожалуйста, что он означает!
- c++ нужна помощь )
- (C++) Нужна помощь в написании 4-х программ. максимально простые, уровень с++ нулевой практически.
- C# нужна помощь, как это все объединить ?
- Нужна помощь в C++
- Программисты нужна помощь в c++!