Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
Splendid
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
#1

Как реализуются "неограниченные" циклы? - C++

23.02.2009, 11:49. Просмотров 2776. Ответов 14
Метки нет (Все метки)

Помогите, плиз!
У меня даны первые 31 члена последовательности, а по ним нужно вычислить все остальные...т.е.

Дано: z1, ..., z31
Надо вычислить: z32, z33, z34, ...

zi = (z(i-31) - z(i-21))mod65257, i=32,33,34,....

Вот как реализовать эти ..., т.е. когда предела нет?

(если это поможет, то это для датчика случайных чисел надо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2009, 11:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как реализуются "неограниченные" циклы? (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Как отключить автоматическое добавление "_" "@" "number" к имени экстернального метода? - C++
Здраствуйте! Подскажите как это делается? (вопрос в названии темы) среда : VS2013 проект компилируется в dll файл в начале...

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

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
23.02.2009, 11:52 #2
C++
1
while(true)
C++
1
for( ; ; )
бесконечные циклы
Splendid
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
23.02.2009, 11:59  [ТС] #3
но тут вопрос в том, что он не должен быть бесконечным - иначе просто будет зацикливание и программа работать не будет. Тут видимо по-другому как-то надо делать...
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
23.02.2009, 15:26 #4
break выход из цикла.
Splendid
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
23.02.2009, 15:45  [ТС] #5
я знаю, что break - выход из цикла, вопрос в том, когда этот break делать, если условие такое, как я указала выше..
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
23.02.2009, 15:50 #6
Цитата Сообщение от Splendid Посмотреть сообщение
Помогите, плиз!
У меня даны первые 31 члена последовательности, а по ним нужно вычислить все остальные...т.е.

Дано: z1, ..., z31
Надо вычислить: z32, z33, z34, ...

zi = (z(i-31) - z(i-21))mod65257, i=32,33,34,....

Вот как реализовать эти ..., т.е. когда предела нет?

(если это поможет, то это для датчика случайных чисел надо)
То есть вы хотите вычислить ровно бесконечное число членов этой последовательности? а где вы их хранить собираетесь?память то конечна. Так вот,для вычисления бесконечного кол-ва этих z-ов нужно бесконечное число итераций. Судя по всему,вы хотите код заклинания,который все это сожмет до обозримых пределов. Я бы рассказал, но я шаману на крови поклялся...
Splendid
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
23.02.2009, 15:58  [ТС] #7
XuTPbIu_MuHTAu, нет, я не хочу хранить бесконечность. Но раз существуют такие задачи (конкретно эта - из СТБ) - значит существует решение... Я так понимаю, что здесь нужно хранить в памяти только первые 31 член, а остальные генерировать по мере необходимости до определенного предела - который как-раз точно неопределен...т.е. как-то так...вот нужна идея как это сделать..
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
23.02.2009, 16:01 #8
Splendid,
Ваша постановка задачи никуда не годится,если вы не поняли,о чем я. "До какого-то предела,который точно не определен..." - ну что это такое? Если вам нужно 11003 число,тогда запускайте свой цикл до него и считайте.Нужно k-е - считайте до k-го..Такие штуки обычно как параметр функции принимают.

В программировании никакого "точно не определен" быть не должно.
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
23.02.2009, 16:03 #9
припа пользователь вводит номер элемента? тогдав просто скан ("",н) фор(...;<н;...).... и все.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
23.02.2009, 16:05 #10
Кстати,прекрасной альтернативой цикла является рекурсия. Вот так:
Код
int z(int k) {
    if(k<32) return ....//ваши значения
    return (z(k-31)-z(k-21))%65257
};
Добавлено через 1 минуту 41 секунду
Splendid,Позвольте объяснить вашу ошибку.Вы неправильно поставили вопрос. В вашем случае не предела нет,а номер нужного z передается как параметр. Это очень большая разница,и я не сразу понял,что именно вы имеете в виду.
Splendid
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
23.02.2009, 16:16  [ТС] #11
ясно, все поняла, всем спасибо
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.02.2009, 20:09 #12
вроде mod65257 и накладывает предел
Splendid
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
24.02.2009, 09:41  [ТС] #13
да, он накладывает предел, в том смысле, что числа не будут больше 65257, но не на их количество
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.02.2009, 13:07 #14
наложит на количество, если она возрастает
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
24.02.2009, 14:03 #15
может так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
unsigned int* Z;
int Rand()
{
    static int Curr=0,Z31=0,Z21=9;
    unsigned int result=Z[Curr]=static_cast<unsigned int>(Z[Z31]-Z[Z21])%65257;
    Curr+=Curr==31?-31:1;
    Z31+=Z31==31?-31:1;
    Z21+=Z21==31?-31:1;
    return result;
}
int main()
{
    Z=new unsigned int[31];
    for(int i=0;i<31;Z[i]=i,i++);
    for(int i=0;i<10000;i++)
        std::cout<<Rand()<<'\n';
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2009, 14:03
Привет! Вот еще темы с ответами:

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...

по строкам.замените в слове сочетание "му" на "а" , а букву "ы" на "ца". очень нужно - C++
замените в слове сочетание &quot;му&quot; на &quot;а&quot; , а букву &quot;ы&quot; на &quot;ца&quot;. очень нужно Добавлено через 21 час 4 минуты неужели никто не знает...

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес" - C++
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.02.2009, 14:03
Ответ Создать тему
Опции темы

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