IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> поиск слова в тексте,выделение,замена регистра букв в слове, C++
Tribunal
сообщение 7.11.2006 16:13
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


Задание вот такое:
С помощью текстового редактора создать файл,содержащий текст, длина которого не превышает 100 символов(длина строки не должна превышать 70 символов).
Имя файла должно иметь расширение dat.Написать программу,которая:
-выводит текст на экран дисплея;
-по нажатию произвольной клавиши выделяет в тексте заданное слово(ввести слово с клавиатуры);
-выводит текст на эккран дисплея еще раз, заменяя в заданном слове строчные букв прописными.

я воспользовалась поиском и нашла решение задачи на паскале,но всё же работа со строками там сильно отличается от с++.

вот например,можно ли с файла(ну или с экрана) считать тект в массив по словам?как осуществлять поиск конкретного слова,особенно если есть несколько вхождений.

и вот насчет смены букв строчных на пописные...кажется у них код различается на определенную величину...или как их можно заменить?

очень прошу о помощи)


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Алена
сообщение 12.11.2006 19:50
Сообщение #2


Гость






Значит, смотри, какая есть идея: работа с консольным приложением в MSVC и с DOS-приложением в Turbo C++ существенно различается, поэтому делаем так:

// Я отлаживала программу под DOS - компилятором (TC 3.0), поэтому я это слово определила...
// Тебе (как я понимаю, для консольного приложения Windows), эту строчку надо убрать...
// (к сожалению, MSVC у меня нет, поэтому проверить вывод не могу, но должно работать)
#define RUN_IN_DOS

#ifndef RUN_IN_DOS
#include <windows.h>
#endif

#include <fstream.h>
#include <iostream.h>
#include <conio.h>;
#include <string.h>;

#include <ctype.h>


int main() {

char s[71];

ifstream infile("Text700.txt");
while (!infile.eof()) {
infile.getline(s, 80);
cout << s << endl;
}

cout << "Enter the Word: ";
char word[50];
cin >> word;

// Делаем 2 прохода: на первом - выделяем слово красным цветом,
// а на втором - меняем регистр символов
for(int pass = 0; pass < 2; pass++) {

infile.seekg(0, ios::beg);
infile.clear();

while(!infile.eof()) {

infile.getline(s, 80);
char *pp = &s[0];

do {

char *p;

p = strstr(pp, word);
if(p) {

while(pp != p)
#ifdef RUN_IN_DOS
cprintf("%c", *pp++);
#else
cout << *pp++;
#endif

// первый проход - pass = 0, установить цвет выводимых символов в красный
if(!pass) {
#ifdef RUN_IN_DOS
textcolor(RED);
#else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED);
#endif
}
// А вот это - второй проход, тут меняем регистр ...
else {
for(int i = 0; i < strlen(word); i++)
*(p+i) = toupper(*(p+i));
}

for(int i = 0; i < strlen(word); i++)
#ifdef RUN_IN_DOS
cprintf("%c", *pp++);
#else
cout << *pp++;
#endif

// первый проход, pass = 0 - восстановить серый цвет
if(!pass) {
#ifdef RUN_IN_DOS
textcolor(LIGHTGRAY);
#else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
#endif
}

}
else break;

} while(1);

while(*pp)
#ifdef RUN_IN_DOS
cprintf("%c", *pp++);
cprintf("\n\r");
#else
cout << *pp++;
cout << endl;
#endif
}
cout << "Press any key" << endl;
getche();

}
return 0;
}

Возникает вопрос: "Зачем вообще понадобилось ключевое слово RUN_IN_DOS?"... Затем, что я просто напросто без существенной правки приложения перекомпилирую его под другую OS, и оно должно работать. Просто гораздо удобнее... smile.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Tribunal   поиск слова в тексте,выделение,замена регистра букв в слове   7.11.2006 16:13
volvo   Ищи внимательнее, я и на С++ эту программу уже дел...   7.11.2006 16:19
Tribunal   Ищи внимательнее, я и на С++ эту программу уже де...   7.11.2006 17:33
volvo   Всегда можно сделать иначе, только вот вопрос: есл...   7.11.2006 17:47
Tribunal   нда... понятно действительно далеко не всё...хотя ...   10.11.2006 17:06
volvo   Ну, так оно же выделяется: if(p) { ...   10.11.2006 17:32
Tribunal   не) оно должно помимо этого еще и в исходном текст...   10.11.2006 17:39
volvo   Не знаю. Я этого в задании, например, не увидел......   10.11.2006 17:53
Tribunal   под словом выделить там подразумевается именно цве...   10.11.2006 18:04
Tribunal   вот такой штукой можно весь текст выделить),а как ...   10.11.2006 18:30
Алена   Значит, смотри, какая есть идея: работа с консольн...   12.11.2006 19:50
Tribunal   спасибо огромное,только вот я не очень разобралась...   13.11.2006 10:32
Алена   То есть? В каком "исходном"? Что выводит...   13.11.2006 10:47
Tribunal   хочется,чтобы это было читаемо...ну и красиво как-...   13.11.2006 15:21
Tribunal   а что такое p = strstr(pp, word);?   13.11.2006 16:20
Tribunal   ну вроде теперь всё нормально. вот только не могли...   18.11.2006 10:15


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 16.08.2025 5:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"