Conditional Statements - 11*, 12* Problems


0

Такам. Опитвам да реша последните 2 задачки.

С 11, ето какво съм направил. Проблемът е, че програмата не се спира на съответното число, а влиза и вдруги switch-ове и става една...

----------11-та задача--------------

         

Линк

----------

12-та задача

----

Линк

------------

Проблемът, с който се сблъсквам за пореден път е, че масивът е извън обхват. Логиката, която смятам да приложа е:

a да се събере поотделно с всяко число докрая.

После (a+b) с всяко докрая. (a+b+c) с всяко докрая.  (a+b+c+d) c всяко докрая.

Не изглежда особено оптимално, но не се сещам за по-хитър вариант в момента.




Отговори



1

За задачите няма да мога да ти дам съвет, ама има едно нещо pastebin

много е удобно за набързо да линкнеш, а имаш и опция C# формат.

Имаш и github  , разбира се и други.


от Absend (777 точки)


0
В 12 задача мисля , че проблемът е в командата arr[ i + 1 ] . Да приемем че имаме масив с 8 елемента , цикълът for  обхожда от 0 до 7 ( Дължината на масива - 1) и когато цикълът се завърти със стойност 7 командата arr[i + 1 ] се опитва да достъпи  елемент с индекс 8 , но защото номерацията започва от 0 няма да има 8-ми елемент .

от Stiliqn_21 (0 точки)


0
На 12-та си сложил for (int i=0; i<=arr.Length-1; i++) и arr[i+1], от i<=arr.Length-1 изкарваш i = 4 и след това го събираш с 1 и се получава идндекс [5]...  последният индекс на int[] arr е [4], а не 5.

от ivo.rankov.7 (226 точки)


0

Да. И затова съм вкарал проверка:

if (arr[i+1] >= arr[arr.Length-1])
                    {
                       // arr[i + 1] = arr[arr.Length - 1];
                        break;
                    }

"//" съм го сложил, но мисля, че кода след него пак не караше програмата да работи, както искам.

 Би трябвало "Ако следващият елемент е по-голям или равен на последния, тогава просто да е равен на него и край."


от Bruno (921 точки)

1

            for (int i = 1; i < arr.Length; i++)
            {
                if (arr[0] + arr[i] == 0)
                {
                    Console.WriteLine("{0} + {1} = 0", arr[0], arr[i]);
                }
            }

Това тябва да ти свърши работа :)

линк  - решил съм я по този начин и работи


от ivo.rankov.7 (226 точки)