Loading...
fpetrov8906 avatar fpetrov8906 3 Точки

Arrays > 04. Grab and Go

Здравейте,

 

Judge ми дава само 57/100. Не мога да си открия грешката... 

 

Условие:
 

  1. Grab and Go 

Write a program, which receives an array of integers and an integer as input. Find the last occurrence of the integer in the given array and print the sum of all elements before the number.  

Example: if we receive the array 10 20 30 40 20 30 40 and we receive on the next line the integer 20 we have to print the sum the elements 10 20 30 40, which is 100. 

If no such number exists in the array – print “No occurrences were found!”. 

Input 

  • On the first line, you will receive the integer array 

  • On the next line, you will receive the number, which you have to search 

Output 

If such number exists in the array – just print the sum. 

Otherwise, print “No occurrences were found!” 

Constraints 

  • Only a single whitespace will be used for the separator. 

  • The number will be integer in the interval [-2147483648…2147483647] 

Examples 

Input 

Output 

1 3 5 7 12 2 3 5 12 

30 

 

Input 

Output 

1 2 3 4 5 6 7 8 9 10 

20 

No occurrences were found! 

 

 

кодът ми е:  https://pastebin.com/CBeYcSEr

Тагове:
0
Programming Fundamentals
Thedi avatar Thedi 200 Точки
Best Answer

Здравей.
Проблема ти е, че в условието е казано, че трябва да смяташ до последния момент в който видиш даденото число.
Пример:

[10, 20, 30, 40, 50, 10, 10, 20]

В този случай ако ти кажат, че стоп числото е 10 ти трябва да сумираш всичките до момента на последната десятка. В случая последната десятка се намира на индекс 6.

В твоя код ти бройш колко пъти си видял числото за стоп и ако го видиш за втори път спираш цикъла и изкарваш резултата и това е грешно според условието на задачата. 

Най лесния вариант за решаване на задачата е ако използваш Array.LastIndexOf() което ще ти върне последния индекс във който има даденото число или -1 ако това число го няма в масива. Ето нещата който трябва да подадеш в  Array.LastIndexOf(Променливата с масива, Елемента който се търси в масива)
Ето един пример:

int[] numbers = new[]{ 10, 20, 30, 40, 50, 10, 10, 20 };

Console.WriteLine(Array.LastIndexOf(numbers, 10)); //Ще ти принтира на конзолата 6 което е позицията на последната Десятка.

По този начин като намериш последния индекс можеш просто да направиш цикъл от началото на масива до този индекс и да сумираш всички числа.

Надявам се да съм бил полезен и ако имаш още въпроси питай свободно :)

0
13/02/2018 20:53:02
fpetrov8906 avatar fpetrov8906 3 Точки

Мерси, ще направя поправката след малко :)

 

0
kostadink2001 avatar kostadink2001 7 Точки

Предполагам не ти дава другите точки, защото излизаш от цикъла когато count стане 2, а никъде не е казано в условието, че ще имаш максимум две срещания на числото в масива(може да се среща 100 пъти). Аз съм я решавал по следния начин, първо намирам индекса на последното срещане на числото, което се търси и после обхождам масива до този индекс и намирам сумата, а ако не съм срещнал числото извеждам "No occurrences were found!".

Ето моето решение: https://pastebin.com/LnFW24vT

Дано да съм бил полезен! :)

0
13/02/2018 20:44:44
Ogmos avatar Ogmos 2 Точки

Решението дава  85 /100. Променливата "sum" трябва да е long, защото според условието: "The number will be integer in the interval [-2147483648…2147483647]" и когато 2147483647 го събереш дори с 1 int се превърта. Ето моето решение:

https://pastebin.com/CaKA5Sna.

1
09/10/2022 15:28:31
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.