
- •1 Составить программу на Asm для очистки экрана
- •2 Cоставить прграмму на Asm для преобразования строчных букв в прописные
- •3 Сост . Прогр . На Asm для нахождения в заданном массиве номера первого числа, равного нулю
- •4 Написать на Asm программу для сохранения текстового экрана в буфере и последующей записи буфера в файл
- •5 В области памяти, адресуемой регистром si нах-ся цепочка семибитных кодов символов….
- •6 Перевод из одной системы исчисления в другую
- •1 Розробити консольну програму, яка відкриває файл порціями по 4Кб та відображае його зміст в вікні. Для роботи з файлами викорастати Win32 Api
- •6 Программа, демонстрирующая синхронизацию доступа к глобальному массиву с пом. Мютексов
- •7 Написать фрагмент программы, которая показывает синхронизацию процессов с помощью семофоров
- •9 Файлы, отображаемые в памяти
- •10 Фрагмент программы для, демонстрирующий обмен данными, с помощью сообщения wm_copydata ( фрагмент выделен жирным шрифтом)
- •ОПиАя и ооп
- •12.4 Дан файл символов построить частотный словарь, представив его виде бинарного дерева поиска и составить линейно скобочную запись.
- •13.4 Дан файл, компоненты которого являются действительными числами. Сформировать линейный список и
- •14.4 // Дан файл символов. Сформировать линейный список. Просмотреть линейный список из головы и составить из
- •15.4 Дан текстовый файл, состоящий только из латинских букв. Необходимо инвертировать каждую строку файла, используя стек, и записать полученные строки в другой файл.
- •16.4 Представить многочлен в виде линейного списка. Написать прогу кот выполняет сложение многочленов
- •17.4 Написать процедуру, которая осуществляет сложение целых чисел произвольной длины(двухсвязный список)
- •22.4 Дан файл целых чисел компоненты которого различны, сформировать циклический линейный список, задать число n и удалять n-ый элемент в списке пока не останется 1
- •23.4 // Вычислить значение арифметического выражения, преобразовав его в постфиксную форму. Предусмотреть со скобками и без скобок.(со стеком)
- •24.4 // Сформировать числовой файл и отсортировать его компоненты с помощью двух стеков.
- •25.4 Дан файл символов сформировать дерево поиска описав процедуру удаления элнмента из дерева и функцию подсчета листьев в дереве.
- •35.4 Вычислить значение арифметического выражения, преобразовав его в постфиксную форму. Предусмотреть со скобками и без скобок.(со стеком)
- •44.4 Написать процедуру которая обращает данный список
- •45.4 Написать процедуру которая по линейно скобочной записи строит бинарное дерево поиска
- •46.4) Написать процедуру для подсчета листьев в бинарном дереве поиска
- •9. Побудувати параметризований клас черги.
9 Файлы, отображаемые в памяти
Сервер
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
int main ( )
{
HANDLE hMapping;
LPSTR lpData;
LPCSTR lpStr = "Hello world!";
hMapping=CreateFileMapping (HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x100,"Share");
if ( hMapping == NULL )
{
cout << "Сервер: Не могу создать файл!\n";
return 1;
}
lpData = (LPSTR) MapViewOfFile (hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
if ( lpData == NULL )
{
cout << "Сервер: Ошибка в доступе к памяти!\n";
return 1;
}
cout << endl << lpStr;
sprintf ( lpData, lpStr);
while ( strlen(lpData) < 20 ) Sleep (1000);
cout << "Получено: " << lpData << endl;
UnmapViewOfFile ( lpData );
CloseHandle ( hMapping );
return 0;
}
Клиент
#include <windows.h>
#include <iostream.h>
#include <stdio.h>
int main ( )
{
HANDLE hMapping;
LPSTR lpData;
hMapping = CreateFileMapping ((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,
0,0x100,"Share");
if ( hMapping == NULL )
{
cout << "Клиент: не могу создать файл!";
return 1;
}
lpData = (LPSTR) MapViewOfFile (hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
if ( lpData == NULL )
{
cout << " Клиент: Ошибка в доступе к памяти! "; return 1;
}
cout << "Данные с сервера :" << lpData << endl;
sprintf ( lpData, "Строка данных клиента 20 символов");
UnmapViewOfFile ( lpData );
CloseHandle ( hMapping );
}
10 Фрагмент программы для, демонстрирующий обмен данными, с помощью сообщения wm_copydata ( фрагмент выделен жирным шрифтом)
BOOL Dlg_OnCopyData(HWND hwnd, HWND hwndFrom, PCOPYDATASTRUCT cds) {
Edit_SetText(GetDlgItem(hwnd, cds->dwData ? IDC_DATA2 : IDC_DATA1),
(PTSTR) cds->lpData);
return(TRUE);
}
BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) {
chSETDLGICONS(hwnd, IDI_COPYDATA);
// Initialize the edit controls with some test data.
Edit_SetText(GetDlgItem(hwnd, IDC_DATA1), TEXT("Some test data"));
Edit_SetText(GetDlgItem(hwnd, IDC_DATA2), TEXT("Some more test data"));
return(TRUE);
}
void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {
switch (id) {
case IDCANCEL:
EndDialog(hwnd, id);
break;
case IDC_COPYDATA1:
case IDC_COPYDATA2:
if (codeNotify != BN_CLICKED)
break;
HWND hwndEdit = GetDlgItem(hwnd,
(id == IDC_COPYDATA1) ? IDC_DATA1 : IDC_DATA2);
// Prepare the COPYDATASTRUCT.
COPYDATASTRUCT cds;
// Indicate which data field we're sending (0=ID_DATA1, 1=ID_DATA2)
cds.dwData = (DWORD) ((id == IDC_COPYDATA1) ? 0 : 1);
// Get the length (in bytes) of the data block we're sending.
cds.cbData = (Edit_GetTextLength(hwndEdit) + 1) * sizeof(TCHAR);
// Allocate a block of memory to hold the string.
cds.lpData = _alloca(cds.cbData);
// Put the edit control's string in the data block.
Edit_GetText(hwndEdit, (PTSTR) cds.lpData, cds.cbData);
// Get the caption of our window.
TCHAR szCaption[100];
GetWindowText(hwnd, szCaption, chDIMOF(szCaption));
// Enumerate through all the top-level windows with the same caption
HWND hwndT = NULL;
do {
hwndT = FindWindowEx(NULL, hwndT, NULL, szCaption);
if (hwndT != NULL) {
FORWARD_WM_COPYDATA(hwndT, hwnd, &cds, SendMessage);
}
} while (hwndT != NULL);
break;
}
}
INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog);
chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg_OnCommand);
chHANDLE_DLGMSG(hwnd, WM_COPYDATA, Dlg_OnCopyData);
}
return(FALSE);
}
int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {
DialogBox(hinstExe, MAKEINTRESOURCE(IDD_COPYDATA), NULL, Dlg_Proc);
return(0);
}