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

Цикл от 0 до 256 и от 256 до 0

01.03.2018, 12:01. Показов 2140. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят подскажите пожалуйста.
Есть простой кодик, который вроде работает и проходит цикл от 0 до 256.
Подскажите как сделать чтобы при достижении 256, произошел проход цикла до 0? И потом снова по кругу от 0 до 256?

C++
1
2
3
4
5
6
7
8
void main() {
  //InitMain();
  current_duty  = 256;                        
  while (1) {
      for (count = 0; count <=current_duty; count++); 
      PWM_Set_Duty(current_duty,  1); 
  }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2018, 12:01
Ответы с готовыми решениями:

Используя цикл for вычислить и вывести на экран 1+2+4+8+.+256
Доброго времени суток! Помогите решить задачу, напишите программу которая с помощью цикла for...

Вывод в консоль SetPixel(R,G,B) с 256-цветового *.bmp
Добрый вечер, пытаюсь прочитать *.bmp файл заведомо известного размера и вывести его в консоль...

Запись в мемо поле (mdb) > 256 byte в VC
Народ помогите! Зашел в тупик, как не бьюсь, ну никак VC не хочет писать в мемо &gt; 256 b. Делаю...

Разработать функцию, заполняющую массив из 256 указателей
Дана произвольная строка символов. Разработать функцию, заполня- ющую массив из 256 указателей,...

27
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
01.03.2018, 12:10 2
byakov92,
C++
1
2
for (int i = 0; i < 256; ++i);
for (int i = 255; i >= 0; --i);
1
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.03.2018, 12:12 3
C++
1
2
3
4
5
6
    while (true) {
        for (int i = 0; i < 257; i++)
            //что-то делаем
        for (int i = 256; i >= 0; i--)
            //что-то делаем
    }
1
1 / 1 / 0
Регистрация: 30.01.2017
Сообщений: 111
01.03.2018, 12:53  [ТС] 4
Спасибо за ответы.
А не подскажите как в консольное приложение результат вывести? А то я какую-то кашу наделал...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <iostream>
 
using namespace std;
unsigned int current_duty;
int i;
int main()
{
    current_duty = 256;                        // initial value for current_duty
 
    while (true)
    {
        for (int i = 0; i < current_duty; i++);
            //что-то делаем
        for (int i = current_duty; i >= 0; i--);
                //что-то делаем
    }
    std::cout << current_duty << std::endl;
    return 0;
    
}
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.03.2018, 13:02 5
После второго for можно поставить break
1
1 / 1 / 0
Регистрация: 30.01.2017
Сообщений: 111
01.03.2018, 13:08  [ТС] 6
Цитата Сообщение от Hitoku Посмотреть сообщение
После второго for можно поставить break
Добавил, но выводит значение 256.
А мне хотелось бы в консольном приложении бежали строки от 0 до 256 и от 256 до 0, и так по кругу.
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
01.03.2018, 13:11 7
C++
1
for(i=0, k=1; ; i+=k, k = i==0 || i==256?-k:k) ...
Добавлено через 59 секунд
256 повторять надо?
1
1 / 1 / 0
Регистрация: 30.01.2017
Сообщений: 111
01.03.2018, 13:15  [ТС] 8
Цитата Сообщение от palva Посмотреть сообщение
256 повторять надо?
Да, 256 у меня current_duty
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.03.2018, 13:44 9
Цитата Сообщение от byakov92 Посмотреть сообщение
А мне хотелось бы в консольном приложении бежали строки от 0 до 256 и от 256 до 0
Ну тогда выводите их внутри for-ов
C++
11
12
13
14
15
16
17
    while (true)
    {
        for (int i = 0; i < current_duty; i++)
            std::cout << i << "\n";
        for (int i = current_duty; i >= 0; i--)
            std::cout << i << "\n";
    }
1
1 / 1 / 0
Регистрация: 30.01.2017
Сообщений: 111
01.03.2018, 14:00  [ТС] 10
Цитата Сообщение от Hitoku Посмотреть сообщение
Ну тогда выводите их внутри for-ов
Спасибо большое, заработало)
И еще такой вопрос, можно-ли как-то замедлить "перебор" цифр? Например 1 (пауза секунда) 2 (пауза секунда) 3 и тд?

Добавлено через 8 минут
И еще, чтобы результат цикла попал в переменную, мне после цикла указать так?
C++
1
2
3
4
5
6
7
8
while (true)
    {
        for (int i = 0; i < current_duty; i++)
            std::cout << i << "\n";
        for (int i = current_duty; i >= 0; i--)
            std::cout << i << "\n";
    }
Set_Duty(current_duty,  1);
0
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
01.03.2018, 14:01 11
byakov92, паузу на поток надо ставить, thread гугли
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.03.2018, 14:12 12
byakov92, _stanislav, с паузой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <Windows.h> //для Sleep
 
