Loading...
petkowwa avatar petkowwa 1 Точки

Задачи за C#

зад.1// Да се състави програма, която използва двумерен масив с елементи от тип decimal с размери N x N (N се въвежда от потребителя):

а) функция InitMatrix, която чете от файл наредени тройки числа на всеки ред, разделени от знака tab (\t), като първото е стойността на елемента на масива, а следващите две са неговите индекси. За онези елементи, за които няма стойности във файла, стойността на елемента на масива да е равен на -1.

б) функция PrintMatrix, която отпечатва матрицата ред по ред.

в) функция MultiplyElements, която намира произведението на елементите, които имат поне един четен индекс и са различни от нула.

г) функция CheckIdentity, която проверява дали матрицата е единична (дали всички елементи от главния диагонал са със стойност 1, а останалите са със стойност 0).

зад.2// Да се съставят функции, които намират n-тия член на редицата (n>0), която се образува по следното правило:

Ni = Ni-1 + 2*Ni-2 - 8*Ni-3, когато i>3

N1 = 4/3; N2 = 3; N3 = 4;

а) да се състави интеративен вариант на тази функция.

б) да се състави рекурсивен вариант на тази функция.

Тагове:
0
Programming Basics
willystyle avatar willystyle 2472 Точки
Best Answer

стори ми се интересна 2 задача, предлагам ти решение на JS понеже не ми се настройва на вълна C#, ако все пак не успееш да си ги транспилираш пиши.
 

// iteractively
function solve(n) {
    let n1 = 4 / 3;
    let n2 = 3;
    let n3 = 4;
    if (n === 1) return n1;
    if (n === 2) return n2;
    if (n === 3) return n3;
    let nth = 0;
    for (let i = 4; i <= n; i++) {
        nth = n3 + 2 * n2 - 8 * n1;
        n1 = n2;
        n2 = n3;
        n3 = nth;
    }
    return nth;
}

// recursevely
function solveRecursevely(n) {
    if (n === 1) return 4 / 3;
    if (n === 2) return 3;
    if (n === 3) return 3;
    return solveRecursevely(n - 1) + 2 * solveRecursevely(n - 2) - 8 * solveRecursevely(n - 3);
}

// recursevely with memoization
let solveMemoization = (function () {
    let memo = [NaN, 4/3, 3, 4];
    let solve = function (n) {
        let result = memo[n];
        if (typeof result !== 'number') {
            result = solve(n - 1) + 2 * solve(n - 2) - 8 * solve(n - 3);
            memo[n] = result;
        }
        return result;
    };
    return solve;
}());

// test with 13-th member
console.log(solve(13));
console.log(solveRecursevely(13));
console.log(solveMemoization(13));

btw, рекурсивното решение в случая не е ефективно, за да стане, има нужда от мемоизация (да не пресмята, вече пресметнати членове), но това е ако ви го искат, иначе малко усложнява рекурсията.

PS Ето го и на C# https://pastebin.com/vMtZ9pgM

0
08/01/2020 22:57:21
petkowwa avatar petkowwa 1 Точки

Много благодаря!

1
ThomasMore avatar ThomasMore -19 Точки

You will be stunned at the total you can achieve on the off chance that you give an undistracted 60 an hour and a half to something. Keep focused. This is a basic making standard, yet one that bears emphasizing here: make the body out of a given part or locale and a brief timeframe later come back to the presentations.

By: https://articleoftheweek.com/

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