Все основные электронные схемы компьютера и необходимые дополнительные устройства включаются в материнскую плату, или подключаются к ней с помощью слотов расширения. Говорить о материнской плате в отдельности от всех остальных частей компьютера не возможно -- это комплекс устройств, работающий как один организм.
Список литературы
1. Борзенко, А. IBM PC: устройство, ремонт, модернизация [Текст] / А. Борзенко // Журнал Компьютер Пресс. - 1995. - январь. - С. 52-55.
2. Аврин, С. Компьютерные артерии [Текст] / С. Аврин // Журнал Hard `n' Soft. - 1994. - №6. - С. 29-33.
3. Фролов, А.В. Аппаратное обеспечение IBM PC [Текст] / А.В. Фролов, Г.В.Фролов // Журнал ДИАЛОГ-МИФИ. - 1992. - С. 202-206.
4. Скотт Мюллер Модернизация и ремонт ПК [Текст] / Скотт Мюллер //Журнал Вильямс. - 2007. - С. 241-443.
Задание №2
Рисунок 1- Блок-схема к заданию №2
Полный исходный текст программы
/* задача про прямоугольники */
#include <stdio.h>
main()
{
int a, b, c, d;
//ввод сторон прямоугодьников
printf("Enter fore positive numbers: ");
scanf("%d%d%d%d", &a, &b, &c, &d);
/* условия выполнения задачи*/
if((c > a)&&(d > b))
printf("Yes\n");//прямоугольник со сторонами a, b вмещается в прямоугольник со сторонами c, d
else
if((c > b)&&(d > a ))
printf("No\n");//прямоугольник со сторонами a, b не вмещается в прямоугольник со сторонами c, d
getch();
return 0;
}
Задание №3
Рисунок 2- Блок-схема к заданию №3
void ch(int *, int*);//прототип функции ch
main() {
int n=0, m=0, i, j;
int a[26][26]; // объявление массива
//прозьба ввести границы матрицы, удовлетворяющие условию
while (((m==0)||(m>25))||((n==0)||(n>25))) {
printf("Enter n\n");
scanf("%i", &n);
printf("Enter m\n");
scanf("%i", &m);
printf("\n");
//заполнение и вывод исходной матрицы
for (i = 1; i <= n; i++) {
for (j = 1;j <= m; j++) {
a[i][j] = j;
printf("%3i", a[i][j]);
printf ("\n");
/*преобразование исходной матрицы с помощью функции ch */
for(j = 1; j <= (m - m %2); j++) {
if (j%2) {
for( i =1; i <= n; i++) {
ch(&a[i][j+1],&a[i][j]);
/*вывод преобразованной матрицы*/
for (j = 1; j <= m; j++) {
return 0;//выход из функции main и из всей программы
void ch(int * x, int * y)// определение функции
// замена элементов строки местами
int t;
t = *x;
*x = *y;
Задание №4
Рисунок 3- Блок-схема к заданию №4
Функция main
Функция insert - вставляет элемент в список
Функция prinList - печатает список
Функция oneLeft - возвращает 1, если в списке остался один элемент, иначе возвращает ноль
Функция delete4 - удаляет элемент из списка
// подключение стандартных заголовочных файлов
#include <stdlib.h>
// определение структуры - ячейки связного циклического списка
struct listNode{
int data;
struct listNode *nextPtr;
};
//определение типа структуры и указателя на нее
typedef struct listNode LISTNODE;
typedef LISTNODE *LISTNODEPTR;
// прототипы функций
// функция вывода списка
int prinList(LISTNODEPTR *);
// функция вставки в список
void insert(LISTNODEPTR *, int);
// функция удаления элемента списка
int delete4(LISTNODEPTR *, int);
// предсказывающая функция
int oneLeft(LISTNODEPTR);
// функция main
main () {
// определение указателя на начало списка
LISTNODEPTR startPtr= NULL;
int g;
printf("Please fill the list with INTEGER value.\nAdding is stoped by 0 value.\n");
// ввод значения для заполнения списка
scanf("%i", &g);
while (g!=0) {
// вызов функции вставки в список и передача ей адреса первого элемента списка и значения нового элемента
insert(&startPtr, g);
printf("\n __________________________________________\n");
printf("\n List IS: \n");
// выводит на экран список и проверяет возвращаемое функцией вывода списка значение
if (prinList(&startPtr)) { //если выведено успешно
// ввод значения удовлетворяющего условию типа int и условию задачи
while ((g<1)||(g>32000)) {
printf ("\nEnter number to delete: ");
// пока не остался один элемент - удалять элементы в соответствии с введенным номером
while((!oneLeft(startPtr))) {
delete4(&startPtr, g);
printf("The last element is: ");
// выводит на экрн список
prinList(&startPtr);
printf("\nPress ENTER to exit...");
else { //если вывод списка неуспешен (список пуст или поврежден)
printf("Nothing to delete\nPress ENTER to exit...");
// функция вставки в список. Вставляет принятое значение в конец списка
void insert(LISTNODEPTR *sPtr, int value){
// инициализация переменных
LISTNODEPTR newPtr, previousPtr, currentPtr;
// выделяем пмять для структуры listnode, и записываем адрес в newPtr
newPtr = malloc(sizeof(LISTNODE));
// если память выделена:
if (newPtr != NULL )
// формируем новую ячейку списка
newPtr->data = value;
newPtr->nextPtr = NULL;
// ставим указатель currentPtr на начало списка
currentPtr = *sPtr;
// если список пустой:
if (*sPtr == NULL) {
// формируем первый элемент списка
newPtr->nextPtr= *sPtr;
*sPtr=newPtr;
{ // если список не пустой
//если список состоит из одного элемента
if ((currentPtr->nextPtr) == NULL) {
// вставляем новый элемент списка и зацикливаем список
newPtr->nextPtr = *sPtr;
((*sPtr)->nextPtr) = newPtr;
else { // если список состоит из двух и более
// устанавливаем указатель на currentPtr на последний элемент циклического списка
// пока следующий за currentPtr элемент не начало списка
while (currentPtr->nextPtr != *sPtr) {
// передвигаем currentPtr по списку вперед
currentPtr=currentPtr->nextPtr;
// вставляем новый элемент списка и замыкаем список
currentPtr->nextPtr = newPtr;
newPtr->nextPtr=*sPtr;
// вывод сообщения об ошибке в случае невыделения памяти
printf("Insuficient Memory!!!!!!! ENOUGH!");
// функция печати списка. Принимает указатель списка и печатает список. Если список пуст - возвращает 0
int prinList(LISTNODEPTR *sPtr)
// определение переменной указателя
LISTNODEPTR currentPtr;
// установка указателя на начало списка
if (currentPtr == NULL) { // если список пустой
printf("List is empty. \n\n");
else { // если не пустой
// вывод значения элемента, на который указывает указатель currentPtr
printf(" %d ", currentPtr->data);
// пока следующий за currentPtr не начало списка и не конец списка
while ((currentPtr->nextPtr != *sPtr)&&(currentPtr->nextPtr != NULL)){
// перемещаем указатель currentPtr на следующий элемент
currentPtr = currentPtr -> nextPtr;
return 1;
// функция сообщающая о том , что список состоит из одного элемента
int oneLeft(LISTNODEPTR sPtr){
return (sPtr->nextPtr)==NULL;
// функция удаления элемента. Удаляет элемент и перемещает указатель, указывающий начало списка, на следующий элемент за удаленным
int delete4(LISTNODEPTR *sPtr, int n){
LISTNODEPTR previousPtr, currentPtr, tempPtr;
int i,tw=0;
// елси список пуст - выйти из функции
if ((*sPtr)==NULL)
// установка указателей
previousPtr = *sPtr;
currentPtr = (*sPtr)->nextPtr;
// если удаляем не первый элемент
if (n!=1) {
// устанавливаем указатель currentPtr на удаляемый элемент
// устанавливаем указатель previousPtr на предшествующий ему
for(i=1; i<(n-1); i++) {
previousPtr = currentPtr;
currentPtr = currentPtr->nextPtr;
else { // если удаляем первый элемент
while((currentPtr)!=(*sPtr)){
// если в списке не 2 элемента
if( ( ((*sPtr)->nextPtr)->nextPtr )!=*sPtr ) {
//исключаем currentPtr
previousPtr->nextPtr=currentPtr->nextPtr;
else {
// разрываем список
previousPtr->nextPtr=NULL;
// устанавливаем указатель начала списка на следующий за currentPtr элемент
*sPtr=currentPtr->nextPtr;
// удаляем из памяти элемент currentPtr
tempPtr = currentPtr;
free(tempPtr);
//конец
Страницы: 1, 2