Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 33
1

Переход от чтения с файла к вводу с клавиатуры

28.11.2016, 18:02. Показов 813. Ответов 4
Метки нет (Все метки)

Добрый вечер. Помогите пожалуйста. Тема в заголовке.
Тут суть проста. Дано несколько предложений, а нужно выводить предложения начинающиеся с однобуквенных слов.

Пример:
Canoe was full of water but we weren't scary. Wasn't it the part of adventure? I never felt so good.

Вывод:
I never felt so good.Canoe was full of water but we weren't scary. Wasn't it the part of adventure?

Код работает корректно для файла, но у меня не получается изменить его на ввод с клавиатуры.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
 
char * ltrim(char * S)  
{
    int i, l = strlen(S);
 
    for (i = 0; i < l; i++)
 
    {
        if (*S != ' ') break;
        S++;
    }
 
    return S;
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    FILE *Inp;
 
    int i, j, k, Pi, Pj;
 
    char buff[500];
 
    char Phr[500][500];
 
    char c;
 
    char *Str;
 
 
    
 
    for (i = 0; i < 500; i++)
        for (j = 0; j < 500; j++) 
            Phr[i][j] = 0;
 
    
 
    
 
    Inp = fopen("C:\\Users\\txt.txt", "r");
 
    if (Inp == NULL)
    {
        cout << "Error by open!" << endl;
        system("pause");
        return -1;
    }
 
    
    Pi = 0;
    Pj = 0;
 
    while (1)
    {
        
 
        for (i = 0; i < 500; i++) buff[i] = 0;
 
        
 
        if (fgets(buff, 500, Inp) == NULL)
        {
            k = 0;
            break;
        }
 
        
 
        for (i = 0; i < 500; i++)
        {
            c = buff[i];  
 
            if (c == 0) break;  
 
            if ((c != 13) && (c != 10)) 
            {
 
                Phr[Pi][Pj++] = c;    
 
                if ((c == '.') || (c == '!') || (c == '?'))  
                {
                    Pi++;  
                    Pj = 0;
                }
 
            }
        }
 
    }
 
    
 
    fclose(Inp);
 
    
 
    for (i = 0; i < Pi; i++)
    {
        Str = ltrim(Phr[i]);
        if (Str[1] == ' ') cout << Str << " ";
    }
 
    
 
    for (i = 0; i < Pi; i++)
    {
        Str = ltrim(Phr[i]);
        if (Str[1] != ' ') cout << Str << " ";
    }
    system("pause");
    return 0;
 
}
Работу нужно срочно сделать. Хотя бы направьте в правильном направлении!
Спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2016, 18:02
Ответы с готовыми решениями:

Поиск в <SELECT> по вводу с клавиатуры
Сбобсна сабж. Трабла в том, что когда я получаю event.keyCode, то получаю все время код для...

Хук для чтения с клавиатуры. Добавление по кодам клавиатуры
Есть вот такой хук для считывания клавиш globalKeyboardHook gkh = new globalKeyboardHook(); ...

Каким образом после чтения из файла, узнать позицию для чтения следующего куска байт
Здравствуйте, задача такова есть файл, размером 1000 байт, нужно открыть его считать 100 байт,...

Присоединить к вводу с файла и выводу на него
Присоединить к вводу с файла и выводу на него function ok(y, z: byte): boolean; var x:...

4
7048 / 6066 / 2757
Регистрация: 14.04.2014
Сообщений: 25,996
28.11.2016, 21:14 2
Лучший ответ Сообщение было отмечено bekkonrofl как решение

Решение

Строки 51-58 и 104 убрать.
C++
1
2
3
4
5
6
7
8
9
10
    while (1)
    {
        buff[0] = '\0';
        if (fgets(buff, 500, stdin) == NULL)
        {
            k = 0;
            break;
        }
 
        //...
0
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 33
28.11.2016, 22:41  [ТС] 3
Тем самым получается бесконечный ввод
0
7048 / 6066 / 2757
Регистрация: 14.04.2014
Сообщений: 25,996
28.11.2016, 23:19 4
Ты EOF вводишь? Вместо очередной строки жми Ctrl-Z и Enter.
1
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 33
28.11.2016, 23:52  [ТС] 5
Все разобрался, работает, большое спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2016, 23:52

Запись и считывание из файла. Вывод не соответствует вводу
void STF(String n){ ofstream file(&quot;343.txt&quot;,ios_base::app); file&lt;&lt;n.c_str()&lt;&lt;endl;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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