
ГОСЫ / практическая_часть
.docx-
Построить программу на языке С++ для работы со структурой Дата. Программа должна обеспечивать простейшие функции для работы с данными структуры: увеличение/уменьшение на 1 день, ввод значений, вывод значений. (билеты №1, №23, № 43)
-
Написать программу на языке С++, реализующую телефонный справочник. В справочнике содержится следующая информация о каждом абоненте: имя и телефон. Реализовать вывод всей информации из справочника, поиск телефона по имени, поиск имени по телефону (билеты №2, №16)
-
Написать процедуру, которая выполняет вставку компоненты по заданному ключу. (билеты №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 до 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;
}
-
Вычислить факториал числа 8.(билеты № 5)
int res = 1;
for (int i = 2; i<9; i++)
{
res = res*i;
}
-
Если элементы массивы D[1…5] равны соответственно 4, 1, 5, 3, 2, то значение выражение D[D[3]]-D[D[5]] равно? (билеты №6, )
-
Указать к какому классу относится каждый из перечисленных 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>
Хитрость заключается в том, что если мы меняем цвет стандартной ссылки, то после того, как мы перейдем по ссылке и вернемся обратно, ссылка не будет блядско фиолетовой (описывал в самом начале), т.к. это условие меняет цвет ссылки сразу в двух состояниях - в статическом и в состоянии, когда мы уже прошли по ссылке и вернулись на стартовую страницу.
Вот и вся хитрость. Не болейте.