Arrays - More Exercise - Encrypt, Sort and Print Array
Здравейте,може ли малко помощ?
Не мога да разбера, този код защо не работи :
https://pastebin.pl/view/11d57e49
Благодаря предварително!
Здравейте,може ли малко помощ?
Не мога да разбера, този код защо не работи :
https://pastebin.pl/view/11d57e49
Благодаря предварително!
Може ли линк към условието?
В системата няма задача с това име,макар и че и аз съм я решавал и имам някакъв код..
https://pastebin.com/9tmDeEHV
using System;
namespace _1._Encrypt__Sort_and_Print_Array
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int[] nameNumbers = new int[n];
//int vowel = 0;
//int consonant = 0;
for (int i = 0; i < n; i++)
{
int sum = 0;
string name = Console.ReadLine();
int lenght = name.Length;
foreach (var element in name)
{
int vowel = 0;
int consonant = 0;
//if (element == 'a' || element == 'e' || element == 'o' || element == 'y' || element == 'u' || element == 'i')
if (element == 'a' ||
element == 'e' ||
element == 'o' ||
element == 'u' ||
element == 'i' ||
element == 'A' ||
element == 'E' ||
element == 'O' ||
element == 'U' ||
element == 'I'
)
{
vowel = element * lenght;
}
else
{
consonant = element / lenght;
}
sum += vowel + consonant;
}
nameNumbers[i] = sum;
}
int[] sortedNumbers = new int[n];
// SHORT VARIANT
Array.Sort(nameNumbers);
foreach (var num in nameNumbers)
{
Console.WriteLine(num);
}
// LONG VARIANT
for (int i = 0; i < n; i++)
{
int currentNumber = int.MaxValue;
int index = 0;
for (int j = 0; j < n; j++)
{
int num = nameNumbers[j];
if (num < currentNumber)
{
currentNumber = num;
index = j;
}
}
nameNumbers[index] = int.MaxValue;
sortedNumbers[i] = currentNumber;
}
foreach (var num in sortedNumbers)
{
Console.WriteLine(num);
}
}
}
}
Има няколко проблема в решението:
Колегата @Axiomatik вече е дал вариант на оправеното решение, но ето едно и от мен:
using System;
using System.Linq;
namespace Encrypt_Sort_and_Print_Array
{
internal static class Program
{
private static void Main()
{
var vowels = "aeouiAEOUI".ToCharArray();
var namesCount = int.Parse(Console.ReadLine());
var encoded = new int[namesCount];
for (var i = 0; i < namesCount; i++)
{
var name = Console.ReadLine().Trim();
var lenght = name.Length;
/* // with LINQ
encoded[i] = name.ToCharArray()
.Select(element => vowels.Contains(element)
? element * lenght
: element / lenght)
.Sum();*/
foreach (var element in name)
{
encoded[i] += vowels.Contains(element)
? element * lenght
: element / lenght;
}
}
Array.Sort(encoded);
Console.WriteLine(string.Join(Environment.NewLine, encoded));
}
}
}
Разбира се,извинявам се .
Това е задачата:
https://judge.softuni.bg/Contests/Practice/Index/1275#0
Благодаря!