- •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. Побудувати параметризований клас черги.
1 Розробити консольну програму, яка відкриває файл порціями по 4Кб та відображае його зміст в вікні. Для роботи з файлами викорастати Win32 Api
#include <windows.h>
#include <tchar.h>
#ifndef UNICODE
#include <stdio.h>
#endif
#define BUFFERSIZE 0x1000
int_tmain(int argc, TCHAR * argv[])
{
TCHAR szFile[_MAX_PATH];
HANDLE hReadFile;
_tprintf(_T(“Имя файла”));
_getts(szFile);
hReadFile = CreateFile(szFile, GENERIC_READ,0,(LPSECURITY_ATTRIBUTES) NULL, OPEN_EXISTING, FILE_ATRIBUTE_NORMAL, (HANDLE) NULL);
if(hReadFile==INVALID_HANDLE_VALUE) {
_tprintf(_T(“Ошибка открытия файла”));
return;}
else
{
//считать порциями по 4 Кб и отобразить на экран
BYTE buffer[BUFFERSIZE];
DWORD dwRead;
do
{BOOL fRead = ReadFile(hReadFile, buffe, BUFFERSIZE, &dwRead, NULL);
If(fRead ==FALSE)
{
_tprintf(_T(“Ошибка чтения”));
break;}
else if(dwRead == 0)
{_tprintf(_T(“\r EOF обнаружен\n”));
break;}
else{
//отобразить данные
DWORD ndx;
For(ndx=0; ndx<dwRead;ndx++)
{_tprintf(_T(“%c [%#2.2hx]\t”),buffer[ndx], (USHORT) buffer[ndx]);}}}
while(dwRead == BUFFERSIZE);
CloseHandle(hReadFile);
Return 1;}
2 Написать 2 варианта запуска Notepad.exe для обработки файла
#include "iostream.h"
#include "string.h"
#include "windows.h"
void main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
char FileName[100],CmdLine[100];
strcpy(CmdLine,"Notepad.exe");
cout<<"Text file name: ";
cin>>FileName; // ввод названия текстового файла
ShellExecute(NULL,NULL,CmdLine,FileName,NULL,SW_SHOW); // вариант №1
strcat(CmdLine," ");// формируем содержимое командной строки
strcat(CmdLine,FileName);
WinExec(CmdLine,SW_SHOW); // вариант №2
ZeroMemory(&si,sizeof(si)); // устанавливаем нужные параметры в структуре STARTUPINFO
si.cb=sizeof(si);
si.wShowWindow=SW_SHOW;
si.dwFlags=STARTF_USESHOWWINDOW;
CreateProcess(NULL,CmdLine,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); // вариант №3}
3 Написать 2 конс. Программы Master и Slave. Master запускает Slave и передает ей через ком. строку дескриптор своего процесса. Slave ожидает окончания работы Master и выдает сообщение.
// Master.exe
#include "iostream.h"
#include "string.h"
#include "windows.h"
#include "stdio.h"
void main(int argc,char * argv[])
{
char cmd[100];
if(argc!=1) strcpy(cmd,argv[1]);
else strcpy(cmd,"slave.exe");
int pid=GetCurrentProcessId();
sprintf(cmd+strlen(cmd)," %d",pid);
cout<<"Master:Starting, PID="<<pid<<"\n";
cout.flush();
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
si.wShowWindow=SW_HIDE;
si.dwFlags=STARTF_USESHOWWINDOW;
if( !CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL,&si,&pi) )
{cout<<"Master:Slave not loaded\n";
cout.flush();}
cout<<"Master:Sleeping\n"; cout.flush();
Sleep(5000);
cout<<"Master:Exiting\n"; cout.flush();
}
//--------------------------
//Slave.exe
#include "iostream.h"
#include "windows.h"
#include "stdio.h"
void main(int argc,char * argv[])
{cout<<"Slave:Started\n"; cout.flush();
if(argc!=2)
{cout<<"Slave:Load Master.exe first\n";
cout<<"Slave:Finishing\n";
exit(1);}
int pid=atoi(argv[1]);
HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|SYNCHRONIZE,FALSE,pid);
if(!hProcess)
{cout<<"Slave:Open process error\n"; cout.flush();
}
else
{cout<<"Slave:Waiting for master finishing\n";
cout.flush();
if(WaitForSingleObject(hProcess,INFINITE)==STATUS_WAIT_0)
{cout<<"Slave:Master finished\n";
cout.flush();}
else
{cout<<"Slave:Unknown error\n";
cout.flush();}}
cout<<"Slave:Finishing\n";}
4 Программа, выводящая информ . о загрузке операт . памяти компьютера
#include "iostream.h"
#include "string.h"
#include "windows.h"
#include "stdio.h"
#include "conio.h"
void main()
{
MEMORYSTATUS ms;
char str[100];
char kb[100];
ms.dwLength=sizeof(MEMORYSTATUS);
GlobalMemoryStatus(&ms);
CharToOem(" КБ\n",kb);
CharToOem("Всего физической памяти: ",str);
cout<<str<<ms.dwTotalPhys/1024<<kb;
CharToOem("Свободно физической памяти: ",str);
cout<<str<<ms.dwAvailPhys/1024<<kb;
CharToOem("Всего виртуальной памяти: ",str);
cout<<str<<ms.dwTotalPageFile/1024<<kb;
CharToOem("Свободно виртуальной памяти: ",str);
cout<<str<<ms.dwAvailPageFile/1024<<kb;
CharToOem("Процент загрузки физической памяти: ",str);
cout<<str<<ms.dwMemoryLoad<<endl;
cout.flush();
getch();}
5 Написать 2 программы, демонстрир. синхрониз. процессов с пом. событий.
// 1. События с автосбросом
#include "windows.h"
#include "process.h"
#include "stdio.h"
HANDLE hEvent1,hEvent2;
int a[5];
void WorkThread(void * pParam)
{int i,num;
num=0;
while(true)
{WaitForSingleObject(hEvent2,INFINITE);
for(i=0;i<5;i++)
a[i]=num;
SetEvent(hEvent1);
num++;}}
void main()
{
hEvent1=CreateEvent(NULL,FALSE,TRUE,NULL);
hEvent2=CreateEvent(NULL,FALSE,FALSE,NULL);
_beginthread(WorkThread,0,NULL);
while(true)
{WaitForSingleObject(hEvent1,INFINITE);
printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4],a[5]);
SetEvent(hEvent2);}}
//------------------------------------------------------------------------------------------------------------------------------------------
// 2. События со сбросом вручную
#include "windows.h"
#include "process.h"
#include "stdio.h"
HANDLE hEvent1,hEvent2;
int a[5];
void WorkThread(void * pParam)
{int i,num;
num=0;
while(true)
{WaitForSingleObject(hEvent2,INFINITE);
ResetEvent(hEvent2);
for(i=0;i<5;i++)
a[i]=num;
SetEvent(hEvent1);
num++;}}
void main()
{
hEvent1=CreateEvent(NULL,TRUE,TRUE,NULL);
hEvent2=CreateEvent(NULL,TRUE,FALSE,NULL);
_beginthread(WorkThread,0,NULL);
while(true)
{ WaitForSingleObject(hEvent1,INFINITE);
ResetEvent(hEvent1);
printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4],a[5]);
SetEvent(hEvent2);
}
}