![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов, а длина строки текста содержит не более 70 символов. Имя файла должно иметь расширение .dat. Написать программу, которая а)выводит текст на экран дисплея;
б) Выводит текст на экран дисплея еще раз, вставляя в каждое предложение в качестве последнего заданное слово, введенное с клавиатуры в качестве исходных данных, по нажатию произвольной клавиши поочередно выделяет в тексте вставленное слово. Программа д. б. выполнена в BC 3.1. По какому пути идти в решении этой задачи? Последний раз редактировалось Go6a; 29.01.2008 в 17:12. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
Так никто и не поможет?
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
Хотя бы подскажите, что и по какому учебнику поизучать чтоб решить задачку!
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
UP!!!!!!!!
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Go6a, если бы Вы хотя бы написали, под DOS или под Windows собираетесь писать...
Открыть, прочитать и закрыть файл, скажем с помощью fopen, fread, fclose. Если собираетесь выделять слова цветом, то лучше, пожалуй, сразу работать с "консольным" выводом: cprintf, cputs, textcolor и т.д. - смотрите заголовок conio.h Если нужно будет искать слова и, может быть, окончания строк, то строковые функции: strchr, strspn, strlen и т.д. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
Собираюсь под DOS. Я думаю сделать так: создать 2буфера: под текст из файла и под текст из файла, в котором вставлены слова, и еще буфер под слово. Скопировать текст из файла в первый буфер, затем посимвольно копировать из первого буфера во второй до признака конца предложения(точки). Как только натыкаемся на точку - копируем символы из буфера со словом в первый буфер, а затем, продолжаем копировать из первого буфера во второй.
Я правильно мыслю? Последний раз редактировалось Go6a; 23.03.2008 в 17:29. |
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Да можно, в принципе, и так. Можно обойтись одним буфером и при выводе предложений просто дописывать к ним слово. Обычная дилемма между объёмом памяти и быстродействием. Наверное, стоит завести какую-нибудь структуру для описания строк, предложений и "координат" вставляемого слова, его ведь переписывать (или просто менять текстовые атрибуты) придется. Здесь, как обычно, несколько путей решения, выбирайте самый безболезненный.
![]() |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]() |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 27.01.2008
Сообщений: 50
|
![]()
Создаю скелет будущей программы. Первые проблемы. Почему в цикле while строка line выводится на экран нормально(1), а когда содержимое этой строки копирую посимвольно в строку dest, а затем делаю контрольный вывод dest, то строка dest на экран не выводится(2)
#include <fstream.h> #include <string.h> #include <iostream.h> int main() { const int len = 81; char word[len], line[len], dest[len]; cout << "Vvedite slovo dlya poiska." << endl; cin >> word; ifstream fin ("text.txt", ios::in | ios::nocreate); if (!fin) { cout << "Oshibka otkr. faila." << endl; return 1; } while (fin.getline (line, len)) { cout << line << endl; //1 } for (int i = 0; i <= strlen(line); i++) dest[i] = line[i]; cout << dest << endl; //2 return 0; } |
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
У Вас цикл while неправильно построен. На последнем проходе читается пустая строка, но она читается в line, которую Вы потом пытаетесь копировать.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
задача на работу с файлами и строками | MiH@N | Помощь студентам | 8 | 24.06.2008 00:44 |
Работа с русскими символами... | Sota | Помощь студентам | 5 | 31.05.2008 18:44 |
Формирование Excel-документа через OLE-сервер с Unicode-символами | sergushkin | Microsoft Office Excel | 2 | 13.04.2008 23:04 |
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу c++ | DimaG | Общие вопросы C/C++ | 1 | 01.11.2007 21:50 |
Задачка со строками... | 3ypa6uK | Помощь студентам | 5 | 15.12.2006 08:54 |