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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

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


Бывалый
***

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

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


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

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

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

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

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


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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 20:13
volvo   Ищи внимательнее, я и на С++ эту программу уже дел…   7.11.2006 20:19
Tribunal   Ищи внимательнее, я и на С++ эту программу уже де…   7.11.2006 21:33
volvo   Всегда можно сделать иначе, только вот вопрос: есл…   7.11.2006 21:47
Tribunal   нда... понятно действительно далеко не всё...хотя …   10.11.2006 21:06
volvo   Ну, так оно же выделяется: if(p) { …   10.11.2006 21:32
Tribunal   не) оно должно помимо этого еще и в исходном текст…   10.11.2006 21:39
volvo   Не знаю. Я этого в задании, например, не увидел...…   10.11.2006 21:53
Tribunal   под словом выделить там подразумевается именно цве…   10.11.2006 22:04
Tribunal   вот такой штукой можно весь текст выделить),а как …   10.11.2006 22:30
Алена   Значит, смотри, какая есть идея: работа с консольн…   12.11.2006 23:50
Tribunal   спасибо огромное,только вот я не очень разобралась…   13.11.2006 14:32
Алена   То есть? В каком "исходном"? Что выводит…   13.11.2006 14:47
Tribunal   хочется,чтобы это было читаемо...ну и красиво как-…   13.11.2006 19:21
Tribunal   а что такое p = strstr(pp, word);?   13.11.2006 20:20
Tribunal   ну вроде теперь всё нормально. вот только не могли…   18.11.2006 14:15


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

 





- Текстовая версия 8.12.2025 10:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name