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

выравнивание текста по запросу - C++

Восстановить пароль Регистрация
 
bacekk
2 / 2 / 0
Регистрация: 30.11.2010
Сообщений: 89
18.12.2011, 01:05     выравнивание текста по запросу #1
Доброго времени суток! Я тут сделал задание, которое заключается в том, что надо разработать программу, выполняющую действия: Выравнивание текста по правой границе. Правая граница определяется как сумма длины максимальной строки и некоторого числа Δ>0. Каждый символ табуляции во входном файле заменяется на n пробелов (1<=n<=8).

код программы:

Код
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main() {
 const int len=255; // Максимально допустимая длина строк
 int delta, n;
 printf("Enter the values of delta and n:\n");
 scanf("%d%d", &delta, &n);
 // Открываем входной файл
 char fn1[len]; // Имя входного файла
 printf("Enter input file name: ");
 scanf("%s", fn1);
 FILE* fin = fopen(fn1, "rt");
 if (!fin) {	
  printf("\nCouldn't open file!\n");
  getch();
  return 1;
 }
 // Определяем максимальную длину строки во входном файле
 char line[len]; // Строка
 int max_len = 0;
 while (fgets(line, len, fin)) { // Пока не закончился файл
  int current_len = strlen(line);
  // Считаем знаки табуляции
  for (int i=0; i<strlen(line); i++)
   if (line[i] == '\t')
    current_len += n-1;
  if (current_len > max_len)
   max_len = current_len;
 }
 // Создаем выходной файл
 char fn2[len]; // Имя выходного файла
 printf("Enter output file name: ");
 scanf("%s", fn2);
 FILE* fout = fopen(fn2, "w+t");
 if (!fout) {
  printf("\nCouldn't create file!\n");
  getch();
  return 2;
 }
 // Записываем отформатированные строки в выходной файл
 rewind(fin);
 while (fgets(line, len, fin)) { // Пока не закончился файл
  // Считаем знаки табуляции
  int current_len = strlen(line);
  for (int i=0; i<strlen(line); i++)
   if (line[i] == '\t')
    current_len += n-1;
  // Записываем пробелы в начале выходной строки
  char line_out[len]; // Строка
  for (i=0; i<max_len+delta-current_len; i++)
   line_out[i] = ' ';
  int k = max_len+delta-current_len;
  for (i=0; i<strlen(line); i++)
   if (line[i] == '\t') {
    for (int j=0; j<n; j++)
     line_out[k+j] = ' ';
    k += n;
   } else
    line_out[k++] = line[i];

  line_out[k] = '\0';
  fputs(line_out, fout);
 }
 fclose(fin); // Закрываем входной файл
 fclose(fout); // Закрываем выходной файл
 getch();
 return 0;
}
Нужно модифицировать эту программу таким образом, чтобы по запросу она могла выравнивать текст либо по правой границе, либо по левой. Подскажите, что нужно добавить...

Добавлено через 15 часов 45 минут
Все еще актуально)

Добавлено через 6 часов 39 минут
ну помогите..)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2011, 01:05     выравнивание текста по запросу
Посмотрите здесь:

Произвести выравнивание по правому краю введенного текста C++
C++ Линейный список. выравнивание текста.
C++ Выравнивание текста
C++ Выравнивание текста в messageBoxRect (Turbo Vision for C++)
Выравнивание по правому краю введенного текста C++
C++ Выравнивание текста пробелами по ширине.
Выравнивание текста вправо C++
C++ Выравнивание текста по правому краю

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

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

Текущее время: 18:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru