Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 15.03.2016
Сообщений: 29

Задача "Дребезг контактов"

20.11.2016, 19:20. Показов 3342. Ответов 5

Студворк — интернет-сервис помощи студентам
Дребезг контактов – с этим явлением борются специалисты по электронике. Дребезг
возникает при замыкании-размыкании кнопок, тумблеров, реле и других подобных
устройств. Сигнал от контактов поступает в микропроцессор с некоторой
периодичностью, скажем, 100 раз в секунду. Если контакт разомкнут, микропроцессор
принимает «0», а если замкнут – «1». В ходе замыкания-размыкания контакт неустойчив,
и процессор получает несколько чередующихся нулей и единиц, – программа процессора
должна отфильтровать эти ложные срабатывания.
Ваша программа будет моделировать поведение микропроцессора. Входной файл
содержит последовательность нулей и единиц (по одному символу в строке). Из первой
строки берется исходное значение сигнала, а дальше сигнал на выходе программы должен
формироваться так: если три подряд идущие значения совпадают, то берется это новое
значение, а иначе сохраняется текущее, например:
Выходной файл должен содержать две колонки: входной и выходной сигналы.


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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "stdafx.h"
#include <iostream>
#include <vector>
 
 
int main()
{
    using namespace std;
 
    bool n = 0;
    bool count0 = 0, count1 = 0; // счетчик значений 0/1
    vector <bool> in,out; // входные, выходные данные
    cout << "write the first value: ";
    bool flag; // принимает значение, попадающее в выходные данные
    cin >> flag;
    out.push_back(flag);
    in.push_back(flag);
    cout << "write all values: " << endl;
    do
    {
        cin >> n;
        in.push_back(n);
        if (count0 = 3)
        {
            flag = 0;
            count1 = 0;
        }
        if (count1 = 3)
        {
            flag = 1;
            count0 = 0;
        }
        out.push_back(flag);
        if (n == 0) count0++; else count1++;
    }
    while ((n != 0) || (n != 1));
    cout << "input values :";
    for (int x : in) cout << x << endl;
    cout << "output values :";
    for (int x : out) cout << x << endl;
    return 0;
}
Подскажите плиз, почему не выводит элементы вектора?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2016, 19:20
Ответы с готовыми решениями:

Дребезг контактов
Доброго времени суток всем! Подскажите пожалуйста, какие есть возможные аналоговые варианты подавления дребезга контактов? ...

Дребезг контактов
Приветствую всех! Есть вопрос на stm32l152 сделал моргалки по кнопке, работает, но присутствует эффект &quot;дребезга контактов&quot;....

Дребезг контактов и оптопара
Имеется обычный контактный датчик,через резистор напряжение с него(когда замкнут) подается на оптрон,PC817.На выходе оптрона сидит МК и...

5
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
20.11.2016, 19:30
1 оформляйте код по человечески
2
Цитата Сообщение от Pascal-_-Killer Посмотреть сообщение
почему не выводит элементы вектора
наверное потому что не выполняется условие для остановки цикла while ((n != 0) || (n != 1));
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
20.11.2016, 19:36
Цитата Сообщение от ssXXss Посмотреть сообщение
наверное потому что не выполняется условие для остановки цикла while ((n != 0) || (n != 1));
Наоборот. Такое условие выполняется всегда (компилятор, вероятно, по этому поводу выдал предупреждение) и цикл никогда не завершнается

Добавлено через 1 минуту
В строках 23 и 28, вероятно, должно быть "==" вместо "=" (о чём компилятор почти наверняка предупредил)
1
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
20.11.2016, 19:39
Цитата Сообщение от Evg Посмотреть сообщение
цикл никогда не завершнается
я это и имел ввиду. ))
0
1 / 1 / 0
Регистрация: 15.03.2016
Сообщений: 29
20.11.2016, 21:01  [ТС]
это странно, но когда я ввожу предусловие while (n==0) значения выводятся, а когда прописываю while ((n==0) || (n==1)), ничего не происходит. В чем проблема?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
21.11.2016, 19:37
Цитата Сообщение от Pascal-_-Killer Посмотреть сообщение
В чем проблема?
Я же выше писал - результат такого условия всегда есть истина, а потому цикл получается бесконечным
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2016, 19:37
Помогаю со студенческими работами здесь

Как добавить дребезг контактов в Proteus ISIS?
Имеется модель энкодера и кнопки. (Энкодера в стандартной библиотеке нет, поэтому я тупо взял два генератора меиндра, смещенных...

Экспорт предлагаемых контактов (контактов, которым отправлялись письма) из Outlook 2010
Приветствую! Данная тема в той или иной степени поднималась уже дюжину раз, но я ответа на свой вопрос не нашел. Суть: имеется почтовый...

Копирование контактов из группы контактов
Добрый день. Outlook 2013 В папке &quot;Контакты&quot; создал много контактов двух компаний Создал две группы. К каждой группе привязал...

Дребезг кнопки
Добрый день, использую чип EPM3032ALC44, пишу на Verilog. Сильно не пинайте это мой третий проект (маленький). Написал проект, при...

дребезг кнопки
как сделать в протеусе дребезг кнопки?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru