Загрузка...

Помогите разобрать фрагмент кода.

Тема в разделе C/C++ создана пользователем zerro5 1 дек 2021. 182 просмотра

  1. zerro5
    zerro5 Автор темы 1 дек 2021 4 14 июн 2019
    Код:
    #include <stdio.h>
    #include <locale.h>

    int main(void) {
    setlocale(LC_ALL, "Russian");

    printf("Введите размер первой последовательности:\n");
    int size1;
    scanf("%d", &size1);
    int mas1[size1];
    for (int i = 0; i < size1; i++)
    scanf("%d", &mas1);

    printf("Введите размер второй последовательности:\n");
    int size2;
    scanf("%d", &size2);
    int mas2[size2];
    for (int i = 0; i < size2; i++)
    scanf("%d", &mas2);

    int k = 0, j = 0;
    for (k = 0; k < size1 && j != size2; k++)
    for (j = 0; j < size2; j++)
    if (mas1[k] == mas2[j])
    break;

    if (k != size1)
    printf("Множество первой последовательности не входит в множество второй\n");
    else {
    printf("Множество первой последовательности входит в множество второй\n");
    for (int i = 0; i < size1; i++) {
    for (int j = 1, k; j < size1; j++) {
    if (mas1[j] < mas1[j - 1]) {
    k = mas1[j];
    mas1[j] = mas1[j - 1];
    mas1[j - 1] = k;
    }
    }
    }
    printf("Упорядоченная последовательность:\n");
    int i = 0;
    while (i < size1) {
    printf("%d", mas1);
    i++;
    }
    }
    return 0;
    }

    Проблемный фрагмент:
    int k = 0, j = 0;
    for (k = 0; k < size1 && j != size2; k++)
    for (j = 0; j < size2; j++)
    if (mas1[k] == mas2[j])
    break;
    Не совсем понимаю за что он отвечает. Еще не понимаю, почему когда массивы равны, то не выходит из цикла?
     
  2. zerro5
    zerro5 Автор темы 1 дек 2021 4 14 июн 2019
    Чего?
     
    1. kotoss
      zerro5,
      Код
      нужно было так написать
  3. kotoss
    zerro5, он выходит только из одного цикла а там их два
     
  4. zerro5
    zerro5 Автор темы 1 дек 2021 4 14 июн 2019
    Он то выходит, но неправильно
    --- Сообщение объединено с предыдущим 1 дек 2021
    Или я что-то не понимаю
     
  5. brediska
    brediska 1 дек 2021 Заблокирован(а) 2794 30 май 2021
    zerro5,

    по поводу массива в цикле
    нужно использовать индексы, а не только название массива

    В частности так:
    for (int i = 0; i < size1; i++)
    scanf("%d", &mas1);

    И так:
    for (int i = 0; i < size2; i++)
    scanf("%d", &mas2);
     
    1. zerro5 Автор темы
Top
Загрузка...