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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bacekk
2 / 2 / 0
Регистрация: 30.11.2010
Сообщений: 89
#1

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

18.12.2011, 01:05. Просмотров 676. Ответов 0
Метки нет (Все метки)

Доброго времени суток! Я тут сделал задание, которое заключается в том, что надо разработать программу, выполняющую действия: Выравнивание текста по правой границе. Правая граница определяется как сумма длины максимальной строки и некоторого числа Δ>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++ Программа, которая согласно запросу пользователя выводит информацию об абонентах
C++ Выравнивание текста в messageBoxRect (Turbo Vision for C++)
Написать программу, которая, согласно запросу пользователя, выводит информацию об абонентах C++
Вывести по запросу сколько хочет пользователь строк C++
Выравнивание по правому краю введенного текста C++
C++ Выравнивание текста пробелами по ширине.
Выравнивание текста вправо C++
C++ Выравнивание текста по правому краю
C++ Поиск и вывод объекта из файла по запросу

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

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

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