Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум_4.doc
Скачиваний:
13
Добавлен:
16.09.2019
Размер:
754.69 Кб
Скачать

5. Логические схемы

Задачи

  1. Нарисовать схему одноразрядного сумматора Z=X+Y с учетом переноса Р. Указание: изобразить все четыре возможных варианта (состояния) сумматора.

Решение.

X1

X2

Si

Pi

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

  1. Нарисовать схему трехразрядного сумматора с учетом переносов. Указание: изобразить все возможные варианты (состояния) сумматора.

  2. Нарисовать схему и найти логическую функцию, эквивалентную "Черному ящику", если на входе "Черного ящика" имеем x=100 (истина, ложь, ложь), y=010 (ложь, истина, ложь), а на выходе z=000 (ложь, ложь, ложь). Указание: рассмотреть выходы, соответствующие каждому "разряду" входов.

  3. Нарисовать схему и найти логическую функцию, эквивалентную "Черному ящику", если на входе "Черного ящика" имеем x=0100, y=0101, а на выходе z=0000. Указание: рассмотреть выходы для каждого "разряда" (1 – истина, 0 – ложь).

  4. Нарисовать схему и найти логическую функцию, эквивалентную "Черному ящику", если на входе "Черного ящика" имеем x=10011, y=01011, а на выходе z=01110. Указание: рассмотреть выходы для каждого "разряда" (1 – истина, 0 – ложь).

  5. Определить логическую функцию, соответствующую схеме (знак логической операции в прямоугольнике указывает на то, что действует соответствующая логическая схемаинвертор, дизъюнктор или конъюнктор):

Указание: написать на каждой "свободной" стрелке соответствующее логическое выражение.

  1. Определите логическую функцию, реализуемую следующей логической схемой:

Указание: написать на каждой "свободной" стрелке соответствующее ему выражение.

  1. Построить логическую схему для функции . Указание: последовательность построения – два инвертора, затем конъюнктор, затем дизъюнктор.

  2. Построить логическую схему для функции . Указание: последовательность построения ((конъюнкторинвертор) – (инвертордизъюнктор)) – конъюнктор.

  3. Построить наиболее экономную логическую схему для функции . Указание: перед построением схемы нужно упростить выражение.

6. Разработка алгоритмов

1. Есть массив целых чисел, напишите алгоритм нахождения суммы его четных чисел.

Решение.

1. Инициализация: A[], n, i = 0, sum = 0.

2. Если (A[i] % 2 = 0) , то sum = sum +A[i]

3. i = i + 1

4. Если ( i < n)переход к п. 2.

5. if (sum = 0) печать: таких чисел нет, переход к п.7.

6. Печать sum.

7. Конец алгоритма.

2. Есть массив целых чисел, составить алгоритм нахождения суммы трех его

чисел кратных 5.

Решение.

1. Инициализация: A[], n, i = 0, sum = 0, к = 0.

2. Если (A[i] % 5 = 0) {sum = sum +A[i], k++, if (k = 3) переход к п. 6}

3. i = i + 1

4. Если ( i < n)переход к п. 2.

5. if (k! = 3) печать: таких трех чисел нет, переход к п.7.

6. Печать sum.

7. Конец алгоритма.

3. Есть массив целых чисел, составить алгоритм нахождения суммы его

нечетных и отрицательных чисел.

Решение.

1. Инициализация: A[], n, i=0, sum=0.

2. Если ( (A[i] % 2 != 0) & ( A[i] < 0) ) sum = Sum+ A[i].

3. . i = i + 1.

4. Если ( i< n) переход к п. 2

