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

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

Войти
Регистрация
Восстановить пароль
 
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
#1

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

06.10.2013, 10:22. Просмотров 282. Ответов 3
Метки нет (Все метки)

Здравствуйте . Есть такая программа , где два массива записываются в 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?

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

Не могу разобраться с примером из книги Липпмана - C++
#include &lt;iostream&gt; #include &lt;string&gt; using std::string; string &amp; shorterString(string &amp;s1, string &amp;s2) { auto &amp;r =...

Нужно разобраться - C++
Прошу помощи. Расскажите пожалуйста по пунктам где и что делает программа, что за функция.Заранее благодарен. #include &lt;stdio.h&gt; int...

Нужно разобраться с кодом - C++
что делается в 6 строке и с 44-60? #include &lt;iostream&gt;; #include &lt;string.h&gt;; using namespace std; 6 char **AddPtr (char...

нужно разобраться в коде - C++
Определить минимальный положительный элемент главной диагонали матрицы А(5,5) и заменить все элементы строки и столбца,в котором он...

Нужно разобраться в коде - C++
Господа, я новичок. Хочу разобраться в коде. Задача была изменить размер консольного окна. И, поискав на форуме, нашел ниже написанный...

Нужно разобраться с информатикой!!!!! - C++
Задание 1. Составить алгоритм в виде блок-схемы и програму для вычисления арифметического выражения и вывода полученного результата. ВВод...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.10.2013, 10:52 #2
while тоже цикл, почему тут вперемешку два вида цикла, нужно спрашивать у автора этого кода.
Алгоритм такой:
-берем элемент массива h4 (цикл while)
-в цикле сравниваем со всеми элементами массива h5 (первый цикл for)
-если есть совпадение, в еще одном цикле сравниваем совпавший элемент со всеми элементами массива h3 (второй цикл for)
-если совпавшие элементы h4 и h5 отсутствуют в h3, записать элемент в h3
Переменная р используется как флаг
0
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
06.10.2013, 10:58  [ТС] #3
Цитата Сообщение от kazak Посмотреть сообщение
while тоже цикл, почему тут вперемешку два вида цикла, нужно спрашивать у автора этого кода.
Алгоритм такой:
-берем элемент массива h4 (цикл while)
-в цикле сравниваем со всеми элементами массива h5 (первый цикл for)
-если есть совпадение, в еще одном цикле сравниваем совпавший элемент со всеми элементами массива h3 (второй цикл for)
-если совпавшие элементы h4 и h5 отсутствуют в h3, записать элемент в h3
Переменная р используется как флаг
Спасибо за ответ . Про флаг уже сам догадался)
Но всё равно немного не понятно с while. Почему используется переменная t? Какими образом она относится к массиву?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.10.2013, 11:25 #4
9 строка
Цитата Сообщение от NNN7 Посмотреть сообщение
if (h5[i]==h4[t])
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2013, 11:25
Привет! Вот еще темы с ответами:

Нужно разобраться со стеком - C++
Доброго времени суток... Помогите, пожалуйста, разобраться со стеком. Задание следующие : &quot;написать программу для перестановки...

Нужно разобраться с циклом if - C++
Всем привет, помогите разобраться. Дано задание: Найти минимальный положительный элемент массива (N) и количество четных элементов. ...

Нужно разобраться в коде - C++
Откомментируйте пожалуйста по строчке ,кто ,что может,а то не могу разобраться,это программа обход бинарного дерева в глубину справа налево...

Нужно разобраться с указателями - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; //подсчет кол-ва согласных в слове int cntsogl(char *s) { int n=0;...


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

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

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