Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2008, 19:40   #1
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию Задачка на работу с символами и строками C++

С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов, а длина строки текста содержит не более 70 символов. Имя файла должно иметь расширение .dat. Написать программу, которая а)выводит текст на экран дисплея;
б) Выводит текст на экран дисплея еще раз, вставляя в каждое предложение в качестве последнего заданное слово, введенное с клавиатуры в качестве исходных данных, по нажатию произвольной клавиши поочередно выделяет в тексте вставленное слово. Программа д. б. выполнена в BC 3.1. По какому пути идти в решении этой задачи?

Последний раз редактировалось Go6a; 29.01.2008 в 17:12.
Go6a вне форума Ответить с цитированием
Старый 30.01.2008, 14:59   #2
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

Так никто и не поможет?
Go6a вне форума Ответить с цитированием
Старый 10.02.2008, 19:28   #3
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

Хотя бы подскажите, что и по какому учебнику поизучать чтоб решить задачку!
Go6a вне форума Ответить с цитированием
Старый 23.03.2008, 16:05   #4
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

UP!!!!!!!!
Go6a вне форума Ответить с цитированием
Старый 23.03.2008, 16:42   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Go6a, если бы Вы хотя бы написали, под DOS или под Windows собираетесь писать...

Цитата:
Сообщение от Go6a Посмотреть сообщение
По какому пути идти в решении этой задачи?
Открыть, прочитать и закрыть файл, скажем с помощью fopen, fread, fclose.
Если собираетесь выделять слова цветом, то лучше, пожалуй, сразу работать с "консольным" выводом: cprintf, cputs, textcolor и т.д. - смотрите заголовок conio.h
Если нужно будет искать слова и, может быть, окончания строк, то строковые функции: strchr, strspn, strlen и т.д.
B_N вне форума Ответить с цитированием
Старый 23.03.2008, 17:19   #6
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

Собираюсь под DOS. Я думаю сделать так: создать 2буфера: под текст из файла и под текст из файла, в котором вставлены слова, и еще буфер под слово. Скопировать текст из файла в первый буфер, затем посимвольно копировать из первого буфера во второй до признака конца предложения(точки). Как только натыкаемся на точку - копируем символы из буфера со словом в первый буфер, а затем, продолжаем копировать из первого буфера во второй.
Я правильно мыслю?

Последний раз редактировалось Go6a; 23.03.2008 в 17:29.
Go6a вне форума Ответить с цитированием
Старый 23.03.2008, 17:42   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Да можно, в принципе, и так. Можно обойтись одним буфером и при выводе предложений просто дописывать к ним слово. Обычная дилемма между объёмом памяти и быстродействием. Наверное, стоит завести какую-нибудь структуру для описания строк, предложений и "координат" вставляемого слова, его ведь переписывать (или просто менять текстовые атрибуты) придется. Здесь, как обычно, несколько путей решения, выбирайте самый безболезненный.
B_N вне форума Ответить с цитированием
Старый 23.03.2008, 17:59   #8
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
при выводе предложений просто дописывать к ним слово.
Как это лучше реализовать?
Go6a вне форума Ответить с цитированием
Старый 23.03.2008, 20:38   #9
Go6a
Пользователь
 
Регистрация: 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;
}
Go6a вне форума Ответить с цитированием
Старый 23.03.2008, 21:20   #10
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

У Вас цикл while неправильно построен. На последнем проходе читается пустая строка, но она читается в line, которую Вы потом пытаетесь копировать.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача на работу с файлами и строками 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