5. Если ((sum= 0) печать - таких чисел нет, переход к п.7

6. Печать sum.

7. Конец алгоритма.

4. Есть массив целых чисел, составить алгоритм нахождения суммы его чисел,

удовлетворяющих условию | ai| < i^2.

Решение.

1. Инициализация: A[], n, i=0, sum=0.

2. Если (A[i] < 0) A[i] = -A[i].

3. Если ( A[i] <= i*i) sum = sum + A[i].

4. i = i + 1.

5. Если (i < n) переход к п. 2

6. Если (sum = 0) печать: таких чисел нет, переход к п.8.

7. Печать sum.

8. Конец алгоритма.

5. Есть массив целых чисел, напишите алгоритм нахождения суммы его четных

чисел и нечетных членов.

Решение.

1. Инициализация: A[], n, i=0, sum1=0, sum1=0.

2. Если (A[i] % 2=0) sum1=sum1+A[i]. // сумма четных чисел

3. Если (i %2!=0) sum2=sum2 + A[i]. //сумма нечетных членов

4. i = i + 1.

5. Если (i<n) переход к п. 2

6. Печать sum1 и sum2 .

8. Конец алгоритма

6. Есть массив целых чисел, напишите алгоритм нахождения числа и суммы тех

его членов, которые делятся на 5 и не делятся на 7.

Решение.

1. Инициализация: A[], n, i=0, sum=0.

2. Если ((A[i] % 5 = 0) & (A[i] % 7 !=0)) {sum=sum +A[i], k++}

3. i = i + 1.

4. Если (i<n) переход к п. 2

5. Если (sum = 0) печать: таких чисел нет, переход к п.7.

6. Печать sum, k. // k – число таких чисел

7. Конец алгоритма

7. Есть массив целых чисел, напишите алгоритм нахождения произведения

членов массива кратных числу р.

Решение.

1. Инициализация: A[], n, i = 0, multy = 1.

2. Если (A[i] % P = 0) multy = multy*A[i].

3. i = i+1

4. Если ( i< n) переход к п. 2

5. Если (multy = 1) печать: таких чисел нет, переход к п.7.

6. Печать multy.

7. Конец алгоритма.

8. Есть массив целых чисел. Напишите алгоритм замены в нем нулями членов, модуль которых при делении на р дает в остатке q.

Решение.

1. Инициализация: A[], n, i = 0, sum = 0, p, q.

2. Если (A[i] < 0) B[i] = -A[i] .

3. B[i] = A[i] .

4. Если (B[i] % p = q) A[i] = 0.

5. i = i + 1

6. Если ( i < n)переход к п. 2.

7. Печать A[].

8. Конец алгоритма.

7. Разработка простых кодов на языке С++

Задачи

1. Задан массив А[10] найти сумму его четных членов. Составить код

программы.

Код программы

#include "stdafx.h"

#include <iostream>

using namespace std;

main()

{

int i,n;

float s=0.0,A[9];

cout<<"Input n= \n";

cin>>n;

cout<<" Enter items of array A:\n";

for(i=0;i<=n-1;i++) cin>>A[i];

for(i=0;i<=n-1;i=i+2) s=s+A[i];

cout<<" Sum of even members= "<<s;

return 0;

}

2. Даны натуральные числа m,n. Получить все их общие делители.

Составить код программы.

Код программы

#include "stdafx.h"

#include <math.h>

#include <iostream>

using namespace std;

main()

{

int i,n,m,max;

cout <<"Input n= ";

cin>>n;

cout<<"Input m = ";

cin>>m;

max=n>m?n:m;

cout<<" common multiple: \n";

for(i=1;i<=max;i++)

{

if(((m%i==0)&&(n%i==0))

cin>>i;

}

return 0;

}

3. Даны целые положительные числа а1,а2,...аn. Получить новую

последовательность, выбросив из исходной все члены со значением

max(a1,a2,...,an).

Код программы

#include "stdafx.h"

#include <iostream>

using namespace std;

main()

{

int i,n,A[10],B[10],max=0,k=0;

cout<<"Input n= \n";

cin>>n;

cout<<Input array A: \n";

for(i=0;i<=n-1;i++)

{

cin>>A[i];

if (A[i]>max)max=A[i];

}

for(i=0;i<=n-1;i++)

{

if (A[i]!=max)

{

B[k]=A[i];

k++;

}

}

cout<<New array: \n";

for(i=0;i<=k-1;i++) cout<<B[i];

return 0;

}

4. Составить код программы ввода элементов массива и его распечатка в

обратном порядке.

5. Составить код программы определения максимального и минимального

элементов массива и их номеров в нем.

6. Составить код программы вычисления факториала n!

7. Даны целые числа а1,а2,...аn (в этой последовательности могут быть

повторяющиеся члены). Составить код программы вычисления, сколько

чисел входит в последовательность более чем по одному разу Выяснить,

имеется ли в последовательности хотя бы одна пара совпадающих

чисел.

8. Составить код программы разложения целого числа N>=11 на сумму

трех биноминальных коэффициентов.

33