Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.
Закрыт 1 год назад.
fixed
//15. Дано целое число N. Задать N элементов одномерного массива Найти минимальное
//количество подряд идущих максимальных элементов из данного набора.
using System;
namespace Zadacha15_LR8
{
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("Размерность массива:");
int n = int.Parse(Console.ReadLine());
int[] A = new int[n];
Input(A);
int s1 = MinPovtor(A);
Output(A);
Console.WriteLine("\n");
Console.WriteLine("Min количество максимальных элементов{0}", s1);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
static void Input(int[] A)
{
for (int i = 0; i < A.Length; i++)
{
{
Console.WriteLine("Введите элемент массива{0}", i);
A[i] = int.Parse(Console.ReadLine());
}
}
}
static void Output(int[] A)
{
for (int i = 0; i < A.Length; i++)
{
Console.Write("{0}", A[i]);
}
}
static int Max(int[] A)
{
int kmax = 0;
for (int i = 1; i < A.Length; i++)
{
if (A[i] > kmax)
{
kmax = A[i];
}
}
return kmax;
}
static int MinPovtor(int[] A )
{
int kmax = Max(A); // значение повторяющегося элемента
int s1 = 999999;// кол повторений
int i = 0;
while (i < A.Length)
{
int count = 0;
while (i < A.Length && A[i] == kmax)
{
count++;
i++;
}
if (count < s1)
s1 = count;
while (i < A.Length && A[i] != kmax)
i++;
}
return s1;
}
}
}
Так логика Max() совершенно неверная.
Чтобы не запутаться, первым проходом найдите максимум (или просто используйте Linq A.Max()
)
А вторым проходом определяйте длину серий с этим значением - и длина серии определяется, когда серия заканчивается
static int MinPovtor(int[]A, int kmax) {
int minrep = 99999999;
int rep = 0;
for (int i = 0; i <= A.Length; i++) {
if ((i == A.Length) | (kmax != A[i])) {
if rep > 0 {
minrep = min(minrep, rep);
rep = 0;
}
}
else
rep++;
}
return minrep;
}
(и опять же Linq можно сделать кратко, но, наверное, не нужно)
Можете сказать, у меня правильно получилось? В наборе массива (10,10,2,6,6,6,10,10,10,2) получается min количество max repeated элементов:2, Max element=10. Слегка исправил
using System;
namespace Zadacha15_LR8
{
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("Размерность массива:");
int n = int.Parse(Console.ReadLine());
int[] A = new int[n];
Input(A);
int s1 = MinPovtor(A);
int kmax = Max(A);
Output(A);
Console.WriteLine("\n");
Console.WriteLine("Min количество максимальных элементов{0}", s1);
Console.WriteLine("Мах repeated элемент:{0}", kmax);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
static void Input (int []A)
{
for (int i = 0; i < A.Length; i++)
{
{
Console.WriteLine("Введите элемент массива{0}", i);
A[i] = int.Parse(Console.ReadLine());
}
}
}
static void Output (int []A)
{
for (int i=0;i<A.Length;i++)
{
Console.Write("{0}", A[i]);
}
}
static int Max(int[] A)
{
int kmax = 0;
for (int i = 1; i < A.Length; i++)
{
if (A[i - 1] == A[i])
{
if (A[i] > kmax)
{
kmax = A[i];
}
}
}
return kmax;
}
static int MinPovtor(int[]A)
{
int kmax = 0; // значение повторяющегося элемента
int s1 = 1;// кол повторений
for (int i = 1; i < A.Length; i++)
{if (A[i - 1] == A[i])
{
if (A[i] > kmax)
{
++s1;
kmax = A[i];
return s1;
}
}
if (A[i] != A[i - 1])
{
int t1 = s1;
s1 = 1;
}
}
return s1;
}
}
}
Поставили задачу написать алгоритм сложения элементов массива на asm(ассемблерные вставки на с),c#,c и сравнить время исполненияНаписал простенький...
Задание: Необходимо разработать программу, в которой было реализовано два потока (нити)Эти потоки должны запускаться одновременно и сортировать...