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

Обработка строк. Найти все слова, начинающиеся с заданного символа. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ МАССИВЫ И СТРУКТУРЫ ПОВТОРЕНИЯ http://www.cyberforum.ru/cpp-beginners/thread454504.html
1. Дан одномерный массив. Найти max элемент и поменять его с последним. 2. Дан двумерный массив 10 х 10. Найти все отрицательные элементы расположенные выше главной дмагонали и заменить их нулями. 3. Дан одномерный массив из 7-и элементов, поменять местами max и min элементы. 4. Сгенерировав двумерный массив размерностью 8 Х 8 составить из случайных целых чисел в диапазоне . Найти все...
C++ Посоветуйте мне IDE. Посоветуйте мне IDE. Я сейчас в ТурбоПаскале. хочу заняться си плюс плюс. Или Борланд или Visual C++ http://www.cyberforum.ru/cpp-beginners/thread454495.html
C++ Вычислить произведение отрицательных элементов массива
В одномерном массиве, состоящем из вещественных элементов, вычислить: 1.произведение отрицательных элементов массива; 2.сумму положительных элементов массива, расположенных до максимального элемента. Изменить порядок следования элементов в массиве на обратный. ЗАРАНЕЕ БЛАГОДАРЕН!
создание стека C++
Люди помогите не могу создать стек проблема в том что нельзя использовать классы и сижу как дурак в коде нужно только создание ввод и вывод остальное сам допишу помогите плз)
C++ Найти среднее арифметическое тех элементов, которые расположены между максимальным и минимальным элементами http://www.cyberforum.ru/cpp-beginners/thread454483.html
Средствами ООП решить задачу: Случайным образом вводятся 20 вещественных элементов массива. Найти среднее арифметическое тех элементов, которые расположены между максимальным и минимальным элементами (включительно). Вывести на печать исходный массив, максимальное значение, массив между ними, среднее арифметическое значение.
C++ Вывести адреса первого и последнего элементов каждой строки. Из предыдущего одномерного сформировать двумерный массив . Вывести адреса первого и последнего элементов каждой строки. m = { 16, 78, 99, 6, -29, 19, -52, 65, -88, 51, -79, -22, 32, -25, -62, -69, -2, -59, -75, 89, -87, 95, -22, 85, -49, -75, 76, 73, -59, -52, 30, 49, -28, -48, 0, 57, -6, -85, 0, -18, подробнее

Показать сообщение отдельно
kristi1
10 / 10 / 1
Регистрация: 07.03.2010
Сообщений: 465
28.02.2012, 22:02     Обработка строк. Найти все слова, начинающиеся с заданного символа.
Добрый день! Я к вам снова с вопросом...
Задача:
Заданная строка состоит из слов, разделенных одним или несколькими пробелами. Найти все слова, начинающиеся с заданного символа и вывести их в файл
Имеется программа:
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
#include <cstring>
#include <string>
#include <fstream>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void punkt_1(ofstream &fout, ifstream& fin, char *str, char &symbol);
void punkt_2(ofstream &fout, ifstream& fin, char *str, char &symbol);
int main()
    {
//————————————————————————-
    ifstream fin;
    fin.open("in.txt");
    ofstream fout;
    fout.open("out.txt");
//————————————————————————-
    int Menu=0;
    char str[255];
    memset(str, 0, 255);
    char symbol='a';
//————————————————————————-
    cout << "1. Mark->Mark\n";
    cout << "2. Len->Len\n";
//————————————————————————-
    cin >> Menu;
    switch (Menu)
        {
//————————————————————————-
        case 1:
        punkt_1(fout,fin,str,symbol);
        break;
//————————————————————————-
        case 2:
        punkt_2(fout,fin,str,symbol);
        break;
//————————————————————————-
        case 3:
                
        break;
        case 4:
        break;
        }
//————————————————————————-
 
}
 
void punkt_1(ofstream &fout, ifstream& fin, char *str, char &symbol)
     {
        int i=0, check=0;
        char Mark='a';
        char unMark='a';
        fin >> unMark >> Mark;
        cout << "Please Enter 1 SYMBOL\n";
        cin >> symbol;
        fout << Mark <<endl;
        while (fin >> str)
        {
            for (int l=0;str[l];l++)
            if (str[l]==Mark)
            {
                str[l]=0;
                check=1;
                break;
            }
        if( str[0] == symbol )
        {
            fout << unMark << str << unMark << endl;
            } i++;
        if (check==1)
        break;
    }
}
 
void punkt_2(ofstream &fout, ifstream& fin, char *str, char &symbol)
{
        int Len = 0;
        int i=0;
        fin >> Len;
    
//  char symbol;
 
        std::cin >> symbol;
 
 
    while(fin >> str && Len > 0 &&i<Len)
    {
        if (str[i] == ' ') i++;
        if (*str == symbol){
            if (Len - (signed int)strlen(str) < 0)
                str[Len] = '\0';
 
            fout << str << " ";
        }
        Len -= strlen(str);
    }
 
}
Помогите доделать функции... Первая функция должна считывать из файла "Маркер", до которого нужно читать строку, а с клавиатуры получить символ, по которому искать слова
2 функция должна прочитать первые N символов (пробелы считаются тоже), а с клавиатуры получить символ, по которому искать, помогите пожалуйста, очень вас прошу, З.Ы. case 3 и 4 желательно не трогать=))

Добавлено через 32 минуты
Извините, первая функция работает идеально, ее делать не надо я забыла формат какой прописывать)

Добавлено через 4 часа 22 минуты
Уже вернее функцию
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
void punkt_4(ofstream &fout, ifstream& fin, char* str, char &symbol)
{
    int Len = 0, check=0;
    int i=0;
    fin >> Len; Len++;
    char ch;
    fin.unsetf(_IOSskipws);
    while(fin >> ch && i < Len)
    {
            if (ch != '\n')
            str[i++] = ch;
    }
    cout << "Enter SYMBOL"<<endl; 
    cin >> symbol;
    i=strlen(str); char Mark=str[i];
    str[i]='!'; 
 
    for (int l=0;str[l];l++)
         if (str[l]==Mark)
         {
            str[l]=0;
            check=1;
            break;
         }
      if( str[0] == symbol )
      {
         fout << endl << Mark << str << Mark << " " << endl;
      }
}
Программа должна читать из входного файла вида
Код
7
asd dsse edf s df dsf sdf sd fds fsdfds
7 - Длина строки Len
сама строка, в которой нужно прочесть первые 7 символов, включая пробелы!
Затем в конец строки то бишь на Len+1 позицию записать восклицательный знак.
с клавиатуры ввести символ, с которого начинается слово, а затем проверить, сколько слов, указанных в строке, начинаются на данную букву.
Пример со входного файлы выход будет
Код
asd
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru