пятница, 27 января 2012 г.

решить задачу методом крамера бесплатно

метод Крамера Это способ решения квадратных систем линейных алгебраических уравнений с ненулевым определителем основной матрицы.

среда, 12 января 2011 г.

последовательность 2,4,7,11,16,22

встретилась несложная задачка в сети, нужно для данной последовательности найти следующее число

давайте посмотрим чем же отличаются члены последовательности друг от друга

второй от первого 4-2 = 2
третий от второго 7-4 = 3
четвертый от третьего 11-7=4
пятый от четвертого 16-11=5
шестой от пятого 22-16=6

и что же мы видим? разница между числами увеличивается на 1!

т.е. следующее после 22 число должно быть увеличено на 7! и это 29! ура!

найти сумму цифр числа

когда стоит такая задача следует наверное уточнить в какой системе счисления оно представлено,
например число 15 в двоичной системе представляет собой 1111, и соотвтественно складывать нужно 1+1+1+1 = 4, что согласитесь не одно и тоже если бы мы сладывали 1+5=6 в дестятичной...

но так как наверняка(!) подразумеваеся десятичная система, к которой мы так все привыкли, то задание сводится к разделению числа на разряды, как то

156 = 1 + 5 + 6

как же нам получить эти 1, 5 и 6?

оказывается - очень просто! незабываем о том что система счисления по основанию 10, а это значит, что если поделить наше 156 на 10 мы получим целую часть и остаток от деления

156 делим на десять - целая часть 15, а остаток 6 (вот оно наше первое число!! только с конца)
теперь делим целую часть снова на 10 (основание системы счисления)
15 делим на десять - целая часть 1, а остаток 5 (вот оно наше второе число!!)
и так продолжаем делить пока есть что делить
1 делим на десять - целая часть... а ее уже нету! т.е. 0 (для нас это сигнал, что нужно заканчивать деление), а остаток 1 (наше последнее число!!!)

осталось лишь все сложижить 6 +  5 + 1 и получить искомую сумму 12

ну а теперь несколько слов, о том как это реализовать в том или ином языке программирования.
в каждом языке на сколько мне известно существуют специальные операторы для нахождения целого от деления или остатка (так называемое деление по модулю)

ну скажем С\С++

int n = 156;
int ostatok = 156 % 10; // тут будет 6
n = n / 10; //тут будет 15

ну и вот такой кусочек кода подсчитает сумму

int summa = 0;
int n = 156;
while (n)
{
summa += n % 10;
n = n / 10;
}
printf("summa: %d\n", summa); //вывод на экран

или как это сделать на javascript (js)

function getSum(var n)
{
     var sum = 0;
     while (n)
     {
           sum += n % 10;
           n = Math.floor(n / 10); //берем целую часть от деления, т.е .округляем до меньшего
     }

     return sum;
}

мы о чем то забыли?..

вторник, 11 января 2011 г.

как поменять местами два элемента массива

Существует далеко не один способ поменять значения двух переменных.
Остановимся на самом простом. При этом в обмене будет участвовать третья
переменная. Вот как это будет выглядеть на С\С++:

int a = 10;
int b = 20;

пусть нужно поменять значения переменных a и b, для этого введем новую переменную
такого же типа (например как у нас int, т.е. целое)

int temp;

это сокращенное от английского temporary - т.е временное
ну а теперь магия:

temp = a;
a = b;
b = temp;

после этого значения этих переменных поменялись местами.

Теперь по сути вопроса: как поменять местами два элемента массива.
Отметим, что такая формулировка немного некорректна, местами то мы не меняем
сами элементы )), а только их значения. Итак допустим a[i] поменять с a[j].
Ничего нового, используем для этого все ту же третью переменную посредник:

int a[N];
...

где-то в программе наверняка данным в массиве присваиваются значения, опускаем этот
момент

...

int temp;

temp = a[i];
a[i] = a[j];
a[j] = temp;

все то же самое