1234566788djxdh
30.03.2023 05:50

C++ алгоритм сортировки простыми вставками (по возрастанию). 1. создание полного пути к файлу или директории char *combinepath(const char *directorypath, const char *filename); 2. рекурсивный обход всех файлов и директорий каталога directorypath с использованием функций _findfirst() и _findnext() и выполнение для каждого файла и каталога функции, переданной с указателя fileobjectprocessor typedef bool (*fileobjectprocessor)(bool isdirectory, const char *fileobjectpath); bool traversedirectory(char *directorypath, fileobjectprocessor fileobjectprocessor); функция обратного вызова, передаваемая при указателя типа fileobjectprocessor, должна возвращать true, если следует продолжать дальнейшую обработку файлов. функция traversedirectory должна возвращать true, если для всех файлов и каталогов функция, передаваемая при указателя типа fileobjectprocessor, вернула true, в противном случае она должна вернуть false. 3. на базе функции traversedirectory реализовать функцию, которая создаст в каждом каталоге, имя которого содержит вашу фамилию, дочерние папки с именами «самостоятельные работы», «контрольные работы» и «практические ». для этого необходимо реализовать функцию создания в указанном каталоге (директории) directorypath папки с именем subdirectoryname (не содержит слешей). bool createdirectory(const char *directorypath, const char *subdirectoryname); функция должна выполнить создание всех отсутствующих в файловой системе частей в directorypath. 4. на базе функции traversedirectory реализовать функции, которые выполняют переименование дочерних папок и файлов, которые содержат вашу фамилию. вместо фамилии в имени папки и файла должно появиться ваше фамилия, имя и отчество. например, папка «петухова» должна стать папкой «петухова надежда николаевна». для этого необходимо реализовать функции переименования файла или каталога (директории): bool renamefile(const char *originalfilepath, const char *newfilename); bool renamedirectory(const char *originaldirectorypath, const char * newdirectoryname); 5. на базе функции traversedirectory реализовать функцию копирования файлов, содержащих вашу фамилию, из исходной директории в целевую директорию с сохранением исходной структуры каталогов (каталоги, не содержащие в себе либо в дочерних каталогах файлов с вашей фамилией, не должны создаваться при копировании). для копирования файлов должна быть реализована и использована функция copyfile, копирующая содержимое файла sourcefilepath в новый файл newfilepath. bool copyfile(const char * sourcefilepath, const char *destinationfilepath, int blocksize); копирование должно осуществляться блоками размером blocksize. провести экспериментальную оценку скорости копирования для блоков разного размера (1 байт, 4096 байтов, 5000 байтов, 65536 байтов). 6. на базе функции traversedirectory реализовать функцию, определяющую количество файлов и размеры файлов в директории. возможно, для этого нужно будет изменить вид функции обратного вызова, передаваемой при указателя. 7. на базе функции traversedirectory реализовать функцию, выполняющую сортировку n целочисленных элементов (в тестах задать n равным номеру варианта + 10), содержащихся по смещению n байтов от начала файла (результат должен быть сохранен в том же файле), в дочерних директориях, содержащих вашу фамилию. при сортировке запрещено использовать временный буфер для чтения и записи из файла размером больше чем sizeof(int). алгоритм сортировки определяется номером варианта.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
hs2
14.08.2020 14:21

uses crt;

var i,sum,k: integer;

begin

      sum: =0;

      k: =0;

      writeln('вводите числа. 0 - конец последовательности');

      repeat

          read(i);

          if i mod 2=1 then begin

              sum: =sum+i;

              inc(k);

          end;

      until i=0;

      writeln;

      writeln('среднее  арифметическое нечетных чисел: ',sum/k: 5: 3);

end.

0,0(0 оценок)
Ответ:
dariamaniakova
05.07.2021 05:34

#include

#include

#include

#include

#include

#include

typedef struct

{

char imya[40];

char familiya[40];

char otchestvo[40];

int telefon;

int texpasport;

float pages ;

}gor;

void form(char mass[10], char *imya, char *familiya, char *otchestvo, int telefon, int texpasport)

{

file *f;

gor y;

int i;

if ((f=fopen(mass,"w"))==null) exit(1);

for (i=1; i< =3; i++)

{

cout< < "vvedite imya: ";

cin> > imya;

cout< < "vvedite familiya: ";

cin> > familiya;

cout< < "vvedite otchestvo: ";

cin> > otchestvo;

cout< < "vvedite telefon: ";

cin> > telefon;

cout< < "vvedite texpasport: ";

cin> > texpasport;

fwrite(& y,sizeof(gor),1,f);

if(ferror(f)! =null)

exit(2);

}

fclose(f);

}

void vivod(char mass[50])

{

file *f;

gor z;

if ((f=fopen(mass, "r"))==null) exit(3);

cout< < "fail: "<

while (! feof(f)) {

fread (& z,sizeof(gor),1,f);

if (! feof(f))

{

cout< < "imya: "<

cout< < "familiya: "<

cout< < "otchestvo: "<

cout< < "telefon: "<

cout< < "texpasport: "<

}

fclose(f);

}

}

void del(char fo[10], char fi[10])

{

file *f1,*f2;

gor d;

//char temp[40];

if ((f1=fopen(fi,"r"))==null) exit(4);

if ((f2=fopen(fo,"w"))==null) exit(5);

//cout < < "vvedite nazvanie na ydalenie - ";

//cin > > temp;

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

{

fread(& d,sizeof(gor),1,f1);

if (feof(f1)) break;

if (i> 2)

fwrite (& d,sizeof(gor),1,f2);

}

fclose(f2);

fclose(f1);

}

void dobav(char fi[10], char fo[10],char *imya, char *familiya, char *otchestvo, int telefon, int texpasport)

{

int q;

int i;

gor d;

file *f1,*f2;

char temp[40];

if ((f1=fopen(fi, "r"))==null) exit(4);

if ((f2=fopen(fo,"r+"))==null) exit(5);

cout < < "vvedite familiu, pered kotorym nuzno dobavit element: ";

cin > > temp;

for (i=0; i< 10; i++)

{

fread(& d,sizeof(gor),1,f2);

if (feof(f2)) break;

if (strcmp(d.familiya, temp)) break;

q=i;

}

for (i=0; i< 10; i++)

{

if (feof(f2)) break;

fwrite (& d,sizeof(gor),1,f2);

if (i==q-1)

{

cout< < "vvedite imya: ";

cin> > imya;

cout< < "vvedite familiya: ";

cin> > familiya;

cout< < "vvedite otchestvo: ";

cin> > otchestvo;

cout< < "vvedite telefon: ";

cin> > telefon;

cout< < "vvedite texpasport: ";

cin> > texpasport;

cout <

}

}

fclose(f2);

fclose(f1);

}

void main()

{

int n=10;

//cout < < "vvedite kol-vo zapisey: - ";

//cin> > n;

//cout <

form("f1.txt",n);

vivod("f1.txt");

del("f1.txt","f2.txt");

cout < < "posle udalenia: \n";

vivod("f2.txt");

getch();

n=1;

system("cls");

dobav ("f2.txt","f2.txt");

cout < < "posle dobavlenia: \n";

vivod ("f2.txt");

getch();

}

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота