|
|
|
|
| Задача: Заданы имена входного текстового файла (существует на диске) и выходного файла
(создается программой). Скопировать строки из входного файла в выходной
в порядке убывания их длины. Имена файлов задаются в виде
аргументов командной строки |
| >>Скачать<< |
| Решение: |
//---------------------------------------------------------------------------
#include < stdio.h>
#include < stdlib.h>
#include < string.h>
#define MAXN 1000
int pos[MAXN]; //Массив индексов
int length[MAXN]; //Массив длин строк
//---------------------------------------------------------------------------
void main(int argc, char* argv[])
{
if(argc != 3)
{
printf("ENTER FILE NAMES FIRST!!!\n");
return;
}
FILE *input = fopen(argv[1],"rt");
FILE *output = fopen(argv[2],"wt");
if(!input || !output) printf("ERROR FILE NOT OPENED!!!\n");
else
{
//ИНДЕКСИРОВАНИЕ ФАЙЛА
char str[256]; int ns = 0;
for(ns = 0; ns < MAXN; ns ++)
{
pos[ns] = ftell(input);
if(fgets(str,256,input) == NULL) break;
length[ns] = strlen(str);
}
int max = length[0];
int nmax = 0;
//ПОИСК МАКСИМУМА
int k = 0;
while(k != ns)
{
for(int i = 0; i <= ns; i++)
{
if((length[i] > max) && (length[i] != 0))
{
max = length[i];
nmax = i;
}
}
//Запись в файл строки с максимальной длинной
fseek(input, pos[nmax], SEEK_SET);
fgets(str,256,input);
fputs(str,output);
length[nmax] = 0;
max = 0; nmax = 0;
k++;
}
fclose(input); //Закрытие файлов
fclose(output);
}
}
//---------------------------------------------------------------------------
|
| Задача: Заданы имена входного текстового файла (существует на диске) и выходного файла
(создается программой). Скопировать строки из входного файла в выходной
в порядке возрастания их длины. Имена файлов задаются в виде
аргументов командной строки |
| >>Скачать<< |
| Решение: |
//---------------------------------------------------------------------------
#include < stdio.h>
#include < stdlib.h>
#include < string.h>
#define MAXN 1000
int pos[MAXN]; //Массив индексов
int length[MAXN]; //Массив длин строк
//---------------------------------------------------------------------------
void main(int argc, char* argv[])
{
if(argc != 3)
{
printf("ENTER FILE NAMES FIRST!!!\n");
return;
}
FILE *input = fopen(argv[1],"rt");
FILE *output = fopen(argv[2],"wt");
if(!input || !output) printf("ERROR FILE NOT OPENED!!!\n");
else
{
//ИНДЕКСИРОВАНИЕ ФАЙЛА
char str[256]; int ns = 0;
for(ns = 0; ns < MAXN; ns ++)
{
pos[ns] = ftell(input);
if(fgets(str,256,input) == NULL) break;
length[ns] = strlen(str);
}
int min = length[0];
int nmin = 0;
//ПОИСК МИНИМУМА
int k = 0;
while(k != ns)
{
for(int i = 0; i <= ns; i++)
{
if((length[i] < min) && (length[i] != 0))
{
min = length[i];
nmin = i;
}
}
//Запись в файл строки с минимальной длинной
fseek(input, pos[nmin], SEEK_SET);
fgets(str,256,input);
fputs(str,output);
length[nmin] = 0;
//Необходимо выбрать новый минимальный элемент (ненулевой)
int j = 0;
while(1)
{
if(length[j] != 0)
{
min = length[j];
nmin = j;
break;
}
j++;
}
k++;
}
fclose(input); //Закрытие файлов
fclose(output);
}
}
//---------------------------------------------------------------------------
|
| |
Используются технологии uCoz
|