• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Объясните строки кода

Кристина1998

Ученик
Регистрация
26 Фев 2017
Сообщения
7
Реакции
0
Баллы
0
Объясните строки кода

#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;
}
 
слушаю, объясняйте...
 
слушаю, объясняйте...

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.webp
    JEepipK0p0s.webp
    52.1 KB · Просмотры: 127
Вы и сами все прекрасно понимаете, зачем что-то объяснять :)
 
//объявляем статическую переменную числа, которая в теле функции не будет изменяться
Чет я озадачен...
А у каждого числа имеется переменная? А почему она не будет изменяться? Она же переменная... ;)

Почитайте конструкцию оператора цикла For для Си и всё поймете.
 
for (int i = 0; i < random; i++)
Цикл от 0 до текущего случайного числа

стандартный оператор, возвращающий значение функции

for (int i = 0; i < 30; i++)
цикл от 0 до 29
 
Хоть я и не от мира сего, но позвольте дать ВАМ ещё один совет.

Р. Лафор "Объектно-ориентированное программирование в С++"
Почитайте и ВЫ найдёте ответы на свои вопросы.
 
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 ... и так далее.
 
Назад
Сверху