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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kest_wolf
0 / 0 / 0
Регистрация: 08.02.2011
Сообщений: 33
#1

доклад - C++

02.03.2011, 20:20. Просмотров 867. Ответов 0
Метки нет (Все метки)

проверьте пожалуйста текст моего доклада с программой. я без рамы что здесь так а что нет.

Завданням моєї курсової роботи була задача, що обчислює загальну кількість рядків з розширенням пас и спп в даному каталозі.
Основною проблемою було те, що треба було знайти відмінність файлу від каталогу, а потім вже прочитати по кускам цей файл, розмір якого ми знаємо. Також проблемою було те, що для даної задачі був потрібен заготовочний файл «дирент.ш» якій по свому призначенню використовує функції та бібліотеки ОС Линукс та Юникс. Тому я показую працездатність програми на іншому компіляторі СІ, в якому це підтримується.
Алгоритм роботи моєї програми такий: спочатку йде перевірка каталогу, пошук підкаталогів та файлів, потім якщо був знайдений файл відбувається перевірка його розширення, якщо це пас або спп – відбувається підрахунок строк в цьому файлі і виводиться на екран кількість строк…. Я зробив звернення в цій програмі до певної людини, до С.О!
Моя програма має такі бібліотеки як
#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 Доклад о методе поиска подстроки в строке (в массивах и матрицах)
Доклад по Информационной безопасности
Сети Новые разработки (Нужно на доклад по предмету ''Сети'')
Visual Basic .NET Нужен реферат/доклад на любую тему
Python Доклад по Python. Сортировка
Доклад Assembler
Доклад по системным платам
AMD Quick Stream доклад Windows 10
SSD Подготовить доклад по твердотельным жестким дискам

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru