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

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

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

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

18.12.2011, 01:05. Просмотров 721. Ответов 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 минут
ну помогите..)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2011, 01:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос выравнивание текста по запросу (C++):

Выравнивание текста - C++
Как мне выравнить текст в этом коде, как показано на рисунке ? cout&lt;&lt;&quot;Едем...

Выравнивание текста вправо - C++
Здравствуйте! Мне нужно текст, который будет выведен после этих операторов, выравнять по правой стороне по образцу ниже. fout &lt;&lt;...

Выравнивание текста по правому краю - C++
Помогите, пожалуйста, написать код. Текст, состоящий из ряда строк, выровнаять по провому краю так, чтобы каждая строка завершала...

Выравнивание текста пробелами по ширине. - C++
Очень нужно написать решение на C++. Кто-нибудь может помочь? Я пытался 2 дня - ничего не получается :( Задача Вашей программе...

Выравнивание текста в messageBoxRect (Turbo Vision for C++) - C++
Подскажите как выровнять текст, и сделать его в несколько строк в Turbo Vision for С++, для messageBoxRect. В Паскале это делалось...

Выравнивание по правому краю введенного текста - C++
Может кто подсказать, правильно ли сделал? Произвести выравнивание по правому краю введенного текста, для чего к каждой строке...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2011, 01:05
Привет! Вот еще темы с ответами:

Линейный список, выравнивание текста по центру - C++
Доброго времени суток. Задача- написать программу реализующую выравнивание текста по центру. ширина строки, имя входного и выходного файлов...

Произвести выравнивание по правому краю введенного текста - C++
помогите пожалуйста!!!! срочно надо!! задача №1. Произвести выравнивание по правому краю введенного текста, для чего к каждой...

Поиск и вывод объекта из файла по запросу - C++
Прошу помощи так как уже второй день ломаю себе голову,не могу реализовать поиск объекта класса в файле по полю &quot;модель&quot;,будьте добры...

Вывести по запросу сколько хочет пользователь строк - C++
Есть код который выводит 10 раз строку &quot;Hello world&quot; и нумерует их. Как сделать чтобы программа с помощью запроса выводила столько раз...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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