Форум программистов, компьютерный форум CyberForum.ru

доклад - C++

Восстановить пароль Регистрация
 
kest_wolf
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 33
02.03.2011, 20:20     доклад #1
проверьте пожалуйста текст моего доклада с программой. я без рамы что здесь так а что нет.

Завданням моєї курсової роботи була задача, що обчислює загальну кількість рядків з розширенням пас и спп в даному каталозі.
Основною проблемою було те, що треба було знайти відмінність файлу від каталогу, а потім вже прочитати по кускам цей файл, розмір якого ми знаємо. Також проблемою було те, що для даної задачі був потрібен заготовочний файл «дирент.ш» якій по свому призначенню використовує функції та бібліотеки ОС Линукс та Юникс. Тому я показую працездатність програми на іншому компіляторі СІ, в якому це підтримується.
Алгоритм роботи моєї програми такий: спочатку йде перевірка каталогу, пошук підкаталогів та файлів, потім якщо був знайдений файл відбувається перевірка його розширення, якщо це пас або спп – відбувається підрахунок строк в цьому файлі і виводиться на екран кількість строк…. Я зробив звернення в цій програмі до певної людини, до С.О!
Моя програма має такі бібліотеки як
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
Стринг.Аш – в моїй програмі призначена для багатобаштового кодування і визначається число строк.
Стдлиб.АШ – призначена для воду, виводу заголовку, стандартний заготовочний файл введення – виведення, він має визначення макросів, константи та оголошення функцій і типів.
Моя пограма може працювати на різних платформах ОС! І самому можна легко задати з яким розширенням файли треба перевіряти!


текст проги: #include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int lines_count = 0;

//проверяет расширение файла
int EndsWith(const char *string, const char *substring) {
int string_length = strlen(string);
int substring_length = strlen(substring);
if (string_length < substring_length) return 0;
const char *string_symbol = string + string_length - substring_length;
return ((strcmp(string_symbol, substring) == 0) ? 1 : 0);
}

//анализ расширения и подсчёт строк
void ProcessFile(const char *file_name) {
if (EndsWith(file_name, ".cpp") || EndsWith(file_name, ".pas")) {
FILE *infile = fopen(file_name, "r");
if (infile != NULL) {
// читаем файл блоками по 4 Кб
int k_buffer_size = 4096;
char *buffer = (char*)malloc(k_buffer_size);

//int lines_count = 0;
while (!feof(infile))
//fgets читает входной файл, делает остановку после каждой строки
if (fgets(buffer, k_buffer_size, infile))
++lines_count;
free(buffer);
fclose(infile);
// отчёт по каждому файлу
//printf("%s has %d line%s\n", file_name, lines_count,
// (lines_count > 1) ? "s" : "");
} else {
fprintf(stderr, "Error reading file %s.\n", file_name);
}
}
}

// рекурсивно обходит каталоги + динамически выделяет память для подкаталогов
void ProcessFolder(const char *folder_name)
{
DIR *directory;
struct dirent *directory_entry;
//проверка успешности чтения каталога
if ((directory = opendir(folder_name)) == NULL) {
fprintf(stderr, "Error opening %s.\n", folder_name);
return;
}

//основной цикл обхода каталогов
while ((directory_entry = readdir(directory)) != NULL) {
if (strcmp(directory_entry->d_name, ".") != 0 &&
strcmp(directory_entry->d_name, "..") != 0) {
//динамическое выделение памяти
char *subentry = (char*)malloc(strlen(folder_name)
+ strlen(directory_entry->d_name) + 2);
strcpy(subentry, folder_name);
strcat(subentry, "/");
strcat(subentry, directory_entry->d_name);
//если нашли подкаталог, то переходим в него (рекурсивно)
if (directory_entry->d_type & DT_DIR)
ProcessFolder(subentry);
else
//if (directory_entry->d_type & DT_REG) //можно удалить
ProcessFile(subentry);
//высвобождаем занятую память
free(subentry);
}
}
closedir(directory);
}

// обрабатываемый каталог должен быть указан в качестве параметра
int main(int argc, char *argv[]) {
if (argc == 2)
ProcessFolder(argv[1]);
else
ProcessFolder(".");
printf("Sergey Aleksandrovich, vsego strok %d\n", lines_count);
}

что в моем докладе не так? исправте плз! что бы я заучил и рассказал!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 20:20     доклад
Посмотрите здесь:

Turbo Pascal Доклад о методе поиска подстроки в строке (в массивах и матрицах)
Срочно! Доклад: Case технологии в среде Borland+программа
Доклад по Информационной безопасности
Сети Новые разработки (Нужно на доклад по предмету ''Сети'')
реферат\доклад по матану
Презентацию к дипломной работе и Доклад на защиту
Visual Basic .NET Реферат/доклад по теме Visual Basic 2010
Python Доклад по Python. Сортировка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 19:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru