Дано число N (> 0) и указатели P1 и P2 на начало и конец непустой очереди. Извлечь из очереди N начальных элементов и вывести их значения (если очередь содержит менее N элементов, то извлечь все ее элементы). Вывести также новые адреса начала и конца очереди (для пустой очереди дважды вывести nil). После извлечения элементов из очереди освобождать память, которую они занимали. Необходимо написать программу на языке С++
1) хитрый петя составил новую табличку и файл занял 2304 байта, так как юникод символ состоит из 2 байт (16 бит) составим соотношение для выяснения размера кода символа в его таблице:
4096/2304 = 16/х, отсюда
х = 9, т. е. для кодирования символа в таблице хитрого пети отводится 9 бит и всего можно накодировать 512 разных символов
2) неменее хитрый вася решил так - половина текста при 9 бит символе - 2304/9*2 = 128 симолов, он закодировал по новой таблице, для чего ему понадобилось 7 бит на символ, т. к 2 в 7 степени есть 128 а это и есть четверть от полного набора петиной таблицы.
теперь файл стал занимать 2304/2 + 7*128 = 1152 + 896 = 2048 байт,
таков размер итогового файла!
C++Выделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# include <iostream>
# include <stdlib.h>
# include <time.h>
using namespace std;
//ф-я вывод массива
int* array (int* arr, int arr_size)
{
for (int i=0; i<arr_size; i++)
cout<<"Array="<<arr[i]<<endl;
}
// ф-я поиска наибольшего эл-та
int* searchnmax(int* arr, int arr_size, int max_count)
{
// временный элемент, с которым сравниваются эл-ты массива
int n=0;
for (int j=0; j<arr_size; j++)
{
if (arr[j]<max_count)
{
if (n<arr[j]) n=arr[j];
}
}
return ;
}
void main ()
{
srand (time(NULL));
const int arr_size=10;
int* arr=new int[arr_size];
int* max;
//кол-во наибольших чисел
int k=0;
for (int i=0;i<arr_size; i++)
arr[i]=rand()%100;
array (&arr[0], arr_size);
cout<<"Please enter number less than"<<arr_size<<"of max elements you would like to print out"<<endl;
cin>>k;
searchnmax(arr,arr_size,100);
for (int i=0; i<k; i++)
max[i]=searchnmax(arr, arr_size,k(i-1));
array (max,k);
delete[] arr;
}