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

Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса). - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
04.07.2010, 18:17     Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса). #1
Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса). Ширина колонки задается произвольно.
Помогите плиз, очень нужно, но не понимаю как это делать!! Желательно на си.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2010, 18:17     Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса).
Посмотрите здесь:

Открыть файл, выровнять текст по правому краю и слева добавить номер строки C++
С++ есть задание дан файл с абзацем выровненым по левому краю , надо отформатировать по правому краю!! C++
Добавить в конец каждой строки необходимо количество «*» что бы выровнять текст по правому краю большей строки C++
Выравнивание по правому краю введенного текста C++
Напишите программу, которая вводит строку текста, разбивает его на лексемы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
04.07.2010, 18:29     Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса). #2
как в ворде что ли?
neon902
1 / 1 / 0
Регистрация: 01.07.2010
Сообщений: 62
05.07.2010, 16:28  [ТС]     Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса). #3
ну да, у меня есть образец, он делит на 2 столбца и выравнивает по левому краю, а мне нужно по правому, но там он слова рвёт просто и переносит на др строку

Добавлено через 32 секунды
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void main(void)
{
FILE *f;
unsigned int h, ISHLEN, i1, i2, l, j, n;
unsigned char *txt;
ISHLEN=70, h=28;
f=fopen("D:\\TEXTFILE.txt","r");
fseek(f,0,SEEK_END);
l=ftell(f);
n=(l+1)/(h*2);
i1=0, i2=n*h;
txt=(char *)malloc(2*h*(n+1));
memset(txt,32,2*h*(n+1));
fseek(f,0,SEEK_SET);
fread(txt,1,l,f);
for(j=0;j<l;j++)
txt[j]=(txt[j]=='\n')?32:txt[j];
fclose(f);
f=fopen("D:\\NEW.txt","w");
while(i2<l)
{
if(i1<n*h)
fwrite(&txt[i1],l,h,f),i1+=h;
else for(f=0;j<h;j++)fputc(' ',f);
for(j=0;j<(ISHLEN-2*h);j++) fputc(' ',f);
fwrite(&txt[i2],l,h,f),i2+=h,fputc('\n',f);
}
fclose(f);
free(txt);
}
Добавлено через 21 час 50 минут
что не у кого даже мыслей нет? кто хоть что-то знает по этой теме, напишите, я вообще не врубаюсь
Black Fregat
 Аватар для Black Fregat
1353 / 983 / 215
Регистрация: 31.05.2009
Сообщений: 4,093
05.07.2010, 17:41     Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса). #4
Если нужен готовый код, то тут не тот раздел.

Если достаточно алгоритма, то:
1) Определяем параметры листа: количество колонок, количество символов в колонке по ширине, количество строк на листе
2) Нарезаем текст по словам
3) Упаковываем строки - дополняем текущую строку очередными словами, пока влезают, как только не влезает - переходим к следующей.
4) Для правого выравнивания добавляем к строке нужное число пробелов спереди
5) Из готовых строк лепим сточки с учетом колонок. Например, если 2 колонки по 40 строк,
то выводим 1 + 41, 2 + 42, ... 40 + 80, 81 + 121 и т. д
Yandex
Объявления
05.07.2010, 17:41     Разработать программу, которая разбивает заданный текст на две колонки и форматирует их по правому краю (без переноса).
Ответ Создать тему
Опции темы

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