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

Очень простой вопрос про циклы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Zhenya777
1 / 1 / 0
Регистрация: 11.08.2009
Сообщений: 43
28.08.2009, 18:44     Очень простой вопрос про циклы #1
Всем привет!
Я только начал изучать с++. Меня интересует такой вопрос:
Как сделать цик чтобы к переменной i добавлялась переменная i(Надеюсь понятно =))
что то на подобие

C++
1
2
for (i=1;i<40;i++){
 i = i + i;
тоесть i = 2,4,8,16,32,64,125 ....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
28.08.2009, 18:46     Очень простой вопрос про циклы #2
Цитата Сообщение от Zhenya777 Посмотреть сообщение
Всем привет!
Я только начал изучать с++. Меня интересует такой вопрос:
Как сделать цик чтобы к переменной i добавлялась переменная i(Надеюсь понятно =))
что то на подобие

C++
1
2
for (i=1;i<40;i++){
 i = i + i;
тоесть i = 2,4,8,16,32,64,125 ....
вместо i++ написать i += i
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
28.08.2009, 18:50     Очень простой вопрос про циклы #3
Zhenya777, вы умножение в школе проходили

i*=2;

только в цикле for строго не рекомендуется вручную менять переменную счета!!!
БурундукЪ
 Аватар для БурундукЪ
9531 / 2528 / 66
Регистрация: 17.02.2009
Сообщений: 10,364
28.08.2009, 18:57     Очень простой вопрос про циклы #4
кстати, даже бурундуки знают, что
64+64 != 125 ))) только 128
и еще, ваш цикл закончится уже после i=64
Mozart
 Аватар для Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
28.08.2009, 19:09     Очень простой вопрос про циклы #5
Тогда уже лучше так написать:
C++
1
2
3
for(i=1;i<0xFFFF;i<<=1){
//-----------------
}
Но тут надо аккуратней что бы переполнения не было, иначе в вечный цыкл уйдет
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,148
Завершенные тесты: 1
28.08.2009, 19:17     Очень простой вопрос про циклы #6
Zhenya777,
C++
1
2
3
4
int i=1;
while(i!=128){
i=i*2;
}
БурундукЪ
 Аватар для БурундукЪ
9531 / 2528 / 66
Регистрация: 17.02.2009
Сообщений: 10,364
28.08.2009, 19:20     Очень простой вопрос про циклы #7
Цитата Сообщение от skvor Посмотреть сообщение
64+64 может быть равно 150
может 100% быть равно, но к сожалению, не в том числовом ряду
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
28.08.2009, 19:25     Очень простой вопрос про циклы #8
Lolcht0, Mozart, МедведЪ, идет речь о сложении, а не умножении.
Хотя признаю, Mozart, предложил действительно самый быстрый способ
Mozart
 Аватар для Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
28.08.2009, 19:34     Очень простой вопрос про циклы #9
M128K145, Суть то не изменится, если крично именно сложение то у меня подобное компилируется:
C++
1
2
for(i=2;i<0xFFFF;i+=i){
}
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
28.08.2009, 22:02     Очень простой вопрос про циклы #10
только в цикле for строго не рекомендуется вручную менять переменную счета!
Может и не рекомендуется, но можно.

Получить 30 первых чисел
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main( void ) {
 
int i, k;
i= 1;
for ( k= 1; k<=30; k++ ) {
       i*= 2;
       printf( "k=%d i=%d\n", k, i );
}
return 0;
 
} /* main() */
Вывод
Код
k=1 i=2
k=2 i=4
k=3 i=8
k=4 i=16
k=5 i=32
k=6 i=64
k=7 i=128
k=8 i=256
k=9 i=512
k=10 i=1024
k=11 i=2048
k=12 i=4096
k=13 i=8192
k=14 i=16384
k=15 i=32768
k=16 i=65536
k=17 i=131072
k=18 i=262144
k=19 i=524288
k=20 i=1048576
k=21 i=2097152
k=22 i=4194304
k=23 i=8388608
k=24 i=16777216
k=25 i=33554432
k=26 i=67108864
k=27 i=134217728
k=28 i=268435456
k=29 i=536870912
k=30 i=1073741824
Добавлено через 29 минут
Дальше будет переполнение - так как sizeof(int) == 32.
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
28.08.2009, 22:03     Очень простой вопрос про циклы #11
odip, я говорю про такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main( void ) {
 
int i;
 
for ( i= 1; i<=30; i++ ) {
       i*= 2;
       printf( "i=%d\n", i );
}
return 0;
 
} /* main() */
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
28.08.2009, 22:10     Очень простой вопрос про циклы #12
Zhenya777, аууууу! вопрос ясен, или будем предлагать еще варианты? их много!!!
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
28.08.2009, 22:25     Очень простой вопрос про циклы #13
Цитата Сообщение от M128K145 Посмотреть сообщение
Хотя признаю, Mozart, предложил действительно самый быстрый способ
ну не факт, что компилятор сам не приведет к такому виду
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
28.08.2009, 22:41     Очень простой вопрос про циклы #14
я говорю про такой код
Код ошибочен - ты увеличиваешь i на 1 и одновременно удваиваешь.
А нужно было только удваивать.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main( void ) {
 
int i;
 
for ( i= 1; i<=30; ) {
       i*= 2;
       printf( "i=%d\n", i );
}
return 0;
 
} /* main() */
Lolcht0
123 / 121 / 5
Регистрация: 30.03.2009
Сообщений: 766
29.08.2009, 01:12     Очень простой вопрос про циклы #15
odip, ты посмотри на код в перовом посте и тогда, надеюсь, меня поймешь=))
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9383 / 5433 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
29.08.2009, 05:00     Очень простой вопрос про циклы #16
По сути программа призвана степени двойки выводить. Вот так по-моему проще:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <limits.h>
 
/* степени двойки */
 
int main(){
    int i;
    
    for ( i = 0; i < sizeof(int) * CHAR_BIT; i++ )
        printf("2^%d = %u\n", i, 1 << i);
    
    return(0);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2009, 10:30     Очень простой вопрос про циклы
Еще ссылки по теме:

простой вопрос по с++ C++
C++ Супер простой вопрос
C++ Очень простой вопрос
C++ циклы вопрос
Простой вопрос C++

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

Или воспользуйтесь поиском по форуму:
Zhenya777
1 / 1 / 0
Регистрация: 11.08.2009
Сообщений: 43
29.08.2009, 10:30  [ТС]     Очень простой вопрос про циклы #17
Да все ясно!!! Всем спасибо
Yandex
Объявления
29.08.2009, 10:30     Очень простой вопрос про циклы
Ответ Создать тему

Метки
циклы, чистый c
Опции темы

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