p align="left">Все основные электронные схемы компьютера и необходимые дополнительные устройства включаются в материнскую плату, или подключаются к ней с помощью слотов расширения. Говорить о материнской плате в отдельности от всех остальных частей компьютера не возможно -- это комплекс устройств, работающий как один организм. Список литературы 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
|