Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2017, 07:26   #1
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию Объяснить строки кода

#include <stdio.h>
#include <iostream>
#include <ctime>


int
fun ()
{
static unsigned int num = 0;
num++;
return num % 2;
}

int
myrand ()
{
int random = rand () % RAND_MAX;
int mynum = 0;
for (int i = 0; i < random; i++)
{
mynum += fun ();
}
return mynum;
}

int
main ()
{
srand (time (NULL));
for (int i = 0; i < 30; i++)
printf ("%d\n", myrand ());
return 0;
}
Кристина1998 вне форума Ответить с цитированием
Старый 02.03.2017, 07:43   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Для начала, напиши что ты сама знаешь по строчкам кода.
При этом опиши не только "ключевые слова языка С++", а и в контексте программы ("зачем были применены").
ura_111 вне форума Ответить с цитированием
Старый 02.03.2017, 07:58   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А зачем "ей" это? Это уже не первая "ее" тема, где "она" находит код в инете и кидать сюда, чтоб записать построчно и потом пересказать преподу.
p51x вне форума Ответить с цитированием
Старый 02.03.2017, 21:48   #4
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А зачем "ей" это? Это уже не первая "ее" тема, где "она" находит код в инете и кидать сюда, чтоб записать построчно и потом пересказать преподу.
в каком смысле зачем?
НЕ все же сразу же супер программистами становятся
Я же не могу мыслить, как компьютер
И если , как вы выражаетесь , то можете просто игнорировать мои темы и смотреть другие. Я же не прошу помощи у вас!!!!!!!

Последний раз редактировалось Кристина1998; 02.03.2017 в 21:51.
Кристина1998 вне форума Ответить с цитированием
Старый 02.03.2017, 21:50   #5
Кристина1998
Форумчанин
 
Регистрация: 01.11.2016
Сообщений: 110
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Для начала, напиши что ты сама знаешь по строчкам кода.
При этом опиши не только "ключевые слова языка С++", а и в контексте программы ("зачем были применены").
static unsigned int num = 0; //объявляем статическую переменную числа, которая в теле функции не будет изменяться
num++; //увеличиваем значение
return num % 2; //возвращаем число и берем процент 2, т.к нужно только от 0 до 1 равномерно выводить?

int
myrand ()
{
int random = rand () % RAND_MAX; //выводим числа рандомна
int mynum = 0;
for (int i = 0; i < random; i++) // ...
{
mynum += fun ();
}
return mynum;
}
int
main ()
{
srand (time (NULL));
for (int i = 0; i < 30; i++)
printf ("%d\n", myrand ());
return 0;
}
Я вроде бы понимаю, как работает программа , но не могу обосновать с терминами
Изображения
Тип файла: jpg JEepipK0p0s.jpg (101.1 Кб, 119 просмотров)
Кристина1998 вне форума Ответить с цитированием
Старый 03.03.2017, 11:52   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Странно, ты пишешь: "не будет изменяться" (а в следующей строчке) " меняю num на единицу"?
Так может меняться или нет?
___________________________________ ______________
1) Ключевое слово "static" делает переменную вечную, - в том смысле, что создавший один раз переменная живёт в памяти компьютера до самого конца работы всей программы (а обычно жизнь переменной связана с её полем видимости - вышло выполнение программы за поле видимости переменно и переменная исчезла. Но это целая тема: "поле видимости переменных")... Такого же эффекта можно было добиться сделав её "глобальной":
Код:
unsigned int num = 0; 
int fun () 
{ 
num++; 
return num % 2; 
}
2) О ключевом слове "unsigned" почитай в интернете.
___________________________________ ____________________

3) Общепринятое название операции: "num % 2;" - "модуль из числа num по основанию 2-а" (выводит числа 0 или 1)...

Интересно, если для предыдущего выражения, интервал значение равно [0;1], то какой интервал значений будет выводить при такой записи:

"random = rand () % RAND_MAX; "?

Что это за запись?
rand() - генерация любого числа
% RAND_MAX - взятие модуля по основанию "RAND_MAX" (т.е., по сути дела, эта операция делает ограничения на выводимое значение и интервал выводимого значения находится в промежутке: [0; RAND_MAX-1]).

Вопрос: чему равна константа, хранимая в библиотечном файле С++, RAND_MAX?
(в любом поисковике в первых 5-ти ссылках ты легко эту информацию найдёшь).
___________________________________ _______________

4) Запись:
Код:
srand (time (NULL));
тоже относится к теме генерации случайных чисел.

А можно ли без этой строчки обойтись?
Можно!
А ну, попробуй (удали эту строчку) и запусти программу без неё.
Зачем она нужна - читай в интернете.
___________________________________ _______________

5) Функция "fun()", при каждом к ней обращении, возвращает конкретное число чередующей последовательности (можно сказать, что она работает как маятник или вибратор):

0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1 ,0,1,0....

а функция "myrand()" просто суммирует кусочки этой последовательности. При этом длина кусочка последовательности задаётся в "int random=...".
___________________________________ _______________

Я не понимаю, что тебе не понятно ещё?
Вроде остальное примитив и никакой сложности не вызывает...
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объяснить логику работы ассемблерного кода Abrokadawr Помощь студентам 6 10.10.2015 14:15
Объяснить кода shadow155 Visual C++ 1 19.06.2015 02:11
JavaScript выпадающее меню,объяснить часть кода Alina111 Помощь студентам 1 10.10.2014 15:47
объяснить поведение кода denis7656 JavaScript, Ajax 6 24.04.2012 23:15
Объяснить каждую строку кода!Очень нужно Kugen Общие вопросы Delphi 0 18.12.2010 17:40