Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
#1

Прокомментируйте, пожалуйста, код программы. - C++

05.02.2012, 11:53. Просмотров 490. Ответов 6
Метки нет (Все метки)

Доброго дня всем!
Перед Вами - 2 программы - 1 шифрует текст методом гаммирования, вторая - генератор простых чисел.
Если не трудно - помогите дать комментарий к некоторым блокам и переменным ))
1 архив - необходимо объяснить, что собой представляет переменная l и для чего она используется.
2 архив - необходимо объяснить блок:

C++
1
2
3
4
5
6
7
8
9
10
if (p!=q)
{
k=sqrt(p);
kk=k;
for (b=2;b<=kk;b++)
{
if (p%b==0)
{
i++;
break;
А конкретнее - для чего производится операция извлечения квадратного корня в алгоритме нахождения простых чисел(решето Эратосфена)
0
Вложения
Тип файла: rar 1.rar (348.4 Кб, 5 просмотров)
Тип файла: rar 2.rar (366.5 Кб, 6 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2012, 11:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прокомментируйте, пожалуйста, код программы. (C++):

Прокомментируйте код пожалуйста - C++
#include&lt;iostream.h&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;graphics.h&gt; class Point { int X,Y; public: ...

Прокомментируйте пожалуйста код - C++
Объясните пожалуйста как работает данный кусок кода: template &lt;typename T&gt; Deque &lt;T&gt; Deque&lt;T&gt;::operator + (const Deque&lt;T&gt; &amp;L){ ...

Прокомментируйте,пожалуйста, участки программы - C++
Здравствуйте! Кому не сложно, помогите, пожалуйста, прояснить некоторые части программы. Суть программы заключается в следующем -...

Написал тетрис. Прокомментируйте код пожалуйста ) - C++
Программа полностью готова. Все как в тетрисе работает. Немного мигает, не знаю как вывод массива сделать по другому. Прокомментируйте код...

Прокомментируйте пожалуйста код (класс String) - C++
Добрый день. У меня есть пользовательский класс String. Есть какие-то замечания по оформлению класса? Я стремлюсь к чистому коду. ...

Прокомментируйте, пожалуйста, код. Список - очередь - C++
//Список вида &quot;очередь&quot; #include &lt;iostream&gt; using namespace std; //объявляем структуру с данными struct numbers ...

6
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
06.02.2012, 12:46  [ТС] #2
Уточняю вопрос по 2 программе - Почему используется именно извлечение квадратного корня, а не что-то другое?
0
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
06.02.2012, 13:18 #3
код выложите сюда весь
0
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
06.02.2012, 15:39  [ТС] #4
Подсказка - сказали, что обычно перебираются числа как раз до квадратного корня.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <vcl.h>
#include <stdio.h>
#include <math.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const n=30;
int p,b,gen,i,kk,q,e,c;
float k;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
gen=0;
while (! gen)
{
i=0;
randomize();
p=128+random(127);
if (p!=q)
{
k=sqrt(p);
kk=k;
for (b=2;b<=kk;b++)
{
if (p%b==0)
{
i++;
break;
}
}
if (i==0)
{
Edit1->Text=p;
gen=1;
}
}
}
}
0
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
08.02.2012, 11:15  [ТС] #5
Ребят, неужели никто не в курсе?
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
08.02.2012, 11:26 #6
> Почему используется именно извлечение квадратного корня, а не что-то другое?

> решето Эратосфена

потому что перебирать вариантов больше, чем значение корня длины, не имеет смысла.
0
Deterokus
0 / 0 / 0
Регистрация: 26.01.2012
Сообщений: 7
08.02.2012, 16:59  [ТС] #7
Цитата Сообщение от villu Посмотреть сообщение

потому что перебирать вариантов больше, чем значение корня длины, не имеет смысла.
А чем именно это обосновывается? Что особенного именно в значении квадратного корня? Ведь не просто так взяли именно эту операцию, можно было ведь взять и корень 3 степени или логарифм.

Добавлено через 3 минуты
Нашёл ответ на вопрос.
Для нахождения всех простых чисел не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:
1.Выписать подряд все целые числа от двух до n (2, 3, 4, …, n).
2.Пусть переменная p изначально равна двум — первому простому числу.
3.Считая от p шагами по p, зачеркнуть в списке все числа от 2p до n кратные p (то есть числа 2p, 3p, 4p, …)
4.Найти первое не зачеркнутое число, большее чем p, и присвоить значению переменной p это число.
5.Повторять шаги 3 и 4 до тех пор, пока p не станет больше, чем n
Теперь все не зачеркнутые числа в списке — простые.
На практике, алгоритм можно несколько улучшить следующим образом. На шаге № 3, числа можно зачеркивать, начиная сразу с числа p^2, потому что все составные числа меньше его уже будут зачеркнуты к этому времени. И, соответственно, останавливать алгоритм можно, когда p^2 станет больше, чем n

Добавлено через 4 часа 45 минут
Всё так, или есть другие мнения?
0
08.02.2012, 16:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2012, 16:59
Привет! Вот еще темы с ответами:

Прокомментируйте пожалуйста - C++
Не до конца понимаю код программы. Прошу дать комментарии к коду. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;math.h&gt; using...

Прокомментируйте пожалуйста - C++
#include &quot;iostream&quot; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; void Yacoby(int** m, int* s, int it); int...

Прокомментируйте пожалуйста прогу - C++
#include &quot;iostream&quot; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; float f2(float x){ return x+3; ...

Прокомментируйте, пожалуйста рекурсию - C++
Нашел в сети код прохождения доски шахм. конем. разобраться не очень получилось, помогите пожалуйста!void chessknight(int k) { c++; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.