5. Логические схемы
Задачи
Нарисовать схему одноразрядного сумматора Z=X+Y с учетом переноса Р. Указание: изобразить все четыре возможных варианта (состояния) сумматора.
Решение.
-
X1
X2
Si
Pi
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
Нарисовать схему трехразрядного сумматора с учетом переносов. Указание: изобразить все возможные варианты (состояния) сумматора.
Нарисовать схему и найти логическую функцию, эквивалентную "Черному ящику", если на входе "Черного ящика" имеем x=100 (истина, ложь, ложь), y=010 (ложь, истина, ложь), а на выходе z=000 (ложь, ложь, ложь). Указание: рассмотреть выходы, соответствующие каждому "разряду" входов.
Нарисовать схему и найти логическую функцию, эквивалентную "Черному ящику", если на входе "Черного ящика" имеем x=0100, y=0101, а на выходе z=0000. Указание: рассмотреть выходы для каждого "разряда" (1 – истина, 0 – ложь).
Нарисовать схему и найти логическую функцию, эквивалентную "Черному ящику", если на входе "Черного ящика" имеем x=10011, y=01011, а на выходе z=01110. Указание: рассмотреть выходы для каждого "разряда" (1 – истина, 0 – ложь).
Определить логическую функцию, соответствующую схеме (знак логической операции в прямоугольнике указывает на то, что действует соответствующая логическая схема – инвертор, дизъюнктор или конъюнктор):
Указание: написать на каждой "свободной" стрелке соответствующее логическое выражение.
Определите логическую функцию, реализуемую следующей логической схемой:
Указание: написать на каждой "свободной" стрелке соответствующее ему выражение.
Построить логическую схему для функции . Указание: последовательность построения – два инвертора, затем конъюнктор, затем дизъюнктор.
Построить логическую схему для функции . Указание: последовательность построения ((конъюнктор – инвертор) – (инвертор – дизъюнктор)) – конъюнктор.
Построить наиболее экономную логическую схему для функции . Указание: перед построением схемы нужно упростить выражение.
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 на сумму
трех биноминальных коэффициентов.