Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив2 / курсовая docx525 / Kursovaya_rabota_Final.docx
Скачиваний:
12
Добавлен:
07.08.2013
Размер:
101.21 Кб
Скачать

Программа 1. Последовательная обработка файлов (однопоточное приложение)

//выполнил Конышев В.В.

//Студент группы УИС-311

//Вариант №5

//Перевести все буквенные символы текста в верхний регистр

#include <windows.h>

#include <time.h>

#include <conio.h>

#include <iostream>

#include <stdio.h>

using namespace std;

clock_t StartTime, EndTime; // Время начала и завершения обработки

//Функция обработки файла

DWORD FileProc(char *fname)

{

char* fname2 = new char[sizeof(&fname)+6];

sprintf(fname2, "%s%s",fname,"_2.txt");

int tmp;

FILE* f = fopen(fname,"r");

FILE* g = fopen(fname2,"w");

// Проверка открытия файлов

if(!fname)return 0;

if(!fname2)return 0;

while (!feof(f))

{

tmp = fgetc(f);

if(tmp>='a' && tmp<='z')

{

fputc((char)tmp-32,g);

}

else

{

if(tmp!='я')

{

fputc(tmp,g);

}

}

}

fclose(f);

fclose(g);

return 0;

}

int main(int argc, char *argv[])

{

if (argc <2)

{

// Не введены параметры, программа завершается

cout << "DATA NOT ENTERED!";

getch();

return 0;

}

// Проверка на совпадение имен файлов

for (int i=1;i<=argc-1;i++)

{

for (int j=i+1;j<=argc-1;j++)

{

if(!strcmp(argv[i],argv[j]))

{

cout << "FILE NAMES ARE EQUALS!" << endl;

getch();

return 0;

}

}

}

StartTime = clock(); // Запомнили время начала обработки

int i;

for (i=1;i<=argc-1;i++)

{

//Вызов функции обработки файла

FileProc(argv[i]);

}

EndTime = clock(); // Запомнили время окончания обработки

//Вывод продолжительности обработки и завершение программы

cout <<"Elapsed Time " << (EndTime-StartTime)<< " ms" << endl;

getch();

return 0;

}

Программа 2. Параллельная обработка файлов (многопоточное приложение)

//выполнил Конышев В.В.

//Студент группы УИС-311

//Вариант №5

//Перевести все буквенные символы текста в верхний регистр

#include <windows.h>

#include <time.h>

#include <conio.h>

#include <iostream>

#include <stdio.h>

using namespace std;

HANDLE hThread[10]; // дескрипторы потоков

DWORD IDThread[10]; // идентификаторы потоков

DWORD dwExitCode[10]; // коды завершения потоков

DWORD ThreadProc(char *fname); // функция потока

clock_t StartTime, EndTime; // Время начала и завершения обработки

//Функция обработки файла

DWORD ThreadProc(char *fname)

{

char* fname2 = new char[sizeof(&fname)+6];

sprintf(fname2, "%s%s",fname,"_2.txt");

int tmp;

FILE* f = fopen(fname,"rb");

FILE* g = fopen(fname2,"wt");

// Проверка открытия файлов

if(!fname)return 0;

if(!fname2)return 0;

while (!feof(f))

{

tmp = fgetc(f);

if(tmp>='a' && tmp<='z')

{

fputc((char)tmp-32,g);

}

else

{

if(tmp!='я')

{

fputc(tmp,g);

}

}

}

fclose(f);

fclose(g);

return 0;

}

int main(int argc, char *argv[])

{

int N;

N=argc-1;

if (argc <2)

{

// Не введены параметры, программа завершается

cout << "DATA NOT ENTERED!";

getch();

return 0;

}

// Проверка на совпадение имен файлов

for (int i=1;i<=argc-1;i++)

{

for (int j=i+1;j<=argc-1;j++)

{

if(!strcmp(argv[i],argv[j]))

{

cout << "FILE NAMES ARE EQUALS!" << endl;

getch();

return 0;

}

}

}

StartTime = clock(); // Запомнили время начала обработки

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

{

// Создание потока для выполнения функции обработки файла

hThread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,argv[i+1],0,&IDThread[i]);

if (hThread[i]==NULL)

{

cout << "THREAD ERROR!" << endl;

return 0;

}

}

// Ожидание завершения потоков

WaitForMultipleObjects(N,hThread,TRUE,INFINITE);

EndTime = clock(); // Запомнили время окончания обработки

//Вывод продолжительности обработки и завершение программы

cout <<"Elapsed Time " <<(EndTime-StartTime)<<" ms"<< endl;

getch();

return 0;

}

Соседние файлы в папке курсовая docx525