Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ГОСЫ / практическая_часть

.docx
Скачиваний:
37
Добавлен:
05.06.2015
Размер:
69.07 Кб
Скачать
  1. Построить программу на языке С++ для работы со структурой Дата. Программа должна обеспечивать простейшие функции для работы с данными структуры: увеличение/уменьшение на 1 день, ввод значений, вывод значений. (билеты №1, №23, № 43)

  1. Написать программу на языке С++, реализующую телефонный справочник. В справочнике содержится следующая информация о каждом абоненте: имя и телефон. Реализовать вывод всей информации из справочника, поиск телефона по имени, поиск имени по телефону (билеты №2, №16)

  2. Написать процедуру, которая выполняет вставку компоненты по заданному ключу. (билеты №3, )

Реализуется с помощью hash –таблицы:

#define N 200

typedef struct{

char *key;

int value;

} Item;

int hash(const char *s, int n)

{

int h, i = 0;

for (i = 0; s[i]; ++i)

h+= s[i];// h+= (s[i] + i%3)*17+ i*5 //возможный вариант

return h%n;

}

int insert(Item *a, int n, const char *k, int v)

{

int I, h;

h = hash(k, n);

i = h;

for (; ; )

{

If (! a[i].key)

{

a[i].key = strdup(k);

a[i].value = v;

return 1;

}

if (! strcmp(a[i].key; k))

{

a[i].value= v;

return 1;

}

++i;

if (i==n)

i = 0;

if (i == h)

break;

}

}

int main ()

{

Item a[N];

int i;

for (i = 0; i < N; ++i)

{

a[i].key == NULL;

}

inser t(a, N,”x”, 1);

}

  1. На языке С++ вычислить сумму ряда целых чисел от 1 до n. (билеты№ 4, 12, 14, 21, 35)

#include <iostream.h>

void main()

{

int N,S=0,i;

cout<<"\n Vvedite N ==";

cin>>N;

for(i=1;i<=N;i++) S=S+i;

cout<<"\n Summa =="<<S;

}

  1. Вычислить факториал числа 8.(билеты № 5)

int res = 1;

for (int i = 2; i<9; i++)

{

res = res*i;

}

  1. Если элементы массивы D[1…5] равны соответственно 4, 1, 5, 3, 2, то значение выражение D[D[3]]-D[D[5]] равно? (билеты №6, )

  1. Указать к какому классу относится каждый из перечисленных IP адресов:

192.168.0.15

127.0.0.1

112.0.0.15

167.58.13.21(билеты №7, 8, 32, 41,45 )

8. Составить программу, которая формирует очередь, добавляя в неё произвольное количество компонент.(билеты № 9, 25, 26)

typedef struct tagItem{

int d;

struct tagItem *next;

} Item;

void enqueue (Item **head, Item **tail, int x)

{

Item *p = (Item*)malloc(sizeof(Item));

p->d = x;

p->next = NULL;

if (*tail)

(*tail)->next = p;

*tail = p;

if (! *head)

*head = p;

}

//вывод очереди на экран

void print_queue(Item * head)

{

for (; head = head->next)

{

printf(“%d_ ”, head->d);

printf(“\n”);

}

}

Int main()

{

Item *head =NULL;

Item *tail = NULL;

Enqueue (&head, &tail, 10);

}

9. Написать программу на языке С++ для реверса списка. Например: [1,2,3] [3,2,1]. (билеты № 10, 27)

#include <iostream.h>

void main()

{

int X[10],Y[10],N,j=1,i;

cout<<"\n Vvedite N (<10) ==";

cin>>N;

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

{

cout<<"\n X["<<i<<"] ==";

cin>>X[i];

}

for(i=N;i>0;i--)

{

Y[j]=X[i];

j++;

}

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

{

cout<<"\n X["<<i<<"] == "<<Y[i];

}

_getch();

}

10. Дан массив типа word размерностью n. Найти сумму всех элементов, не прерывающих заданного m, далее вывести на экран. (билеты № 11, 17)

