Грешка в условието на 3-та задача от Compare Char Arrays


0

Здравейте колеги, 

според мен има грешка в условието на задачата. Не се казва ако двата масива имат равен по брой, но различни по char елементи какъв output да изкараме ... На тестовете ми дава 70/100




Отговори



1

не е нужно да се казва - правилен :) 

hint


от kiko81 (1655 точки)


0

не се сещам къде може да е грешката, че ми дава 90/100. Пробвах и някой от стринговете да е празен, и това не е... Единствено се сещам числа да има в стринга, ама тогава вече няма да е коректно по условие

http://pastebin.com/UUchURmm


от Boriow (287 точки)


0

Лексикографското сравенение не е сравнение по дължина.

Примери:

"asdf" < "q"

"hello" < "hello42"

"a" < "b"


от cuki (7696 точки)


0
а инпут стринга може ли да съдържа числа?

от Boriow (287 точки)

0

@cuki , къде ми е грешката?

решение на 3-та задача


от marks (354 точки)



0
И аз мислех, че има грешка, но направих проверка с вход foo и food и видях, че грешката е при мен, виж дали няма да помогне и на теб :)

от Boriow (287 точки)


0
// Copy Codeusing System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _03CompareCharArrays { class Program { static void Main(string[] args) { string stringOne = Console.ReadLine(); char [] arrayOne = stringOne.ToCharArray(); string stringTwo = Console.ReadLine(); char[] arrayTwo = stringTwo.ToCharArray(); if (arrayOne.Length>arrayTwo.Length) { Console.WriteLine(">"); } else if (arrayOne.Length<arrayTwo.Length) { Console.WriteLine("<"); } else { for (int i = 0; i < arrayOne.Length; i++) { if (arrayOne[i] < arrayTwo[i]) { Console.WriteLine("<"); break; } if (arrayOne[i] > arrayTwo[i]) { Console.WriteLine(">"); break; } else if (arrayOne[i]==arrayTwo[i]) { Console.WriteLine("="); break; } } } } } } Snippet Here

Здравейте, исках да я реша задачата без булеви променливи, ама явно пропускам нещо много съществено и вече забих. Пробвах всякакви инпути и във Visual Studio-то работи, както трябва. В Bg coder, естествено, 70/100. :о Виждате ли нещо, което аз не виждам (като пропуснете това, че е яко грозно и изтормозено).


от SilvK (25 точки)


0

 Аз условието го разбирам единствено да ги сравним по азбучен ред. Това не би трябвало да ти е вярно, защото сравняваш думи по азбучен ред, а по твоята логика "Азбука" > "Бъз" :

 if (arrayOne.Length>arrayTwo.Length)
            {
                Console.WriteLine(">");
            }
            else if (arrayOne.Length<arrayTwo.Length)
            {
                Console.WriteLine("<");
            }

 

от Boriow (287 точки)


0

Това е моето решение - дава 100/100 :)

namespace CompareCharArrays { using System; public class CompareCharArrays { public static void Main() { var firstArr = Console.ReadLine().ToCharArray(); var secondArr = Console.ReadLine().ToCharArray(); bool areEqual = true; if (firstArr.Length < secondArr.Length) { for (int i = 0; i < firstArr.Length; i++) { if (firstArr[i] < secondArr[i]) { areEqual = false; Console.WriteLine("<"); break; } else if (firstArr[i] > secondArr[i]) { areEqual = false; Console.WriteLine(">"); break; } } if (areEqual) { Console.WriteLine("<"); } } else if (firstArr.Length > secondArr.Length) { for (int i = 0; i < secondArr.Length; i++) { if (firstArr[i] < secondArr[i]) { areEqual = false; Console.WriteLine("<"); break; } else if (firstArr[i] > secondArr[i]) { areEqual = false; Console.WriteLine(">"); break; } } if (areEqual) { Console.WriteLine(">"); } } else { for (int i = 0; i < firstArr.Length; i++) { if (firstArr[i] < secondArr[i]) { areEqual = false; Console.WriteLine("<"); break; } else if (firstArr[i] > secondArr[i]) { areEqual = false; Console.WriteLine(">"); break; } } if (areEqual) { Console.WriteLine("="); } } } } }




2

Привет,

докато разбера точно какво е лексикографично ми отне време.

Но тук за 2 мин разбрах и веднага стана 100/100 :).


от Blagomira (60 точки)


0
Да, явно и на мен това ми е бил проблемът :D не знаех, че дума с главна буква е преди тази с малка, каквато и да е...

от Boriow (287 точки)