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

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

Войти
Регистрация
Восстановить пароль
 
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
#1

Вывод предложений, начинающихся с тире - C++

02.06.2012, 12:13. Просмотров 888. Ответов 3
Метки нет (Все метки)

Всем привет) У меня такое задание - написать программу,которая считывает текст из файла и выводит на экран только предложения начинающиеся с тире,перед которыми могут находиться только пробельные символы.
Вот что у меня получилось.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 359.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <fstream>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    const int len=120;
    char word[len], line[len];
    char del[]= ".,!?/<>|)(*::\ ";
    int l_word=0;
    int k=0;    
    int count=0;
    ifstream fin("text.txt", ios :: in );
    if (!fin) {cout <<"Don't worry!!!!"<<endl; }
    while (fin.getline(line,len))
    {
        
        for (int i=0; i<strlen(line); i++)
        {
            if((line[i]=='-' || line[i+1]=='-') && line[i]==' ')
                cout <<line<<endl;
 
        }   
 
    }
    
    return 0;
}
Дело в том, что не выводятся предложения, начинающиеся просто с тире. Как условие правильно составить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2012, 12:13     Вывод предложений, начинающихся с тире
Посмотрите здесь:

C++ вывод предложений начинающихся с тире
Поиск и вывод слов начинающихся на 'l' C++
C++ Вывод предложений, состоящих из заданного количества слов
Вывод фамилий, начинающихся на заданную букву C++
C++ Вывод предложений в обратном порядке
C++ Вывод на экран слов, начинающихся с гласных букв
Вывод на экран предложений с заданным числом слов C++
Вывод предложений, не содержащих запятые C++
Вывод информации о маршрутах начинающихся или кончающихся в заданном пункте C++
C++ Вывод слов начинающихся и оканчивающихся на гласные буквы
C++ Вывод на консоль предложений, содержащих двухзначные числа
Вывод в столбик первых слов всех предложений C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Awful
12 / 12 / 0
Регистрация: 09.11.2009
Сообщений: 65
02.06.2012, 12:27     Вывод предложений, начинающихся с тире #2
C++
1
2
3
4
5
6
7
{
if (line [i]==' ')
    continue;
if (line [i] =='-')
    cout <<line<<endl;
else break;
}
Соответственно по пробелу перейдем на следующий символ, по тире - выведем строку. Если попадется что-то еще - строка не начинается с тире, конец цикла
KOPC1886
27 / 6 / 0
Регистрация: 28.10.2010
Сообщений: 352
02.06.2012, 13:09  [ТС]     Вывод предложений, начинающихся с тире #3
Awful, а можете поподробнее объяснить условие, а то не очень понятно.
Awful
12 / 12 / 0
Регистрация: 09.11.2009
Сообщений: 65
02.06.2012, 15:13     Вывод предложений, начинающихся с тире #4
Цитата Сообщение от KOPC1886 Посмотреть сообщение
Awful, а можете поподробнее объяснить условие, а то не очень понятно.
ну вот в общем конечный вид внутреннего цикла. У нас есть строка line,начинаем просмотр с 0-го символа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
        for (int i=0; i<strlen(line); i++)
        {
               if (line [i]==' ') // Если символ пробел( пробелы возможны по условию)
                    continue; /*  переходим на следующий шаг цикла - будем проверять 
следующий элемент*/
               if (line [i] =='-') /* на каком-то шаге мы найдем тире (если были пробелы), 
либо сразу( если пробелов не было), либо вообще сюда не дойдем
, если нам когда-то встретится другой символ.*/
                    cout <<line<<endl; // выводим строку , соответствующую условию
               else break; /* если встретился сторонний символ( не пробел и не тире) 
- прерываем цикл, это не искомая строка.*/
        }
Yandex
Объявления
02.06.2012, 15:13     Вывод предложений, начинающихся с тире
Ответ Создать тему
Опции темы

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