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

Реализовать задержку сигнала на 10 тактов - C++

Восстановить пароль Регистрация
 
Vladimir1209
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 2
11.07.2013, 21:20     Реализовать задержку сигнала на 10 тактов #1
реализовать задержку сигнала на 10 тактов(шагов цикла) для функции y=x, с использованием массива из 10 элементов в качестве стека для хранения промежуточных данных функции с задержкой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
12.07.2013, 08:48     Реализовать задержку сигнала на 10 тактов #2
Цикл - ладно, стек - ладно, но о каком сигнале идет речь?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
12.07.2013, 08:50     Реализовать задержку сигнала на 10 тактов #3
SatanaXIII, наверное имеется ввиду '\a'.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
12.07.2013, 10:14     Реализовать задержку сигнала на 10 тактов #4
Аааа! Я ничего не понимаю. Это похоже на задание на каких-нибудь вступительных экзаменах, когда само задание делать три минуты, а вкуривать условие год.

У нас есть функция - y, которая равна значению некоторой переменной (константе? (или это так записано, что функция может делать что угодно?)). В цикле происходит обращение к этой функции, и она возвращает значения, которые записываются в темповый массив. Десять итераций цикла и десять же элементов массива. Ладно, есть связь. Задержка сигнала на десять итераций, - то есть пока идут десять итераций, выдавать сигнал. Хорошо. ...Но что это за бред?! Чего надо сделать-то?
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
12.07.2013, 10:27     Реализовать задержку сигнала на 10 тактов #5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Но что это за бред?! Чего надо сделать-то?
если без задержки, то в каждый момент появления x мы бы получали y
но т.к. у нас задержка то мы получим значение y от x-10, т.е. y-10
банальная функция y=x вроде взята для простоты, но с другой стороны слегка мешает понять смысл.

алгоритм такой что получая х, мы кладем его в стек, а в y возвращаем дно стека (т.е. первые 10 итераций система не работоспособна, т.к. копит задержку),
таким образом при глубине стека 10, будем получать задержку в 10 итераций

как пример можно взять телемост, когда ведущая задает корреспонденту вопрос и первые секунды ждет пока до него дойдет сигнал, затем вроде начинается общение, но с задержкой
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
12.07.2013, 10:32     Реализовать задержку сигнала на 10 тактов #6
AntonChik, то есть пресловутый "сигнал" это есть передача некоего значения x (в данном случае) в функцию y и получение результата выполнения y?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
12.07.2013, 10:43     Реализовать задержку сигнала на 10 тактов #7
Цитата Сообщение от AntonChik Посмотреть сообщение
алгоритм такой что получая х, мы кладем его в стек, а в y возвращаем дно стека
Это называется не стек, а очередь!
FIFO
Я сразу подумал о такой вещи, прочитав заголовок.
Создаём очередь из 10 элементов.
При очередной итерации запускаем вычисление.
При вычислении используем значение, положенное в очередь 10 итераций назад.
Результат вычисления кладём в конец очереди, а из её начала убираем 1 самый старый элемент.
В результате, каждый раз будет браться элемент, вычисленный 10 ходов назад для вычисления текущего
Вот и вся задержка!


Но это ОЧЕРЕДЬ(FIFO), а не СТЕК( LIFO) !!!
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
12.07.2013, 10:52     Реализовать задержку сигнала на 10 тактов #8
я отличаю стек от очереди и тоже сразу заметил, что тут либо в постановке эти понятия попутаны, либо действительно надо использовать стек.
я дал понять, что потребуется вытаскивать дно стека, а это либо невозможно, либо нужен еще один стек.
в общем это уже другая проблема.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
12.07.2013, 10:55     Реализовать задержку сигнала на 10 тактов #9
AntonChik, Kuzia domovenok, я вообще не уверен, что здесь слово стек обозначает именно стек. Скорее формулировка "в качестве стека" подразумевает собой просто складирование десятка вычисленных значений, дабы они не потерялись. Не важно как оно будет организованно. Я думаю.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Но это ОЧЕРЕДЬ(FIFO), а не СТЕК( LIFO) !!!
Один мой знакомый препод любил привести хороший пример на банке с лимонадом для понимания отличия между стеком и очередью:
Стек - это баночка, а очередь это трубочка.


А вообще за такое формулирование задания как у ТС надо убивать. Пусть это гуманитарии упражняются в казуистике.
Vladimir1209
0 / 0 / 0
Регистрация: 11.07.2013
Сообщений: 2
12.07.2013, 14:00  [ТС]     Реализовать задержку сигнала на 10 тактов #10
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
AntonChik
Возможно вы правы, но я не представляю как это реаизовать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2013, 21:15     Реализовать задержку сигнала на 10 тактов
Еще ссылки по теме:

Сделать задержку программы на 30 секунд C++
C++ Замер количества тактов исполнения через rdtsc()
Мигание светодиода, организовать задержку C++

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

Или воспользуйтесь поиском по форуму:
_Xan_
 Аватар для _Xan_
20 / 20 / 6
Регистрация: 19.09.2010
Сообщений: 85
17.07.2013, 21:15     Реализовать задержку сигнала на 10 тактов #11
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
#include <iostream>
using namespace std;
 
double f(double x);
 
int main()
{
    double mas[10]={0};
    for(int i=0; i<10; i++)
    {
        cin>>mas[i];
    }
    double k=1;
    while (k!=0.0)
    {
        cin>>k;
        cout<<f(mas[0])<<endl;
        for(int i=1; i<10; i++) mas[i-1]=mas[i];
        mas[9]=k;
    }
    return 0;
}
 
double f(double x)
{
    return x*x;
}
Yandex
Объявления
17.07.2013, 21:15     Реализовать задержку сигнала на 10 тактов
Ответ Создать тему
Опции темы

Текущее время: 17:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru