![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Эпсилон |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Помогите пожалуйста написать программу на "Си", не на "С++".
"Выравнивание строк: в тексте из N строк выровнить строки так, чтобы каждая строка имела длину 65 символов. Выравнивание произовится за счёт вставки дополнительных пробелов." Ход действий я знаю: нужно открыть текстовый документ FILE *IN, его просто прочитать(rt), совершить над ним выравниваение с помощью цикла добавить пробелы, подсчитать длину строки, если нет 65 то ещё добавить пробелы, опять подсчитать длину строки, до тех пор пока не будет 65символов в строке, и сохранить уже в новый текстовый документ только в FILE *OUT. Но реализовать в Си коде не смог, помогите написать, взаранее спасибо. |
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
Не обязательно. Считываешь строку. Считаешь, сколько пробелов в строке. Если длина строки больше 65 или нет пробелов - каким-то образом обрабатываешь эту ситуацию. Если все нормально - считаешь, сколько нужно добавить к этим существующим пробелам: x = (65 - длина_строки) / кол-во_пробелов_в_строке Пишешь в OUT файл, добавляя x пробелов к уже существующим. ИМХО Добавлено @ 22:30 А вообще такая задача была и не раз, копайся в поиске по сайту -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| Эпсилон |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Спасибо большое всё получилось, только не то, я же подсчитал сколько длина строки, а как подсчитать сколько пробелов? и если можно то как это в коде выглядит, "Си" недавно начал изучать.
Это сообщение отредактировал(а) Эпсилон - 4.1.2007, 03:14 |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
проходиш по всем элементам массива символов, если текущий символ == ' ' -- увеличиваеш счетчик на 1.
в чем тут может быть проблема -- не понимаю... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Эпсилон |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Вот написал только пишет две ошибки:
Первая ошибка когда открываю файл:
Error C:\____\zadacha.c 9: Improper use of a typedef symbol in function main Вторая ошибка тоже в File *out: ("out" светится как ошибка): Error C:\____\zadacha.c 9: Undefined symbol ' out ' in function main. Это сообщение отредактировал(а) Эпсилон - 4.1.2007, 15:26 |
||||
|
|||||
| frenchman |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Эпсилон,
SIZE - это длина строки. |
||||
|
|||||
| Rockie |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
студия 7.1 компилит...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
imho это лишнее тут если честно, полета мысли не понял. Тебе вроде бы алгоритм дан.. поменяй out на myOut или что-нибудь еще -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| Rockie |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
Нужно еще добавить проверки
ну и погрешность деления при расчете кол-ва пробелов. А так - держи, с выводом на экран.
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
| Эпсилон |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.1.2007 Репутация: нет Всего: нет |
Спасибо большоё всё работает, но нужно чтобы результат, выровненный текст, нужно записать в другой файл. А когда я добавляю FILE *out, то выходят опять те же ошибки.
|
|||
|
||||
| Rockie |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
Эпсилон, по форматировнию кода видно, что out это зарезервированное слово(оно жирное). поэтому я и написал двумя постами выше imho потом останется заменить
на что-нибудь вроде
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
| apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Если в в какой-то строке нет пробела программа благополучно завершилась Зачем так категорично -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
| Rockie |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
apook, всмысле "категорично"? Это учебный пример, в нем главное не интерфейс, а функциональность. А так - хоть мигающий ShowMessage прикручивай p.s.: кстати imho этот код
не говорит об успешном завершении программы. Просто так обычно делают. -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
-------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |