tag:blogger.com,1999:blog-27286609535428341612024-02-07T04:50:22.576+02:00РешеноСлава Украіні!Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.comBlogger99125tag:blogger.com,1999:blog-2728660953542834161.post-12825387387505330542012-04-12T11:13:00.001+03:002012-04-12T11:13:33.505+03:00дан текст. определить, является ли он правильной десятичной записью целого числа.<div dir="ltr" style="text-align: left;" trbidi="on">
определимся что есть "правильная запись десятичного числа"<br />
<br />
<br />
<ol style="text-align: left;">
<li>"1234" - да</li>
<li>"056" - нет - так принято записывать 8-ричные числа</li>
<li>"abc123" - нет - тут не только цифры</li>
<li>"123.45" - нет - есть запятая, а значит это дробное</li>
</ol>
<br />
<br />
думаю, для начала этого достаточно, хотя нужно было бы ещё проверять запись с + и -, а так же научный подход с мантиссой<br />
<br />
итак что надо сделать?<br />
<br />
1. определить что строка не начинается с "0"<br />
2. определить что в ней только цифры (отсеем дробные и строки с буквами)<br />
<br />
этого достаточно чтобы сказать, что это правильная запись десятичного числа<br />
<br />
char * s = "тут наша строка";<br />
<br />
if (s[0] != '0')<br />
{<br />
for (int i=0; i < strlen(s); i++)<br />
{<br />
bool error = false;<br />
if (!isdigit(s[i]))<br />
{<br />
error = true;<br />
break;<br />
}<br />
<br />
if (!error)<br />
{<br />
cout << "это правильная запись десятичного числа" << endl;<br />
}<br />
}<br />
}<br />
<br /></div>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-60648686047259265362012-04-12T10:44:00.001+03:002012-04-12T10:51:08.071+03:00как его увидеть?<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Часто при работе с массивами нам нужно видеть их содержимое, поэтому я рекомендую иметь под рукой функцию, которая выводит его содержимое на экран<br />
<br />
#define N 100<br />
<br />
int a[N];<br />
<br />
for (int i = 0; i < N; i++)<br />
{<br />
cout << "a[" << i << "]=" << a[i] << endl;<br />
}<br />
</div>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-5148570498126719492012-04-12T10:39:00.003+03:002012-04-12T10:47:20.288+03:00где взять массив?<div dir="ltr" style="text-align: left;" trbidi="on">
Часто решая типовые задачи с массивами, нам нужно постоянно вводить значения элементов. И это конечно напрягает, не говоря о том что мы тратим на это много времени. Поэтому я предлагаю использовать генератор случайных чисел для инициализации нашего массива.<br />
<br />
#define N 100 //число элементов в массиве<br />
#define M 10 //число больше которого не будет в нашем массиве<br />
<br />
int a[N];<br />
<br />
srand(time(0)); //инициализация генератора текущим временем, чтобы не было повторов<br />
<br />
for (int i = 0; i < N; i++)<br />
{<br />
a[i] = rand() % M;<br />
}</div>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-87973671438872801962012-04-12T10:34:00.001+03:002012-04-12T10:46:16.769+03:00найти номера первых двух рядом стоящих одинаковых элементов в массиве<div dir="ltr" style="text-align: left;" trbidi="on">
<ol style="text-align: left;">
<li><a href="http://resheno.blogspot.com/2012/04/blog-post_12.html">где взять массив?</a></li>
<li><a href="http://resheno.blogspot.com/2012/04/blog-post_9963.html">как его увидеть?</a></li>
<li>собственно решение</li>
</ol>
<div>
нужно сравнить i-й элемент с i+1-м, если они равны - значит решение найдено</div>
<div>
<br /></div>
<div>
int a[N];</div>
<div>
<br /></div>
<div>
for (int i = 0; i < N-1; i++)</div>
<div>
{</div>
<div>
if (a[i] == a[i+1])</div>
<div>
{<br />
cout << i << "-й и " << (i+1) << "-й элементы равны " << a[i] << endl;</div>
<div>
break;</div>
<div>
}</div>
<div>
}</div>
<div>
<br /></div>
<div>
<br /></div>
</div>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-40224118605318329992010-06-02T10:27:00.000+03:002010-06-02T10:27:24.073+03:00найти родственников<span class="Apple-tab-span" style="white-space: pre;"> </span>Задано конечное множество имен жителей некоего города,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>причем для каждого из жителей перечислены имена его детей.<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Жители X и Y называются родственниками ,если<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>a) либо X - ребенок Y<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>b) либо Y - ребенок X<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>c) либо существует некий Z такой, что X - родственник Z, а Z - родственник Y.<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Перечислить все пары жителей города,которые являются родственниками.<br />
<br />
<br />
<br />
Задача, как по мне, выше среднего уровня.<br />
<br />
Первая проблема которая перед нами стоит - это как задать начальные данные.<br />
Я долго думал на эту тему и пришел к выводу, что пользователю проще работать<br />
с именами, чем с индексами соотв. имени. Поэтому я не пошел стандартным путём<br />
( а это задание вектора имен, потом задание вектора векоторов + вектор булевых переменных для раскраски... - муть зеленая)<br />
<br />
Я использовал наборы из STL, т.е std::set<br />
<br />
Для описания связи я использовал std::pair<br />
<br />
Задав таким образом пары мы перезходим к следующей проблеме - нужно получить список уникальных имен, т.е. получить набор всех жителей. С этим отлично справился контейнер std::set.<br />
<br />
Теперь нам нужно оценить каждого с каждым на предмет родства, это делать удобнее с std:vector - поэтому мы перегоняем данные из set в vector<br />
<br />
Ну и самое главное - определение родства. Используем рекурсию для обхода дерева (направленный граф) для получения родственников для заданного человека, а потом ищем в нем того с чем определяем родство....<br />
<br />
<br />
Полное решение будет стоит 250WMR. Обращайтесь.Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-1752328740871931532010-05-17T17:08:00.000+03:002010-05-17T17:08:00.835+03:00как поменять элементы массива местами cкак поменять элементы массива местами (Си)<br />
<br />
самый простой способ для понимания это представить себе переменную в виде стакана с водой<br />
<br />
итого мы имеем 2 стака с жидкостями которые нужно поменять местами (содержимое стакана)<br />
<br />
как бы вы сделали это в реальной жизни? так же и в программе! - посредством третьего стакана!<br />
<br />
<br />
int a = 10;<br />
int b = 20;<br />
int temp; //наш третий стакан - посредник<br />
<br />
temp = a; //перелили в третий стакан содержимое первого<br />
a = b; //первый у нас освободился? заполняем его содержимым второго<br />
b = temp; //второй освободился? заполняем его содержимым третьего (а там что?)<br />
<br />
вот и поменялись...Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com2tag:blogger.com,1999:blog-2728660953542834161.post-26748258112636690382010-05-17T14:53:00.000+03:002010-05-17T14:53:09.272+03:00javascript нахождение суммы цифр числаjavascript нахождение суммы цифр числа<br />
<br />
<pre class="my"><script>
var n = prompt ("number?", "1234")
var s = 0
while (n > 0)
{
s += n % 10
n = Math.floor(n/10)
}
alert("summa: " + s)
</script>
</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-91056534125490519452010-05-11T22:37:00.001+03:002010-05-11T22:37:29.894+03:00нерешенные еще проблемы<ul><li>распаковка rar файлов с русскими именами файлами в ubuntu 10.04</li>
</ul>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-71853406294237469522010-05-10T23:37:00.001+03:002010-05-10T23:41:52.402+03:00количество счастливых билетов<blockquote><div style="text-align: right;"><i>Кто возьмет билетов пачку, тот получит водокачку!</i></div></blockquote><br />
Нужно посчитать и вывести на экран количество "счастливых билетов"(к примеру: 111201, 333009 и так далее) <br />
<br />
Примечание : <br />
<br />
Счастливый билетик имеет вид XXXXXX.<br />
<br />
<pre class="my">var
a,b,c,d,e,f: integer;
g: double;
begin
g:=0;
for a:=0 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
for d:=0 to 9 do
for e:=0 to 9 do
for f:=0 to 9 do
if a+b+c=d+e+f then g:=g+1;
writeln(g);
end.
</pre><br />
PS: обычно я решаю сам, а этот пример подсмотрел - уж очень мне понравилась простота решения, единственное что я добавил - это g - переменная типа double, т.к. результат получается больше чем может представлять пременная типа int, ну и в оригинале было inc - пришлось сдеать g=g+1, ибо inc только для целочисленной математики, еще бы полагалось выводить знаки только до запятой (число то все равно целое), но это уже сами кому надо...Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com2tag:blogger.com,1999:blog-2728660953542834161.post-23931277575237060522010-05-10T12:48:00.001+03:002010-05-10T12:48:41.914+03:00вывести матрицу из файла с++вывести матрицу из файла с++<br />
<br />
часто встречаю подобные задачи, вот один из способов реализации<br />
<br />
отмечу только, что раз мы считываем матрицу из файла - то мы заранее<br />
не знаем ее размер, а раз так - то память под неё мы выделяем динамически<br />
с помощью оператора new (не забываем освобождать после использования)<br />
<br />
и нужно придумать в каком виде хранить матрицу<br />
<br />
создадим текстовый файл matrix.txt<br />
с таким содержанием<br />
<pre class="my">2 3
1 2 3
4 5 6
</pre><br />
в нем первая строка содержит два числа, <br />
первое - количество строк матрицы, второе кол-во столбцов<br />
<br />
<pre class="my">#include <stdio.h>
int main(int argc, char * argv[])
{
int n = 0;
int m = 0;
int **a;
//открываем файл
FILE * fp = fopen("matrix.txt", "r");
if (fp)
{
//читаем количество строк и столбцов
fscanf(fp, "%d %d", &n, &m);
//выделяем место
*a = new int(n);
for (int i = 0; i < n; i++) a[i] = new int(m);
//считываем данные из файла в матрицу
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
fscanf(fp, "%d", &a[i][j]);
}
}
//закрываем файл
fclose(fp);
}
//печать матрицы
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
//освобождение памяти
for (int i = 0; i < n; i++) delete a[i];
delete *a;
return 0;
}
</pre><br />
и вот вывод программы<br />
<br />
<pre class="my">1 2 3
4 5 6
</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-56921443204468925262010-05-10T12:12:00.002+03:002010-05-10T12:12:20.646+03:00перевод чисел из двоичной системы в текст<pre class="my">/* перевод чисел из двоичной системы в текст */
#include <stdio.h>
void main()
{
int n = 1234;
int i = 0;
int m[32];
printf("10: %d\n", n);
while (n > 0)
{
m[i++] = n & 1;
n = n >> 1;
}
printf(" 2: ");
for (; i > 0; i--)
{
printf("%d", m[i-1]);
}
printf("\n");
}
</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com3tag:blogger.com,1999:blog-2728660953542834161.post-76056570884558442522010-05-10T11:34:00.002+03:002010-05-10T11:34:32.925+03:00массив состоит из 20 целых положительных и отрицательных чисел. выведите на экран сначала отрицательные, а затем положительные числа.<pre class="my">/* массив состоит из 20 целых положительных и отрицательных чисел.
выведите на экран сначала отрицательные,
а затем положительные числа. */
#include <stdio.h>
void main()
{
int m[] = {1, -2, 3, 4, 5, 6, 7, 8, -9, 10, 11, -12, 13, 14, -15, 16, 17, -18, 19, 20};
int i;
printf("отрицательные: ");
for (i = 0; i < 20; i++)
if (m[i] < 0)
printf("%d ", m[i]);
printf("\n");
printf("положительные: ");
for (i = 0; i < 20; i++)
if (m[i] > 0)
printf("%d ", m[i]);
printf("\n");
}
</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-81259604320533848022010-05-07T16:26:00.002+03:002010-05-07T16:26:57.146+03:00определить радиус и координаты центра окружности проходящей через заданные три точки<div style="text-align: center;"><i>в процессе...</i></div>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-85628400789064928702010-05-06T18:32:00.000+03:002010-05-06T18:32:43.969+03:00найти сумму цифр в числе используя рекурсивную подпрограммудля простоты будем считать что числа только натуральные<br />
<br />
<pre class="my">function fun(x:integer; summa: integer) : integer;
var
d, m: integer;
begin
m := x mod 10;
d := x div 10;
if x > 0
then fun := fun(d, summa + m)
else fun := summa + m;
end;
begin
writeln('cумма цифр = ', fun(1234, 0));
end.
</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-64288856854874332332010-04-28T11:28:00.000+03:002010-04-28T11:28:24.625+03:00Нахождение корня функции.Здесь описан метод половинного деления (дитохомии?). Суть проста. Есть функция f(x), есть интервал [a,b], есть условие, что на концах промежутка функция имеет разный знак: f(a)*f(b)<0. Требуется найти с заданной точностью eps корень этой функции. Поступаем так: выбираем середину отрезка [a,b]. Если в середине функция имеет тот же знак что и слева, то принимаем середину за новую левую границу, в противном случае - за правую. Повторяем до тех пор, пока отрезок не станет меньше eps. В данном примере в качестве функции берем синус, а отрезок - [3,4]. Таким образом мы должны найти число пи.<br />
<br />
<pre class="my">function f(x:real):real;
begin
f:=sin(x);
end;
const MaxSteps=200;
var a0,b0,a,b,eps,fa,fb,t,ft:real;
step,sa,sb:integer;
begin
writeln('Нахождение корней функции методом половинного деления:');
a0:=3; {writeln(' Input a0: ');readln(a0);}
b0:=4; {writeln(' Input b0: ');readln(b0);}
eps:=0.0000001; {writeln(' Input eps: ');readln(eps);}
fa:=f(a0); fb:=f(b0);
if (fa*fb>0) then
begin
writeln(' На заданном промежутке корней нет.');
halt;
end;
a:=a0; b:=b0;
step:=0; t:=a; ft:=fa;
while (abs(b-a)>eps) and (step<MaxSteps) do
begin
inc(step);
t:=(a+b)/2;
ft:=f(t);
if (fa*ft>0) then
begin
fa:=ft;
a:=t;
end
else
b:=t;
writeln('step:',step:4,' t=',t,' f(t)=',ft);
end;
if (step>MaxSteps)
then writeln('Отсутствие сходимости. Уточните промежуток.')
else writeln('Найден корень с заданной точностью.');
end.</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-17924556090255110392010-04-28T11:21:00.003+03:002010-04-28T11:22:11.198+03:00нахождения корней уравнения методом половинного деления<pre class="my"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif; font-size: 13px;"></span>
<pre class="de1">PROGRAM KORNI<span class="sy4">;</span>
VAR A,B,PREC<span class="sy4">:</span>REAL<span class="sy4">;</span>
FUNCTION F<span class="br0">(</span>X<span class="sy4">:</span>REAL<span class="br0">)</span><span class="sy4">:</span>REAL<span class="sy4">;</span>
BEGIN
F<span class="sy4">:</span><span class="sy1">=</span>X<span class="sy2">*</span>X<span class="sy2">-</span>3<span class="sy2">*</span>X<span class="sy2">+</span>2
END<span class="sy4">;</span>
FUNCTION KORENJ<span class="br0">(</span>A,B,PREC<span class="sy4">:</span>REAL<span class="br0">)</span><span class="sy4">:</span>REAL<span class="sy4">;</span>
VAR X,Y,Z<span class="sy4">:</span>REAL<span class="sy4">;</span>
BEGIN
IF ABS<span class="br0">(</span>A<span class="sy2">-</span>B<span class="br0">)<</span>PREC THEN KORENJ<span class="sy4">:</span><span class="sy1">=</span><span class="br0">(</span>A<span class="sy2">+</span>B<span class="br0">)</span><span class="sy2">/</span>2
ELSE BEGIN
X<span class="sy4">:</span><span class="sy1">=</span>F<span class="br0">(</span>A<span class="br0">)</span><span class="sy4">;</span>
Y<span class="sy4">:</span><span class="sy1">=</span>F<span class="br0">(</span><span class="br0">(</span>A<span class="sy2">+</span>B<span class="br0">)</span><span class="sy2">/</span>2<span class="br0">)</span><span class="sy4">;</span>
Z<span class="sy4">:</span><span class="sy1">=</span>F<span class="br0">(</span>B<span class="br0">)</span><span class="sy4">;</span>
IF X<span class="sy2">*</span>Y<span class="sy1"><</span>0 THEN KORENJ<span class="sy4">:</span><span class="sy1">=</span>KORENJ<span class="br0">(</span>A,<span class="br0">(</span>A<span class="sy2">+</span>B<span class="br0">)</span><span class="sy2">/</span>2,PREC<span class="br0">)</span>
ELSE KORENJ<span class="sy4">:</span><span class="sy1">=</span>KORENJ<span class="br0">(</span><span class="br0">(</span>A<span class="sy2">+</span>B<span class="br0">)</span><span class="sy2">/</span>2,B,PREC<span class="br0">)</span>
END
END<span class="sy4">;</span>
BEGIN
READLN <span class="br0">(</span>A,B,PREC<span class="br0">)</span><span class="sy4">;</span>
WRITELN <span class="br0">(</span><span class="st0">'X='</span>,KORENJ<span class="br0">(</span>A,B,PREC<span class="br0">)</span><span class="br0">)</span>
END.</pre></pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-3099654678278114252010-04-27T10:03:00.002+03:002010-04-27T10:03:22.044+03:00определитель матрицыи снова определитель матрицы<br />
<br />
<br />
<pre class="my">#include <stdio.h>
#include <stdlib.h>
#include <time.h>
const int n = 4;
void print(int**, int);
void clear(int**, int**, int, int, int);
long Determinant(int**, int);
void main()
{
<span class="Apple-tab-span" style="white-space: pre;"> </span>time_t t;
<span class="Apple-tab-span" style="white-space: pre;"> </span>srand(time(&t));
<span class="Apple-tab-span" style="white-space: pre;"> </span>int** a = new int*[n];
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int i = 0; i < n; i++) a[i] = new int[n];
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int i = 0; i < n; i++)
<span class="Apple-tab-span" style="white-space: pre;"> </span>{
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int j = 0; j < n; j ++)
<span class="Apple-tab-span" style="white-space: pre;"> </span>{
<span class="Apple-tab-span" style="white-space: pre;"> </span>a[i][j] = rand() % 10;
<span class="Apple-tab-span" style="white-space: pre;"> </span>}
<span class="Apple-tab-span" style="white-space: pre;"> </span>}
<span class="Apple-tab-span" style="white-space: pre;"> </span>print(a, n);
<span class="Apple-tab-span" style="white-space: pre;"> </span>long dt = Determinant(a, n);
<span class="Apple-tab-span" style="white-space: pre;"> </span>printf("\nDeterminant = %d\n", dt);
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int i = 0; i < n; i++) delete[] a[i];
<span class="Apple-tab-span" style="white-space: pre;"> </span>delete[] a;
}
void print(int** a, int n)
{
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int i = 0; i < n; i++)
<span class="Apple-tab-span" style="white-space: pre;"> </span>{
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int j = 0; j < n; j++)
<span class="Apple-tab-span" style="white-space: pre;"> </span>{
<span class="Apple-tab-span" style="white-space: pre;"> </span>printf("%d\t", a[i][j]);
<span class="Apple-tab-span" style="white-space: pre;"> </span>}
<span class="Apple-tab-span" style="white-space: pre;"> </span>printf("\n");
<span class="Apple-tab-span" style="white-space: pre;"> </span>}
}
void clear(int** a, int** b, int m, int i, int j)
{
<span class="Apple-tab-span" style="white-space: pre;"> </span>int di = 0;
<span class="Apple-tab-span" style="white-space: pre;"> </span>int dj;
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int ki = 0; ki < m - 1; ki++)
<span class="Apple-tab-span" style="white-space: pre;"> </span>{
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (ki == i)
<span class="Apple-tab-span" style="white-space: pre;"> </span>di = 1;
<span class="Apple-tab-span" style="white-space: pre;"> </span>dj = 0;
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int kj = 0; kj < m - 1; kj++)
<span class="Apple-tab-span" style="white-space: pre;"> </span>{
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (kj == j)
<span class="Apple-tab-span" style="white-space: pre;"> </span>dj = 1;
<span class="Apple-tab-span" style="white-space: pre;"> </span>b[ki][kj] = a[ki + di][kj + dj];
<span class="Apple-tab-span" style="white-space: pre;"> </span>}
<span class="Apple-tab-span" style="white-space: pre;"> </span>}
}
long Determinant(int** a, int n)
{
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (n == 1)
<span class="Apple-tab-span" style="white-space: pre;"> </span>return a[0][0];
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (n == 2)
<span class="Apple-tab-span" style="white-space: pre;"> </span>return a[0][0] * a[1][1] - a[0][1] * a[1][0];
<span class="Apple-tab-span" style="white-space: pre;"> </span>int** b = new int*[n];
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int i = 0; i < n; i++) b[i] = new int[n];
<span class="Apple-tab-span" style="white-space: pre;"> </span>int d = 0;
<span class="Apple-tab-span" style="white-space: pre;"> </span>int k = 1;
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int i = 0; i < n; i++)
<span class="Apple-tab-span" style="white-space: pre;"> </span>{
<span class="Apple-tab-span" style="white-space: pre;"> </span>clear(a, b, n, i, 0);
<span class="Apple-tab-span" style="white-space: pre;"> </span>d += k * a[i][0] * Determinant(b, n - 1);
<span class="Apple-tab-span" style="white-space: pre;"> </span>k--;
<span class="Apple-tab-span" style="white-space: pre;"> </span>}
<span class="Apple-tab-span" style="white-space: pre;"> </span>for (int i = 0; i < n; i++) delete[] b[i];
<span class="Apple-tab-span" style="white-space: pre;"> </span>delete[] b;
<span class="Apple-tab-span" style="white-space: pre;"> </span>return d;
}
</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-25875573858083283442010-04-26T17:12:00.002+03:002010-04-27T09:31:22.694+03:00борьба с банерами от порно-информермеровКонечно никто не хочет себе такие крас<b>О</b>ты, но когда они появляются, то хочется по скорее от них избавиться...<br />
<br />
Наши Касперские и др. не спят и уже придумали генераторы кодов для снятия блокировок.<br />
<br />
Здесь представлены генераторы кодов от разных производителей:<br />
<br />
<ul><li><a href="http://support.kaspersky.ru/viruses/deblocker">от Касперского</a></li>
<li><a href="http://www.drweb.com/unlocker/index">от д. Веба</a></li>
<li><a href="http://virusinfo.info/deblocker/">от Вирусинфо</a></li>
</ul>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-682620460918527802010-04-12T11:33:00.001+03:002010-04-15T23:00:58.674+03:00полезные скрипты для bashзамена переводов строк на запятую<br />
$ awk '{printf $0","}' input.txt > output.txt<br />
<br />
размер директории (заметьте - новый формат в системе CИ)<br />
$ du --siВиктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-29381360510617506082010-03-26T15:54:00.000+02:002010-03-26T15:54:39.250+02:00среднее арифметическое введенных чиселСоздайте сценарий, который будет выводить среднее арифметиское из неограниченного числа, введенных пользователем значений. Ввод будет продолжаться до тех пор пока не будет введен 0. После ввода 0 программа будет выводить на экран все введенные числа и подститанное значение средного арифметического из этих чисел.<br />
<br />
<pre class="my">var summa = 0;
var n = 0;
while (true)
{
var x = prompt('input x:');
if (x == 0)
break;
summa += parseInt(x);
document.write(x);
document.write("<br>");
n++;
}
if (n != 0)
{
document.write("----<br>avg=");
document.write(summa/n);
}
</pre><br />
<a href="http://letitbit.net/download/4457.4e7ee9edcb5d45b8b65fa53dd/avg.html.html">тут можно качнуть скипт</a>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com1tag:blogger.com,1999:blog-2728660953542834161.post-32026249821348926112009-12-24T15:43:00.003+02:002009-12-24T15:44:49.356+02:00вывести квадраты и кубы 10 чисел следущей последовательности: 1, 2, 4, 7, 11, 16...<pre class="my">{вывести квадраты и кубы 10 чисел следущей последовательности: 1, 2, 4, 7, 11, 16...}
const
N = 10;
var
i: integer;
m: integer;
begin
m:=1;
for i:=1 to N do begin
writeln(m:3, '=> ^2=', m*m, ', ^3=', m*m*m);
m:=m+i;
end;
writeln;
end.</pre><br />
вывод<br />
<pre class="my">1=> ^2=1, ^3=1
2=> ^2=4, ^3=8
4=> ^2=16, ^3=64
7=> ^2=49, ^3=343
11=> ^2=121, ^3=1331
16=> ^2=256, ^3=4096
22=> ^2=484, ^3=10648
29=> ^2=841, ^3=24389
37=> ^2=1369, ^3=50653
46=> ^2=2116, ^3=97336</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com2tag:blogger.com,1999:blog-2728660953542834161.post-41508618110800567702009-12-24T15:27:00.004+02:002010-05-17T23:51:43.661+03:00выделить множество чисел кратных заданому<pre class="my">{Из множества целых чисел 1..20 выделить множество чисел, делящихся на 2 или на 3 без остатка}
const
N = 20;
var
a: array [1..N] of integer;
i: integer;
begin
writeln('инициализация массива случайными числами');
for i:=1 to N do a[i]:=random(9)+1;
writeln('вывод начальных данных');
for i:=1 to N do write(a[i]:2);
writeln;
writeln('числа кратные 2: ');
for i:=1 to N do if (a[i] mod 2) = 0 then write(a[i]:2);
writeln;
writeln('числа кратные 3: ');
for i:=1 to N do if (a[i] mod 3) = 0 then write(a[i]:2);
writeln;
writeln('числа кратные 2 и 3: ');
for i:=1 to N do if ((a[i] mod 2) = 0) and ((a[i] mod 3 = 0)) then write(a[i]:3);
writeln;
end.</pre><br />
вывод:<br />
<pre class="my">инициализация массива случайными числами
вывод начальных данных
80 90 85 12 95 45 66 39 3 80 66 91 94 42 27 95 25 25 78 26
числа кратные 2:
80 90 12 66 80 66 94 42 78 26
числа кратные 3:
90 12 45 66 39 3 66 42 27 78
числа кратные 2 и 3:
90 12 66 66 42 78</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-9948980369681320972009-12-21T22:45:00.000+02:002009-12-21T22:45:00.155+02:00посчитать суммы индексов отрицательных элементов массивадан массив g1, ..g10 . <br />
Построить новый массив, содержащий номера отрицательных g[ i ] . Вычислить сумму этих номеров.<br />
<br />
<pre class="my">const
N = 10;
var
i: integer;
g: array [1..N] of integer;
b: array [1..N] of integer;
count: integer;
summa: integer;
begin
writeln('инициализируем массив случайными числами от -50 до 50');
for i:=1 to N do g[i]:=random(100)-50;
writeln('начальный массив');
for i:=1 to N do write(g[i]:4);
writeln;
count:=0;
for i:=1 to N do if g[i] < 0 then begin
inc(count);
b[count]:=i;
end;
writeln('массив индексов элементов с отрицательными значениями');
for i:=1 to count do write(b[i]:3);
writeln;
summa:=0;
for i:=1 to count do summa:=summa+b[i];
writeln('сумма индексов отрицательных элеметов = ', summa);
end.</pre><br />
вывод:<br />
<pre class="my">инициализируем массив случайными числами от -50 до 50
начальный массив
-16 -19 -1 12 -3 40 49 -37 -12 10
массив индексов элементов с отрицательными значениями
1 2 3 5 8 9
сумма индексов отрицательных элеметов = 28</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-36383100336322774082009-12-21T22:11:00.000+02:002009-12-21T22:11:28.854+02:00сортировка методом вставки и пузырькаОтсортировать половину массива размером 20 методом вставок, а вторую половину – методом пузырьков.<br />
<br />
<pre class="my">#include <iostream>
#include <cstdlib>
using namespace std;
const int N = 20;
int main(int argc, char *argv[])
{
int a[20];
cout << "старт генератора случайных чисел" << endl;
srand(time(0));
cout << "заполняем массив случайными числами" << endl;
for (int i = 0; i < N; i++) a[i] = rand() % 100;
cout << "до сортировки" << endl;
for (int i = 0; i < N; i++) cout << a[i] << " ";
cout << endl;
cout << "метод вставки" << endl;
for (int i = 1; i < N/2; i++)
{
int j = i;
while (a[j] < a[j-1])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
j = j - 1;
}
}
cout << "метод пузырька" << endl;
for (int i = 0; i < N/2; i++)
{
for (int j = N/2; j < N - i - 1; j++)
{
if (a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
cout << "после после сортировки" << endl;
for (int i = 0; i < N; i++) cout << a[i] << " ";
cout << endl;
return 0;
}</pre><br />
вывод:<br />
<pre class="my">старт генератора случайных чисел
заполняем массив случайными числами
до сортировки
42 50 64 17 56 22 70 75 51 97 10 54 92 37 51 58 71 33 31 13
метод вставки
метод пузырька
после после сортировки
17 22 42 50 51 56 64 70 75 97 10 13 31 33 37 51 54 58 71 92
</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0tag:blogger.com,1999:blog-2728660953542834161.post-36685734588369486332009-12-19T10:31:00.003+02:002009-12-19T10:38:01.835+02:00количество делителейВот задание: Количество Делителей. Будем называть количество делителей числа т его красотой. Например, карсота числа 12=6. <br />
Требуется написать программу, которая по числу k(1<=k<=10^9) найдётчисло с максимальной красотой, не превышающее k. Вот напишите код на паскале если не сложно <br />
<pre class="my">function krasota(n: integer): integer;
var
i: integer;
k: integer;
begin
k:=0;
for i:=1 to n do begin
if (n mod i) = 0 then begin
inc(k);
end;
end;
krasota:=k;
end;
var
m: integer;
n: integer;
max_n: integer;
max_krasota: integer;
k: integer;
begin
write('считать до: ');
read(m);
max_n:=-1;
max_krasota:=0;
for n:=1 to m do begin
k:=krasota(n);
if k > max_krasota then begin
max_krasota:=k;
max_n:=n;
end;
end;
writeln('число с максимальной красотой ', max_n, ' = ', max_krasota);
end.</pre><br />
умышленно не написал от 1 до 10^9 - это будет очень долго считать, но просто чтобы можно было проверить правильность работы - вводим 10000<br />
<br />
вывод<br />
<pre class="my">искать до: 10000
число с максимальной красотой 7560 = 64</pre>Виктор Склярhttp://www.blogger.com/profile/04360406697702837282noreply@blogger.com0