Рефераты. Архитектура материнских плат

Все основные электронные схемы компьютера и необходимые дополнительные устройства включаются в материнскую плату, или подключаются к ней с помощью слотов расширения. Говорить о материнской плате в отдельности от всех остальных частей компьютера не возможно -- это комплекс устройств, работающий как один организм.

Список литературы

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("Yes\n");//прямоугольник со сторонами a, b вмещается в прямоугольник со сторонами c, d

else

printf("No\n");//прямоугольник со сторонами a, b не вмещается в прямоугольник со сторонами c, d

getch();

return 0;

}

Задание №3

Рисунок 2- Блок-схема к заданию №3

Полный исходный текст программы

#include <stdio.h>

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");

}

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 (i = 1; i <= n; i++) {

for (j = 1; j <= m; j++) {

printf("%3i", a[i][j]);

}

printf ("\n");

}

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 <stdio.h>

#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);

scanf("%i", &g);

}

printf("\n __________________________________________\n");

printf("\n List IS: \n");

// выводит на экран список и проверяет возвращаемое функцией вывода списка значение

if (prinList(&startPtr)) { //если выведено успешно

// ввод значения удовлетворяющего условию типа int и условию задачи

while ((g<1)||(g>32000)) {

printf ("\nEnter number to delete: ");

scanf("%i", &g);

}

printf("\n");

// пока не остался один элемент - удалять элементы в соответствии с введенным номером

while((!oneLeft(startPtr))) {

delete4(&startPtr, g);

};

printf("The last element is: ");

// выводит на экрн список

prinList(&startPtr);

printf("\nPress ENTER to exit...");

getch();

}

else { //если вывод списка неуспешен (список пуст или поврежден)

printf("Nothing to delete\nPress ENTER to exit...");

getch();

}

return 0;

}

// функция вставки в список. Вставляет принятое значение в конец списка

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;

}

else

{ // если список не пустой

//если список состоит из одного элемента

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;

}

}

}

// вывод сообщения об ошибке в случае невыделения памяти

else

printf("Insuficient Memory!!!!!!! ENOUGH!");

}

// функция печати списка. Принимает указатель списка и печатает список. Если список пуст - возвращает 0

int prinList(LISTNODEPTR *sPtr)

{

// определение переменной указателя

LISTNODEPTR currentPtr;

// установка указателя на начало списка

currentPtr = *sPtr;

if (currentPtr == NULL) { // если список пустой

printf("List is empty. \n\n");

return 0;

}

else { // если не пустой

// вывод значения элемента, на который указывает указатель currentPtr

printf(" %d ", currentPtr->data);

// пока следующий за currentPtr не начало списка и не конец списка

while ((currentPtr->nextPtr != *sPtr)&&(currentPtr->nextPtr != NULL)){

// перемещаем указатель currentPtr на следующий элемент

currentPtr = currentPtr -> nextPtr;

// вывод значения элемента, на который указывает указатель currentPtr

printf(" %d ", currentPtr->data);

}

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)

return 0;

// установка указателей

previousPtr = *sPtr;

currentPtr = (*sPtr)->nextPtr;

// если удаляем не первый элемент

if (n!=1) {

// устанавливаем указатель currentPtr на удаляемый элемент

// устанавливаем указатель previousPtr на предшествующий ему

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

previousPtr = currentPtr;

currentPtr = currentPtr->nextPtr;

}

}

else { // если удаляем первый элемент

// устанавливаем указатель currentPtr на удаляемый элемент

// устанавливаем указатель previousPtr на предшествующий ему

while((currentPtr)!=(*sPtr)){

previousPtr = currentPtr;

currentPtr = currentPtr->nextPtr;

}

};

// если в списке не 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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.