Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
danikgavr
1 / 1 / 0
Регистрация: 05.12.2008
Сообщений: 4
#1

считать текст из файла и вывести на экран слова меняя каждые соседние между собой - C++

18.05.2009, 19:28. Просмотров 1979. Ответов 0
Метки нет (Все метки)

Есть прога: считать текст из файла и вывести на экран слова меняя каждые соседние между собой. Есть код рабочий :
Код
#include <iostream>
using std::cout;
#include <fstream>
using std::ifstream;
#include <vector>
using std::vector;
#include <string>
using std::string;
#include <conio.h>

// Функция проверяет, является ли символ ch буквой
// (Работает только с английскими буквами).
bool is_letter(char ch);

int main(){
// Читаем текст из файла.
ifstream ifs("input.dat");
string str;
char c;
while((c=ifs.get())!=EOF){
str += c;
}
// Разбиваем текст на подстроки.
vector<string> vec;
string elem;
for(int i=0;i<str.length();i++){
char ch = str[i];
if(is_letter(ch)){
if(((i-1)>=0)&&(!is_letter(str[i-1]))){
vec.push_back(elem);
elem = string(1, ch);
}else elem+=ch;
}else{
if(((i-1)>=0)&&(is_letter(str[i-1]))){
vec.push_back(elem);
elem = string(1, ch);
}else elem+=ch;
}
}
vec.push_back(elem);
// Меняем местами парные слова, не трогая знаки препинания.
string toReplace;
int replacePos;
for(int i=0;i<vec.size();i++){
if(is_letter(vec[i][0])){
if(toReplace.size()==0){
toReplace = vec[i];
replacePos = i;
}else{
string temp = vec[i];
vec[i] = toReplace;
vec[replacePos] = temp;
toReplace = string();
}
}
}
// Выводим числа в консоль.
for(int i=0;i<vec.size();i++){
cout << vec[i];
}
// Чтобы консоль не закрылась после вывода результатов ожидаем
// нажатие клавиши.
getch();
return 0;
}

bool is_letter(char ch){
return (ch>='a')&&(ch<='z');
}
Но есть проблемка, мне нужно через string. Не знаю как разбить тогда этот текст. Может ктонибудь подскажет или на мысль наведет как записать? Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2009, 19:28     считать текст из файла и вывести на экран слова меняя каждые соседние между собой
Посмотрите здесь:
C++ Введенный текст вывести на экран, меняя местами каждые два слова
Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова C++
C++ Написать программу, которая считывает текст из файла и выводит его на экран, меняя местами каждые два соседних слова
C++ Написать программу,которая считывает текст из файла и выводит его на экран,меняя местами каждые два соседних слова.
C++ Вывести текст, меняя соседние слова местами
Написать программу, которая считывает текст с клавиатуры и выводит его на экран, меняет местами каждые соседние слова C++
Считать текст из файла и вывести его на экран, заменив цифры от 0 до 9 на слова C++
C++ Считать текст из файла и вывести на экран слова из него в алфаыитном порядке
C++ Считать из файла текст; вывести на экран все слова текста, упорядочив их по размеру
C++ Считать английский текст из файла и вывести на экран слова, начинающиеся с гласных букв
Считать текст из файла и вывести на экран только предложения, начинающиеся с введенного с клавиатуры слова C++
Считать текст из файла и вывести на экран все слова текста, начинающиеся с гласной буквы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru