Функции и Графики ПРОГРАММИРОВАНИЕ на C++ / Turbo Pascal

ФУНКЦИИ
и ГРАФИКИ

ЭЛЕМЕНТАРНЫЕ ФУНКЦИИ
ГРАФИКИ
ТЕСТЫ
КОНТАКТЫ
КАРТА САЙТА
НА ГЛАВНУЮ

NEW !!!

ПРОГРАММИРОВАНИЕ
TURBO PASCAL
C++
ПРОВЕРЬ СВОИ ЗНАНИЯ!
Задача: Заданы имена входного текстового файла (существует на диске) и выходного файла (создается программой). Скопировать строки из входного файла в выходной в порядке убывания их длины. Имена файлов задаются в виде аргументов командной строки
>>Скачать<<
Решение:
//---------------------------------------------------------------------------
#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