11. Построить программу на языке С++ для работы со структурами – строками. Структура должна включать следующие поля: массив для хранения строки, его длину, время создания строки. Программа должна обеспечивать простейшие функции для работы с данными структуры: изменение строки, вывод строки, нахождение подстроки в строке. (,bktns #13, 34)

#include <time.h>

#include <string.h>

#include <iostream>

class String

{

char *s;

int n;

time_t t;

string & operator =(const string &x);

string (const String &x);

public:

string(): s(NULL), n(0), t(time(NULL)) {}

string(const char *str = “ “)

: s( strdup(str))

, n (strlen(str))

, t (time(NULL))

{}

~string() {free(s);}

int find_substr(const string &x)

{

char *p = strstr(s, x.s);

if (!p) return -1;

return p.s;

}

const char * get_str()

{

return s;

}

String &operator +=(const string &x)

{

int new_n = n + x.n;

char *new_s = malloc (new_n + 1);

strcpy(new_s, s);

strcut(new_s, x.s);

free(s);

s = new_s;

n = new_n;

return *this;

}

}

std:: ostream &operator <<(std:: ostream &out, const string &x)

{

out << x.get_str();

}

int main()

{

String a (“123”);

Cout << a;

String b(“345”);

a+=b;// изменение строки

}

12. Информация о студенте включает: ФИО, порядковый номер, название факультета, номер специальности, дату рождения, адрес проживания, телефон. Информация о студентах хранится в виде записей в массиве. Число записей в массиве 100. Отсортировать всех студентов в алфавитном порядке. Обосновать выбор алгоритма сортировки. (билет№ 15, 22 )

#include <time.h>

typedef struct {

char fio[80];

int n;

char facult[20];

int spec;

struct tm birthday;

char addr[200];

char phone[20];

} Stud;

void sort_stud(Stud *a, int n)

{

int f= 1;

int i;

while (f){

f = 0;

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

{

if (strcmp(a[i].fio, a[i+1].fio) >0)

{

Stud t = a[i];

a[i] = a[i+1];

a[i+1] = t;

f = 1;

}

}

}

}

13. Написать HTML код для отображения в браузере таблицы:

1 2

3 4

5 6 7

Билет№ 18, 19

<html>

<head>

<title>Задание № 6</title>

</head>

<body>

<table border = 5>

<tr>

<td>1</td>

<td>2</td>

</tr>

<tr>

<td > </td>

<td > 3</td>

<td >4</td>

</tr>

<tr>

<td >5</td>

<td >6</td>

<td >7</td>

</tr>

</body>

</html>

13. Написать программу на языке С++ для удаления из списка целых всех элементов, равных 0. Например: [1,0,2,0,3,0] [1,2,3]. Билет№ 20, 31

#include <iostream.h>

void main()

{

int X[10],Y[10],N,j=0,i;

cout<<"\n Vvedite N (<10) ==";

cin>>N;

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

{

cout<<"\n X["<<i<<"] ==";

cin>>X[i];

}

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

{

if (X[i]!=0)

{

j++;

Y[j]=X[i];

}

}

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

{

cout<<"\n X["<<i<<"] == "<<Y[i];

}

}

14. Построить программу на языке С++ для работы со структурами – квадратными матрицами. Структура должна включать соответствующие поля: порядок, набор коэффициентов. Программа должна обеспечивать простейшие функции для работы с данными структуры: ввод матрицы, транспонирование матрицы, вывод матрицы в удобной форме. Билет№ 24,

#include <iostream.h> #include <conio.h> class matrix { int n,i,j,**a; public: matrix (); ~matrix(){}; void vivod(void); void transp(void); }; void matrix:: vvod() { cout<<"Vvedite poryadok matrici:"<<endl; cin>>n; a=new int*[n]; for (i=0; i<n; i++) a[i]=new int[n]; cout<<"Vvedite elementi massiva A:\n"<<"\n"; for (i=0; i<n; i++) { for (j=0; j<n; j++) cin>>a[i][j]; } cout<<"\n"; } void matrix::vivod() { for (i=0; i<n; i++) { for (j=0; j<n; j++) cout<<a[i][j]<<" "; cout<<"\n"; } cout<<"\n"; return; } void matrix::transp() { for (j=0; j<n; j++) { for (i=0; i<n; i++) cout<<a[i][j]<<" "; cout<<"\n"; } cout<<"\n"; return; } main () { matrix mat;

mat.vvod mat.vivod(); mat.transp(); cin.get(); return (0); }

15. Найти в массиве максимальный элемент и его индекс. Вывести на печать. Билет № 28, 44

Int num = 0;

Word arr[n];

Int max = arr[0];

For (int i = 0; i<n; i++)

{

if (arr[i]>max)

{

max = arr[i];

num = i;

}

}

printf(max, ‘/n’);

printf( num, ‘/n’);

16. Рассчитать сетевую маску для IP адреса 192.168.0.37/28. Указать сколько компьютеров может входить в такую подсеть. Написать 2 зарезервированных адреса у которых в поле номер компьютера расположены все 0 или все 1. Билет№ 29, 30, 42

