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

Нужно разобраться с небольшим примером - C++

Восстановить пароль Регистрация
 
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
06.10.2013, 10:22     Нужно разобраться с небольшим примером #1
Здравствуйте . Есть такая программа , где два массива записываются в 2 разных файла , потом считываются с него , а далее нужно найти общие элементы этих массивов и записать их в третий массив.
C++
1
2
int h4[20]={......}
int h5[12]={....}
Эти массивы записали , вывели с файла.
Далее нужно общие элементы записать в массив h3[].
Нашёл такой пример , но не совсем понимаю , как она работает .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int h3[5];                                      //массив для хранения общих элементов
 int t=0;                                         
 int k=0;
 while (t<20)
      {for (int i=0; i<12; i++)         //прогоняет все элементы первого массива, сравнивая с
        {                      //одним (j-м) элементом второго массива
         int p=0;       
           if (h5[i]==h4[t])                      //элементы двух массивов одинаковы
              {for (int l=0; l<20; l++)
                  if (h5[i]==h3[l])              //проверяет наличие подобного элемента в 3-м массиве
                    p+=1;   
               if (p==0)                        //если элементы двух массивов одинаковы и он(элемент) не нашёлся в 3 массиве
                    {h3[k]=h5[i];
                     cout <<endl<< "\n  Element h3 = " << h3[k]<< endl;
                     k+=1;
                     }}}
          t++;}                               //начинаем прогон следующего элемента второго массива
Комментарии писал не я.
Помогите разобраться , зачем нужно условие
C++
1
while (t<20)
И немного запутался в алгоритме : получается сначала мы делаем цикл по массиву h5[12].
Дальше я не понимаю , зачем нужна переменная p?

Помогите , пожалуйста , хотя бы немного разобраться с этими вопросами .Буду очень признателен Вам .
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2013, 10:22     Нужно разобраться с небольшим примером
Посмотрите здесь:

C++ нужно разобраться в коде
Нужно разобраться C++
Нужно разобраться с информатикой!!!!! C++
C++ Нужно разобраться с программой
Нужно разобраться в выделении остатка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
06.10.2013, 10:52     Нужно разобраться с небольшим примером #2
while тоже цикл, почему тут вперемешку два вида цикла, нужно спрашивать у автора этого кода.
Алгоритм такой:
-берем элемент массива h4 (цикл while)
-в цикле сравниваем со всеми элементами массива h5 (первый цикл for)
-если есть совпадение, в еще одном цикле сравниваем совпавший элемент со всеми элементами массива h3 (второй цикл for)
-если совпавшие элементы h4 и h5 отсутствуют в h3, записать элемент в h3
Переменная р используется как флаг
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
06.10.2013, 10:58  [ТС]     Нужно разобраться с небольшим примером #3
Цитата Сообщение от kazak Посмотреть сообщение
while тоже цикл, почему тут вперемешку два вида цикла, нужно спрашивать у автора этого кода.
Алгоритм такой:
-берем элемент массива h4 (цикл while)
-в цикле сравниваем со всеми элементами массива h5 (первый цикл for)
-если есть совпадение, в еще одном цикле сравниваем совпавший элемент со всеми элементами массива h3 (второй цикл for)
-если совпавшие элементы h4 и h5 отсутствуют в h3, записать элемент в h3
Переменная р используется как флаг
Спасибо за ответ . Про флаг уже сам догадался)
Но всё равно немного не понятно с while. Почему используется переменная t? Какими образом она относится к массиву?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
06.10.2013, 11:25     Нужно разобраться с небольшим примером #4
9 строка
Цитата Сообщение от NNN7 Посмотреть сообщение
if (h5[i]==h4[t])
Yandex
Объявления
06.10.2013, 11:25     Нужно разобраться с небольшим примером
Ответ Создать тему
Опции темы

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