Показать сообщение отдельно
Старый 08.02.2011, 23:10   #4 (permalink)
kest_wolf
Новичок
 
Регистрация: 08.02.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

была такая задача: Составить программу, которая для заданного начального каталогов файловой системы вычисляет общее количество строк в файлах с расширениями "pas" и "cpp" которые находятся внутри этого каталога и его подкаталогов.


вот ответ - это правильно??
#include<stdio.h>
#include<stdlib.h>
#include<fstream>
#include<windows.h>

int calculate(char *name)
{
std::ifstream in;
in.open(name);
int i=0;
char buffer[1024];
while(!in.eof())
{
i++;
in.getline(buffer, 1024);
if(in.eof()) break;
}
in.close();
return i;
}

int main()
{
WIN32_FIND_DATA FindFileData;
HANDLE fnext;
char dir[256];
char path[256];
char name[256];
// gets(dir);

GetCurrentDirectory(256, dir);
strcpy(path,dir);
strcat(path, "\\*.cpp");
int result=0;
if(fnext=FindFirstFile(path,&FindFileData))
{
if (fnext != INVALID_HANDLE_VALUE)
{
strcpy(name,dir);
strcat(name,"\\");
strcat(name,FindFileData.cFileName);
result+=calculate(name);
while(FindNextFile(fnext,&FindFileData))
{
strcpy(name,dir);
strcat(name,"\\");
strcat(name,FindFileData.cFileName);
result+=calculate(name);
}
}
}
FindClose(fnext);
strcpy(path,dir);
strcat(path, "\\*.pas");
WIN32_FIND_DATA FindFileData2;
if(fnext=FindFirstFile(path,&FindFileData2))
{
if (fnext != INVALID_HANDLE_VALUE)
{
strcpy(name,dir);
strcat(name,"\\");
strcat(name,FindFileData.cFileName);
result+=calculate(name);
while(FindNextFile(fnext,&FindFileData2))
{
strcpy(name,dir);
strcat(name,"\\");
strcat(name,FindFileData.cFileName);
result+=calculate(name);
}
}
}
FindClose(fnext);
printf("Result is %d", result);
gets(path);

return 0;
}


Предупреждение:
А вы этот листинг компилировать самостоятельно пробовали? Если бы попробовали - сразу же узнали бы, верно он написан или нет. Ваш модератор.
kest_wolf вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070