МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение высшего профессионального образования
Московский институт электроники и математики
Кафедра “Вычислительные системы и сети”
Домашнее задание
по дисциплине “Программирование на языке высокого уровня”
Составила:
Ст. преподаватель Беликова М.А.
Выполнил:
Студент группы С-21
Москва 2009
Содержание
Постановка задачи 2
Связь 2
Внешняя спецификация 2
Алгоритм решения задачи 4
Тестовые примеры 6
Постановка задачи
Дано. Одномерные массивы A и B.
Требуется. Сформировать одномерный массив C, содержащий элементы, присутствующие в нескольких экземплярах либо только в массиве А, либо только в массиве В.Элементы в массиве С не должны повторяться. Дополнительный массив не использовать
При: 1) Элементы массивов – целые числа.
2) Количество элементов в исходных массивах не более 20 в каждом.
Связь
Присвоим начальные значения переменным:
-
I ( номер элемента в массиве A) - 1;
-
Nc ( номер элемента в массиве С) – 0.
-
Flag значение “истина”
Для каждого элемента массива A выполним следующие действия.
Присвоим начальные значения переменным:
-
J (номер элемента в массиве B) – 1.
Для каждого элемента массива А проверим условие. Если A[i]=А[j] и I<>J , то Flag значение “ложь”.
Если A[i]<>А[j], то перейдем к следующему элементу массива A увеличив значение переменной J:=J+1.
Если A[i]=B[j], то Flag значение “истина”. Значит A[i] не является претендентом для занесения в массив C.
Если в массиве C еще нет элементов, т.е Nc=0, то занесем это значение в массив Nc:=Nc+1, C[Nc]:=A[i].
Если в массиве C уже есть элементы, т.е. Nc>0, то проверим, есть ли в нем значения, равные A[i]. Для этого присвоим переменной Flag1 значение “истина”, а переменной J (номер элемента в массиве C) значение -1. Если С[j]=A[i], то переменная Flag1 становится равной “ложь” и просмотр массива C заканчивается. Если С[j]<>A[i] и J<Nc, то переходим к следующему элементу массива J:=J+1.
После завершения просмотра массива C проверим условие. Если Flag1=“истина” (в массиве C отсутствует значение, равное A[i]), то заносим это значение в массив Nc:=Nc+1, C[Nc]:=A[i].
Если I<Na (где Na- количество элементов массива A), то I:=I+1, в противном случае выводим результаты работы программы.
Внешняя спецификация
Назначение. Сформировать одномерный массив C, содержащий элементы, присутствующие в нескольких экземплярах либо только в массиве А, либо только в массиве В.
Входные данные.
na – количество элементов массива A (целое).
A1,…Ana – значения элементов массива A (целые).
nb – количество элементов массива A (целое).
B1,…Anb – значения элементов массива A (целые).
Выходные данные.
1) В массиве A есть элементы, удовлетворяющие условию.
Домашнее задание
Шилак Евгений
Группа С-21
Вариант 25
Сформировать одномерный массив C, содержащий элементы, присутствующие в нескольких экземплярах либо только в массиве А, либо только в массиве В.
Число элементов массива A = <na>
Массив A
<A1> <A2> … <Ana>
Число элементов массива B = <nb>
Массив B
<B1> <B2> … <Bnb>
Число элементов массива C = <nc>
Массив C
<C1> <C2> … <Cnc>
2) В массиве A нет элементов, удовлетворяющих условию.
Домашнее задание
Шилак Евгений
Группа С-21
Вариант 25
Сформировать одномерный массив C, содержащий элементы, присутствующие в нескольких экземплярах либо только в массиве А, либо только в массиве В.
Число элементов массива A = <na>
Массив A
<A1> <A2> … <Ana>
Число элементов массива B = <nb>
Массив B
<B1> <B2> … <Bnb>
В массиве A нет элементов, удовлетворяющих условию!
Алгоритм решения задачи
Алгоритм “Формирование массива”
Внутренние переменные:
nA: цел.
nB: цел.
nC: цел.
A, B, C : : массив [1..20]:цел.
Flag, flag1: логическая переменная;
Начало
Вывод (‘Домашняя работа’)
Вывод (‘Шилак Евгений’)
Вывод (‘Группа С-21’)
Вывод (‘Вариант 25’)
Вывод (‘Сформировать одномерный массив C, содержащий элементы, присутствующие в нескольких экземплярах либо только в массиве А, либо только в массиве В.’)
Ввод (A,na,’A’)
Ввод (B,nb, ’B ’)
Формирование(na,nb, A,В,nc,С)
Формирование(nb,nа, В,А,nc,С)
Вывод (A,na, ’A ’)
Вывод (B,nb, ’B ’)
Вывод (C,nc, ’C ’)
Конец
Алгоритм “Ввод ”
Входные переменные:
Name: символ;
Выходные переменные:
n : цел. {количество элементов во вводимом массиве }
Mas [1..20] : массива : цел
Внутренние переменные:
i : цел.
Начало
Цикл
Вывод (‘Введите число элементов массива ’,name,’ <=20’)
Ввод(n)
Кцикла-до (n>1) и (n<=20)
Вывод (‘Элементы массива ’,name,’ – целые числа’)
Цикл-для I от 1 до n
Вывод (name,’[',i,']=')
Ввод (Mas[i])
Кцикла
Конец
Алгоритм “Вывод ”
Входные переменные:
n : цел. {количество элементов в выводимом массиве}
Mas [1..20] : массива : цел {Выводимый массив}
Name : символ
Внутренние переменные:
i: цел.
Начало
Если n>=1 то
Вывод (‘Число элементов массива ’,name,’ = ’, n);
Вывод (‘Массив ’,name);
Цикл-для i от 1 до n
Вывод (Mas[i]:4)
Кцикла
Иначе
Вывод (‘Нет элементов, удовлетворяющих условию!’)
Кесли
Конец
Алгоритм “Формирование ”
Входные переменные:
N1 : цел. {количество элементов массива A}
N2 : цел. {количество элементов массива B}
M1 [1..20] : массива : цел {массив A}
M2 [1..20] : массива : цел {массив B}
Выходные переменные:
nC: цел. {количество элементов массива C}
C [1..20] : массива : цел {массив C}
Внутренние переменные:
i: цел.
j: цел.
Начало
Цикл–для i:=1 до n1
Flag:=”Истина”
j:=1
Цикл - пока i<n1 и Flag:=”Истина”
Если (M1[i]=M1[j]) и (I<>J) то
Flag:=”Ложь”
Иначе:
j:=j+1
Кесли
Цикл - для j от 1 до n2
Если (M1[i]=M2[j]) то
Flag:=”Истина”
Если Flag:=”Ложь” то
Если Nc=0 то {Массив C пока пуст}
Nc:=Nc+1
C[Nc]:=М1[i]
Иначе {Массив C не пуст}
Flag:=”Истина”
J:=1
Цикл–пока (J<=Nc) и Flag:=”Истина”
Если A[i]=C[j] то Flag1:=”Ложь”
Иначе J:=J+1
Кесли
Кцикл
Если Flag1:=”Истина” то
Nc:=Nc+1
C[Nc]:=A[i]
Кесли
Кесли
Кесли
Кцикл
Кцикл
Конец
Тестовые примеры
|
Исходные данные |
Результат |
|
Тест 1 Число элементов в массиве А – 6 Массив А: 1 1 6 6 3 4 Число элементов в массиве В – 6 Массив В: -8 –8 6 3 3 7 |
Число элементов в массиве С – 2 Массив С: 1 -8 |
|
Тест 2 Число элементов в массиве А – 4 Массив А: 1 2 2 3 Число элементов в массиве В – 4 Массив В: 2 3 3 9 |
В массиве А нет элементов, удовлетворяющих условию! |