17. Занести в BL наименьшее число из отрезка от 2 до К на которое не делится число N , при условии что 2K<N. Билет № 33, 38

IN 1, AX //ввод N

MOV N, AX //MOV BX, AX //копирование значения N в переменную или в регистр BX

RAR AX // сдвиг вправо на 1 бит = деление N на два

DEC AX // декримент результата: k = (N/2) – 1

MOV k, AX // копирование результата в переменную// MOV CX, AX

MOV AX, BX// MOV AX, N// сохранить в AX значение N

MOV BX, CX // MOV BX, k// сохранение в BX значения k

{в резудьтате: CX – свободен, в AX лежит N, BX лежит значение K}

MOV CX, 1// заносим делитель в CX

L1:

INC CX // сразу инкриментируем, т.к. отрезок начинается с 2

DIV CX //делим AX(N) на CX// результат сохранится в AX, остаток вDX

CMP DX, 0 // сравниваем остаток с нулем

JZ L1// если поделилось нацело, то повторяем все со следующим делителем

// иначе счиатем, что делитель найден и заносим его в результат

MOV BX, CX // сохраняем делитель в BX = BH +BL

MOV BH, 0 // заполняем первые восемь бит BX нулями, результат должен остаться в BL

MOV AX, BX

OUT 2, AX // вывод результата)

18. Составить программу, которая формирует стек, добавляя в него произвольное количество компонент. Билет№ 36, 37

19. Подсчитать сколько раз в массиве встречается заданный элемент N. Вывести количество данных вхождений. Билет№ 39

20. Написать код css файла в котором при помощи псевдоклассов описывается поведение ссылок отличное от стандартного. Билет№ 40

По порядку с примерами.

Для того, чтобы ссылка отображалась, обходимо заключить ссылку в тег <a></a> и поместить в тело нашей страницы (<body></body>). Получается что-то типа того:

<html>

<head>

</head>

<body>

<a href="#">Я сдам гос</a>

</body>

</html>

В браузере мы видим следующее:

Это стандартная HTML ссылка. Отличительные черты - она определенного синего цвета, подчеркнутая, размер - 16 px., шрифт Times New Roman.

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

Стандартная ссылка имеет свое поведение. Если мы пройдем по ссылке, а потом решим вернутся на первоначальную страницу, то она становится фиолетовой:

Такое поведение - стандартное поведение ссылки. Больше никаких поведений у стандартной ссылки нет. Примеры работы стандартных ссылок можете посмотреть на Яндексе. Лебедев очень любит стандартные ссылки и считает их единственно правильными.

Для того, чтобы сделать нестандартную ссылку с нестандартным поведением, необходимо использовать css псевдоклассы.

Начнем с того, что ссылка имеет три основных состояния - статическое состояние, состояние при наведении курсором на ссылку и состояние при нажатии на ссылку.

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

Чтобы изменит стандартное поведение ссылки в css используются два основных атрибута - hover (при наведении курсором на ссылку) и active (при нажатии на ссылку).

На примерах.

<style>

a{

color: #000; /* Цвет ссылок */

}

</style>

Данный псевдокласс меняет цвет нашей ссылки на черный. Он представлен для общего понимания и сейчас он нам не нужен, т.к. он описывает вид статичной ссылки, а нам нужно изменить ее поведение.

Добавим в наш псевдокласс условие hover либо active. В принципе насрать, какое это будет условие, стандартное поведение ссылки уже изменится.

<style>

a: hover{

color: #000; /* Цвет ссылок */

}

</style>

Теперь наша ссылка будет менять цвет при наведении курсором. Это - нестандартное поведение ссылки, т.к. стандартная ссылка такой ереси не делает.

Теперь напишем общий код для нашей страницы:

<html>

<head>

<style>

a: hover {

color: #000; /* Цвет ссылок */

}

</style>

</head>

<body>

<a href="#">Я сдам гос</a>

</body>

</html>

Не забываем поместить наш css код в тег <head>. На этом можно было и закончить, но я обещал описать небольшую хитрость.

Вернемся к примеру, где я просто поменял цвет статической ссылки:

<style>

a{

color: #000; /* Цвет ссылок */

}

</style>

Хитрость заключается в том, что если мы меняем цвет стандартной ссылки, то после того, как мы перейдем по ссылке и вернемся обратно, ссылка не будет блядско фиолетовой (описывал в самом начале), т.к. это условие меняет цвет ссылки сразу в двух состояниях - в статическом и в состоянии, когда мы уже прошли по ссылке и вернулись на стартовую страницу.

Вот и вся хитрость. Не болейте.

Соседние файлы в папке ГОСЫ