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

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

Войти
Регистрация
Восстановить пароль
 
PinkPink
9 / 9 / 2
Регистрация: 10.05.2012
Сообщений: 279
#1

Циклы ведут себя как-то странно - C++

20.11.2012, 19:43. Просмотров 327. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
int main()
{
    float A[]={1,2,3,4,5,6,7,8,9,10};
    float MAX=0;
    int I;
    int sum=0;
    for(I=0;I<10;I++)
    if(I%2==0) sum+=A[I];
 
    system("pause");
    return 0;
}
Здесь например, значение sum в результате равно единице. Я не могу понять.. цикл вообще не крутится? за ним просто следует условие? но тогда, что здесь является телом цикла?? должна быть ошибка если тело цикла отсутствует.

а вот в другом примере
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>
#include <string>
#include <Windows.h>
 
using namespace std;
int main()
{
    int A[10]={3,4,5,1,3,5,1,3,4};
    float MAX=1;
    short I;
    int sum=0;
    for(I=0;I<10;I++)
        if (A[I]>MAX) MAX=A[I];
    for(I=0;I<5;I++)
    {
        switch (I)
        {
        case 1: MAX+=1;
        case 2: MAX-=1;
        case 3: MAX*=2;
        case 4: MAX/=2;
        case 5: MAX+=1+MAX/2;
        }
    }
    system("pause");
    return 0;
}
Аналогичным образом осуществляется поиск максимума, но почему-то этот цикл выполняется без проблем и не проскакивает. В чём дело?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2012, 19:43     Циклы ведут себя как-то странно
Посмотрите здесь:

Странно себя ведёт массив в классе. C++
C++ cin странно себя ведет
Как то странно выводит матрицу. C++
Копирую строчки двумерного массива и программа начинает вести себя странно C++
C++ insert работает как-то странно
C++ Работаю с файлом *.txt. Прога ведет себя странно если последняя строка файла пуста. Почему так?
класс string. Программа странно себя ведет C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
20.11.2012, 19:49     Циклы ведут себя как-то странно #2
Цитата Сообщение от PinkPink Посмотреть сообщение
Здесь например, значение sum в результате равно единице.
Только что проверил у себя, у меня результат 25.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
20.11.2012, 19:49     Циклы ведут себя как-то странно #3
Цитата Сообщение от PinkPink Посмотреть сообщение
switch (I) { case 1: MAX+=1; case 2: MAX-=1; case 3: MAX*=2; case 4: MAX/=2; case 5: MAX+=1+MAX/2; }
C++
1
2
3
4
5
6
7
8
 switch (I)
        {
        case 1: MAX+=1; break;
        case 2: MAX-=1; break;
        case 3: MAX*=2; break;
        case 4: MAX/=2; break;
        case 5: MAX+=1+MAX/2; 
        }
PinkPink
9 / 9 / 2
Регистрация: 10.05.2012
Сообщений: 279
20.11.2012, 19:52  [ТС]     Циклы ведут себя как-то странно #4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
 switch (I)
        {
        case 1: MAX+=1; break;
        case 2: MAX-=1; break;
        case 3: MAX*=2; break;
        case 4: MAX/=2; break;
        case 5: MAX+=1+MAX/2; 
        }
здесь не нужно брейк, все кейсы нужно выполнить, начиная с I-го
тобишь, то что мы "проваливаемся" дальше - это так задумано

Добавлено через 54 секунды
а как у вас будет вести себя вот такой код?
float A[]={1,2,3,4,5};
float MAX;
int I;
for(I=0;I<5;I++)
if (I>2) A[I]=A[I-1]*2;

у меня массив остаётся без изменений т.к. опять таки цикл не крутится(
если убрать условие, то цикл крутится. с ним - нет
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
20.11.2012, 19:56     Циклы ведут себя как-то странно #5
PinkPink, попробуйте перестроить проэкт.

Добавлено через 25 секунд
в первом случае.
PinkPink
9 / 9 / 2
Регистрация: 10.05.2012
Сообщений: 279
20.11.2012, 19:58  [ТС]     Циклы ведут себя как-то странно #6
Цитата Сообщение от SeregaC++ Посмотреть сообщение
PinkPink, попробуйте перестроить проэкт.

Добавлено через 25 секунд
в первом случае.
т.е. во всех этих ситуациях цикл всё-таки должен крутиться?
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
20.11.2012, 20:02     Циклы ведут себя как-то странно #7
PinkPink, у меня всё крутится.

Добавлено через 46 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
int main()
{
    float A[]={1,2,3,4,5,6,7,8,9,10};
    float MAX=0;
    int I;
    int sum=0;
    for(I=0;I<10;I++)
        if(I%2==0)
            sum+=A[I];
    cout << sum << endl;
 
    system("pause");
    return 0;
}
Добавлено через 21 секунду
вставьте код, и перестройте проэкт.
PinkPink
9 / 9 / 2
Регистрация: 10.05.2012
Сообщений: 279
20.11.2012, 20:20  [ТС]     Циклы ведут себя как-то странно #8
по вашему совету перестроила проект, но ошибки всё равно были. потом, скопировала ваш текст, как вы сказали, вставила, ещё раз перестроила и стало работать. причём и мой код после этого тоже стал работать.
так и не поняла что за ерунда творилась)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 20:25     Циклы ведут себя как-то странно
Еще ссылки по теме:

Странно видёт себя программа C++
Почему программа себя странно ведет: зацикливается после ввода значений? C++
STL Вектор Копирование элемнтов себя из себя C++
Странно ведёт себя функция fgets C++
C++ Каретка странно себя ведёт

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

Или воспользуйтесь поиском по форуму:
Issues
20.11.2012, 20:25     Циклы ведут себя как-то странно
  #9

Не по теме:

PinkPink,

Yandex
Объявления
20.11.2012, 20:25     Циклы ведут себя как-то странно
Ответ Создать тему
Опции темы

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