int main()
{
    int current_duty = 256;
    while (true)
    {
        for (int i = 0; i <= current_duty; i++) {
            Sleep(1000); //пауза на 1 сек
            std::cout << i << "\n";
        }
        for (int i = current_duty; i >= 0; i--) {
            Sleep(1000);
            std::cout << i << "\n";
        }
    }
    std::cout << current_duty << std::endl;
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от byakov92 Посмотреть сообщение
И еще, чтобы результат цикла попал в переменную, мне после цикла указать так?
current_duty у Вас всегда равен 256. Итерации хранят i и существуют они только в рамках своего цикла
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
01.03.2018, 14:25 13
Цитата Сообщение от Hitoku Посмотреть сообщение
Sleep(1000); //пауза на 1 сек
Можно использовать стандартную библиотеку.
C++
1
std::this_thread::sleep_for(std::chrono::seconds(1)); // #include <thread> #include <chrono>
0
1 / 1 / 0
Регистрация: 30.01.2017
Сообщений: 111
01.03.2018, 14:26  [ТС] 14
Цитата Сообщение от Hitoku Посмотреть сообщение
Итерации хранят i и существуют они только в рамках своего цикла
Я правильно понимаю что в таком случае должно получиться как-то так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using namespace std;
int i;
int main()
{
    while (true)
    {
        for (int i = 0; i <= 256; i++) {
            Sleep(50); //пауза на 1 сек
            std::cout << i << "\n";
        }
        for (int i = 256; i >= 0; i--) {
            Sleep(50);
            std::cout << i << "\n";
        }
    }
    system("pause");
    return 0;
    PWM_Set_Duty(i, 1);
}
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.03.2018, 14:30 15
byakov92, нет, не правильно Потому что к i нельзя обращаться вне цикла, если она в нём объявлена. К тому же у Вас нет условия выхода из цикла while, так что до PWM_Set_Duty(i, 1); программа никогда не доберётся, даже если закрыть глаза на то, что вызов идёт после return 0;
1
1 / 1 / 0
Регистрация: 30.01.2017
Сообщений: 111
01.03.2018, 14:44  [ТС] 16
Цитата Сообщение от Hitoku Посмотреть сообщение
byakov92, нет, не правильно Потому что к i нельзя обращаться вне цикла, если она в нём объявлена. К тому же у Вас нет условия выхода из цикла while, так что до PWM_Set_Duty(i, 1); программа никогда не доберётся, даже если закрыть глаза на то, что вызов идёт после return 0;
Понимаю что надоел глупыми вопросами, но не подскажете как сделать, чтобы результат перебора цикла лежал в переменной?
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.03.2018, 15:03 17
Как вариант, можно нажатием Esc получать итерацию и выходить из цикла
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
#include <iostream>
#include <Windows.h>
#include <conio.h>
 
int main()
{
    int current_duty = 256;
    while (true)
    {
        char c;
        for (int i = 0; i <= current_duty; i++) {
            Sleep(500);
            std::cout << i << "\n";
            if (_kbhit()) {
                c = _getch();
                if (c == 0x1B) {
                    current_duty = i;
                    break;
                }
            }
        }
        if (c == 0x1B) break;
        for (int i = current_duty; i >= 0; i--) {
            Sleep(500);
            std::cout << i << "\n";
            if (_kbhit()) {
                c = _getch();
                if (c == 0x1B) {
                    current_duty = i;
                    break;
                }
            }
        }
        if (c == 0x1B) break;
    }
    std::cout << current_duty << std::endl;
    system("pause");
    return 0;
}
1
1 / 1 / 0
Регистрация: 30.01.2017
Сообщений: 111
01.03.2018, 15:10  [ТС] 18
Цитата Сообщение от Hitoku Посмотреть сообщение
Как вариант
Спасибо огромное!
Получается сначала перебор первого for от 0 до 256 попадает в current_duty = i, потом второго for от 256 до 0, и после чего происходит остановка цикла?
0
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
01.03.2018, 15:17 19
Нет, цикл будет выполняться до тех пор, пока Вы не нажмёте клавишу Esc. После нажатия индекс последней итерации попадает в current_duty и выводится её значение
1
1 / 1 / 0
Регистрация: 30.01.2017
Сообщений: 111
01.03.2018, 16:08  [ТС] 20
Цитата Сообщение от Hitoku Посмотреть сообщение
Нет, цикл будет выполняться до тех пор, пока Вы не нажмёте клавишу Esc.
А можно как-то сделать, чтобы значения цикла крутились в переменной current_duty без нажатия Esc и без вывода в консоли?
0
01.03.2018, 16:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2018, 16:08
Помогаю со студенческими работами здесь

Вывод чисел 1-256 в двоичной, восьмеричной и шестнадцатиричной системах
Программа моя работает, но не совсем правильно. Она переводит числа из десятичной системы в другие...

Переставить строку из рандомных 16 символов 256 раз случайным образом
Здравствуйте. Помогите пожалуйста! Нужна программа для рандомного переставления букв в различных 16...

Преобразование хэша в целое число и работа с хэшем (SHA 256)
Возникла проблемма при написании курсовой...Пишу программу Электронная подпись Эль...

Что означает длина простого числа 256 или 1024 бит?
Привет, товарищи! Вообщем вопрос такой. Хочу реализовать подпись ГОСТ Р34.10-94. В условии...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru