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

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

Войти
Регистрация
Восстановить пароль
 
Ofey
0 / 0 / 0
Регистрация: 12.10.2016
Сообщений: 3
#1

Оператор continue - C++

12.10.2016, 00:47. Просмотров 162. Ответов 5
Метки нет (Все метки)

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
int main()
{
    setlocale(LC_ALL, "Russian");
    int r;
    cout << "Введите кол-во элементов массива = ";
    cin >> r;
    int *a = new int[r];
    int i, l, k, j, n;
    for (i = 0; i < r; i++)
    {
        cout << "mas [" << i << "] = ";
        cin >> a[i];
    }
    l = 1;
    n = 0;
    for (i = 1; i <= r; i++)
    {
        k = i - 1;
        if (a[i] != a[k])
        {
            a[n] = a[k];
            n++;
            a[n] = l;
            n++;
            l = 1;
        }
        else
        {
            l++;
        }
    }
    cout << "Результаты:" << endl;
    for (i = 0; i < n; i++)
    {
        cout << "mas [" << i << "] = " << a[i] << endl;
    }
 
    
    for (i = 1; i <= (n / 2); i++)
    {
        k = 0;
        for (j = 1; j < n; j = j + 2)
        {
            if (i != a[j])
            {
                continue;
            }
            else
            {
                k = 1;
                for (l = j + 2; l < n; l = l + 2)
                {
                    if (a[j] = a[l])
                    {
                        k++;
                    }
                }
                break;
            }
            
        }
        cout << "Длина = " << i << ", число последовательностей = " << k << endl;
    }
    
    system("pause");
    return 0;
}
Почему в этом моменте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (j = 1; j < n; j = j + 2)
        {
            if (i != a[j])
            {
                continue;
            }
            else
            {
                k = 1;
                for (l = j + 2; l < n; l = l + 2)
                {
                    if (a[j] = a[l])
                    {
                        k++;
                    }
                }
                break;
            }
 
        }
мы не можем заменить другим? Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (j = 1; j < n; j = j + 2)
        {
            
            if (i = a[j])
            {
                k = 1;
                for (l = j + 2; l < n; l = l + 2)
                {
                    if (a[j] = a[l])
                    {
                        k++;
                    }
                }
                break;
            }
Или:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (j = 1; j < n; j = j + 2)
        {
            if (i = a[j])
            {
                k = 1;
                for (l = j + 2; l < n; l = l + 2)
                {
                    if (a[j] = a[l])
                    {
                        k++;
                    }
                }
                break;
            }
            if (i != a[j])
            {
                continue;
            }
            
        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2016, 00:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оператор continue (C++):

Оператор continue - C++
void drawCircle(int x0, int y0, int radius) { int x = 0; int y = radius; int delta = 2 - 2 * radius; ...

Оператор continue - C++
Скажите пожалуйста! Почему, в данной программе у меня не работает оператор Continue.Программа должна умножать введённые числа игнорируя...

Оператор continue - C++
Прошу прощения за глупый вопрос. Пишу курсовую, голова уже совсем не работает. for (level=0;level&lt;CatalogueCount;level++) { if...

Оператор continue. - C++
Помогите:Вывести нечетные числа от 0 до 100, используя оператор continue.

как задействовать оператор continue? - C++
Написал программу для демонстрации работы оператора continue. Компилятор ругается, пишет что оператор не в петле. Программу списал из...

Почему оператор continue выводит наверх цикла? - C++
Всем привет! Начинаю осваивать программирование, написал вот такую программу для вычисления определённого члена последовательности...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rikimaru2013
C++ Game Dev
2435 / 1129 / 240
Регистрация: 30.11.2013
Сообщений: 3,686
12.10.2016, 00:49 #2
Цитата Сообщение от Ofey Посмотреть сообщение
if (i = a[j])
и что это?
0
Ofey
0 / 0 / 0
Регистрация: 12.10.2016
Сообщений: 3
12.10.2016, 00:54  [ТС] #3
Вот задача, вверху скинул целый код, а именно if (i = a[j]) - это сравнивание в данном случае длинны, которая i, с длинами повторяющихся элементов массива.
Создать программу, которая вводит c клавиатуры массив целых чисел, находит в нем все повторяющиеся последовательности (1 1, 2 2 2 и т.д.) и заменяет каждую из них на два элемента: повторяющееся число и длину последовательности. Выдать результирующую последовательность и пары "длина - число последовательностей данной длины"

вход: 1 1 1 2 2 2 2 3 4 4 4 5 5 5
выход: 1 3 2 4 3 4 3 5 3
1 - 1
2 - 0
3 - 3
4 - 1
0
rikimaru2013
C++ Game Dev
2435 / 1129 / 240
Регистрация: 30.11.2013
Сообщений: 3,686
12.10.2016, 00:57 #4
Ofey, присмотритесь к своему сравнению - суть темы если можно написать по-другому, зачем писать так? Так пишите как вам удобно. В чём проблема?
0
Ofey
0 / 0 / 0
Регистрация: 12.10.2016
Сообщений: 3
12.10.2016, 01:20  [ТС] #5
Простите, допустил очень глупую ошибку, сразу почему-то не увидел, что у меня просто =, а не ==. В любом случае, спасибо за ответ.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6469 / 3117 / 306
Регистрация: 04.12.2011
Сообщений: 8,593
Записей в блоге: 4
12.10.2016, 01:22 #6
Ofey,
Цитата Сообщение от Ofey Посмотреть сообщение
это сравнивание
это присвоение. операция сравнения это ==. Но дело не в этом даже. Не глядя глубоко, а отвечая на вопрос равносильности мне кажется Ваши варианты не эквивалентны исходному. В оригинале ветвь цикла пройдёт до конца у всех итераций цикла где значение элемента совпадёт с i, а остальные будут пропущены. То есть на каждой итерации цикла прерывается неподходящая итерация. А break прерывает весь цикл как таковой. То есть, результат будет другой. Если есть несколько i которым сответствуют какие-то элементы массива. А вот если совпадение возможно, только для одного значения i, то break будет работать также, но быстрее.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2016, 01:22
Привет! Вот еще темы с ответами:

удаление continue - C++
У Дейтлов есть задача: Что здесь имеется в виду под структурированным эквивалентом?

Инструкция if(.) continue - C++
Объясните пожалуйста как работает эта инструкция на таком примере: #include &lt;bits/stdc++.h&gt; using namespace std; int main() { ...

If else statement (continue) - C++
Простите - не пойму как форматировать код, копируемый с (С++). Всё исправлено - досихпор какие - то ошибки у меня Выдаёт - The...

Почему не выполняется continue? - C++
Всем привет. Задача: Дано натуральное число n &gt; 9. Определить его вторую (с начала) цифру с использованием одной инструкции цикла. Вопрос...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.10.2016, 01:22
Ответ Создать тему
Опции темы

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