24 / 6 / 3
Регистрация: 06.12.2015
Сообщений: 308
1

Не работает поиск подстроки в строке

28.12.2016, 14:04. Показов 320. Ответов 6
Метки нет (Все метки)

Не работает поиск подстроки в строке в ф-ии void ChangingStudent(). Заранее спасибо
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
125
126
127
128
129
130
131
132
133
134
135
136
137
#include "stdafx.h"
#include <conio.h>
#include <windows.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <locale> 
#include <cstring>
 
 
using namespace std;
 
    struct AUZ
    {
        char *name = new char[100];
        double GPU;
    };
    struct AUZ1
    {
        char *name1 = new char[100];
        double GPU1;
    };  
 
    void AddingStudent()
    {           
        ofstream f;
        f.open ("C:\\My_Project\\data_base.txt", ios::app | ios::out);      
        int n;
        cout << "Сколько студентов необходимо добавить в базу? ";
        (cin >> n).get();
        cout << "\n\n";     
        AUZ*  student = new AUZ[n];
        for (int i = 0; i < n; i++)
        {
            cout << "Введите ФИО студента - ";
            
            cin.getline(student[i].name, 50);           
            f << student[i].name << " - ";
            cout << "\n";
            
            cout << "Введите средний балл студента - ";
            (cin >> student[i].GPU).get();
            f << student[i].GPU << endl;
            cout << "\n";
        }
        cout << "Если хотите продолжить нажмите любую клавишу.";
        cout << "\n\n";
        cin.get();
        f.close();          
    }   
 
    void ChangingStudent()
    {
        ifstream f("C:\\My_Project\\data_base.txt", ios::binary | ios::in);
        string s;
        int n = 150;    
 
        AUZ1* student1 = new AUZ1[n];
        AUZ  student;
        char str[80];
 
        for (int i = 0; i<n; i++)
        {
            if (f.eof()) break;
            f.getline(str, sizeof(str)).eof();
            student1[i].name1 = str;
            cout << student1[i].name1 << endl;      
        }
        cout << "Введите фамилию студента\n";
        cin >> s;
        while (getline(f, s))
        {   
            size_t pos = s.find(s);
            int i = 1;
            if (pos != std::string::npos)
            {
                cout << i << " - совпадений найдено\n";
            }
            else cout <<"Совпадений не найдено\n";
            i++;            
        }
 
        cin.get();
        cout << "\n\n";
        f.close();      
    }
 
    void DeleteStudent()
    {
 
    }   
 
    int main()
    {
        //установить вручную шрифт Lucida Console в свойствах окна консоли
 
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251); 
 
        setlocale(LC_ALL, "");
        CreateDirectory(L"C:\\My_Project", NULL);       
 
        int k;
 
        AUZ student;        
 
        for (;;)
        {
            cout << "База данных студентов группы АУЗ-261\n";
            cout << "Выберите пункт меню\n";
            cout << "1. Добавление карточки студентав базу\n";
            cout << "2. Измение карточки студента\n";
            cout << "3. Удаление карточки студента\n";
            cout << "4. Выход из программы\n";
 
            (cin >> k).get();
            if (k < 4 && k>0)
            {
                switch (k)
                {
                case 1:
                    AddingStudent();
                    break;
                case 2:
                    ChangingStudent();
                    break;
                case 3:
                    DeleteStudent();
                    break;              
                }
            }
            else if (k <= 0 || k > 4) cout << "Ошибка ввода\n\n";
            else break;         
        }   
        cin.get();          
        return 0;
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2016, 14:04
Ответы с готовыми решениями:

Masm поиск подстроки в строке, не правильно работает прога
Здравствуйте, есть программа по поиску подстроки в строке .386 .model flat, stdcall option...

Поиск подстроки в строке strpos (работает странно). Что я делаю не так?
Здравствуйте, стоит задача определить есть ли в строке подстрока, ниже приложу код. echo...

Поиск подстроки в строке и вывод подстроки
Удалите пожалуйста, разобрался

Ввести с клавиатуры строку. Найти шаблон во введенной строке (поиск подстроки в строке)
Помогите написать программу. Ввести с клавиатуры строку. Ввести с клавиатуры коротенькую строку -...

6
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
28.12.2016, 17:25 2
Цитата Сообщение от Mnemonik39 Посмотреть сообщение
s.find(s);
WTF?
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
28.12.2016, 17:35 3
скорее всего 0 выдает, строку в строке ищите-же
0
24 / 6 / 3
Регистрация: 06.12.2015
Сообщений: 308
28.12.2016, 18:44  [ТС] 4
Переделал ф-ию вот так... блин не пойму что надо сделать, чтобы он находил подстроку в строке)) так тоже не работает
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
void ChangingStudent()
    {
        ifstream f("C:\\My_Project\\data_base.txt", ios::binary | ios::in);
        string s, s1;
        int n = 150;    
 
        AUZ1* student1 = new AUZ1[n];
        AUZ  student;
        char str[300];
 
 
        for (int i = 0; i<n; i++)
        {
            if (f.eof()) break;
            f.getline(str, sizeof(str)).eof();
            student1[i].name1 = str;
            cout << student1[i].name1 << endl;      
        }
        s1 = str;       
        cout << "Введите фамилию студента\n";
        cin >> s;
        while (getline(f, s1))
        {   
            int i = 1;
            size_t pos = s1.find(s1);           
            if (pos != std::string::npos)
            {
                cout << i << " - совпадений найдено\n";
            }
            else cout <<"Совпадений не найдено\n";
            i++;            
        }
 
        cin.get();
        cout << "\n\n";
        f.close();      
    }
0
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
28.12.2016, 18:58 5
Первый цикл (который сам по себе кривой) до конца файл считывает? Тогда второй не будет работать. И зачем вообще повторное чтение, если ты всё сохранил в массив? В 16-й строке что за присваивание такое? Какого типа name1?
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
28.12.2016, 19:01 6
Серьёзно? не ну блин, ты реально это сам пишешь? это не трольбот ?)))
было
Цитата Сообщение от Mnemonik39 Посмотреть сообщение
s.find(s);
стало
Цитата Сообщение от Mnemonik39 Посмотреть сообщение
s1.find(s1);
ничего не смущает не? все норм считаешь?)))
0
24 / 6 / 3
Регистрация: 06.12.2015
Сообщений: 308
28.12.2016, 19:06  [ТС] 7
Да это я затупил просто) сорри)

Добавлено через 1 минуту
А первый цикл он просто выводит список студентов в группе, а второй уже ищет по вводимой подстроке соответствия по тмоу что содержится в файле
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2016, 19:06
Помогаю со студенческими работами здесь

Поиск подстроки в строке
народ , помогите плиз исправить ошибки в процедуре, нужно чтобы прога искала подстроку в строке и...

Поиск подстроки в строке
Здравствуйте, подскажите пожалуйста, что то сам не могу сообразить как это сделать. Есть к примеру...

Поиск подстроки в строке
здравствуйте, помогите пожалуйста в написании программы под TASM. задача: Найти индекс первого...

Поиск подстроки в строке
Добрый вечер. Помогите пожалуйста с заданием, нужно срочно его сделать. Сам текст: даны 2 массива...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru