Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 02.03.2017, 08:23   #1 (permalink)
Кристина1998
Новичок
 
Регистрация: 26.02.2017
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Объясните строки кода

#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, 08:23
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вот подборка тем которые успешно обсуждаются

Спроектировать преобразователь кода
Знак абзаца без кода
Помощь в исправлении кода на С#
Создание штрих кода
Комментирование кода

Старый 02.03.2017, 09:05   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

слушаю, объясняйте...
AlexZir вне форума   Ответить с цитированием
Старый 02.03.2017, 19:30   #3 (permalink)
Кристина1998
Новичок
 
Регистрация: 26.02.2017
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
слушаю, объясняйте...
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;
}
Миниатюры
jeepipk0p0s.jpg  
Кристина1998 вне форума   Ответить с цитированием
Старый 02.03.2017, 20:16   #4 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Вы и сами все прекрасно понимаете, зачем что-то объяснять
AlexZir вне форума   Ответить с цитированием
Старый 02.03.2017, 20:43   #5 (permalink)
Кристина1998
Новичок
 
Регистрация: 26.02.2017
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
Вы и сами все прекрасно понимаете, зачем что-то объяснять
Нет,я не понимаю это: for (int i = 0; i < random; i++)
и return num % 2;
и тут for (int i = 0; i < 30; i++)
Кристина1998 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 02.03.2017, 23:10   #6 (permalink)
Николай_С
Радиоинженер
 
Аватар для Николай_С
 
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,273
Записей в дневнике: 7
Сказал(а) спасибо: 291
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
По умолчанию

Цитата:
Сообщение от Кристина1998 Посмотреть сообщение
//объявляем статическую переменную числа, которая в теле функции не будет изменяться
Чет я озадачен...
А у каждого числа имеется переменная? А почему она не будет изменяться? Она же переменная...

Почитайте конструкцию оператора цикла For для Си и всё поймете.
Николай_С вне форума   Ответить с цитированием
Старый 03.03.2017, 09:27   #7 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Цитата:
Сообщение от Кристина1998 Посмотреть сообщение
for (int i = 0; i < random; i++)
Цикл от 0 до текущего случайного числа

Цитата:
Сообщение от Кристина1998 Посмотреть сообщение
return num % 2
стандартный оператор, возвращающий значение функции

Цитата:
Сообщение от Кристина1998 Посмотреть сообщение
for (int i = 0; i < 30; i++)
цикл от 0 до 29
AlexZir вне форума   Ответить с цитированием
Старый 08.01.2018, 15:27   #8 (permalink)
alex_kireev
Новичок
 
Регистрация: 07.01.2018
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Хоть я и не от мира сего, но позвольте дать ВАМ ещё один совет.

Р. Лафор "Объектно-ориентированное программирование в С++"
Почитайте и ВЫ найдёте ответы на свои вопросы.
alex_kireev вне форума   Ответить с цитированием
Старый 14.01.2018, 19:24   #9 (permalink)
Olej
Member
 
Аватар для Olej
 
Регистрация: 10.01.2018
Сообщений: 36
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от alex_kireev Посмотреть сообщение
Хоть я и не от мира сего, но позвольте дать ВАМ ещё один совет.
Зачем писать такую вот херню - то ли рекламу, то ли не умную саморекламу?
Olej вне форума   Ответить с цитированием
Старый 14.01.2018, 19:31   #10 (permalink)
Olej
Member
 
Аватар для Olej
 
Регистрация: 10.01.2018
Сообщений: 36
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Кристина1998 Посмотреть сообщение
static unsigned int num = 0; //объявляем статическую переменную числа, которая в теле функции не будет изменяться
num++; //увеличиваем значение
return num % 2; //возвращаем число и ...
А вот это место достаточно интересное:
Код:
int fun () { 
   static unsigned int num = 0; 
   num++; 
   return num % 2; 
}
- num как-раз внутри функции будет изменяться...
- будет инкрементироваться, сохраняя своё значение между последовательными вызовами fun() - именно из-за объявления static
- а возвращаемое fun() значение будет чередоваться через каждые 2 последовательных вызова ... примерно вот так: 1, 0, 1, 0, 1, 0 ... и так далее.
Olej вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:42.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.