Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
posol_7
16 / 16 / 13
Регистрация: 19.11.2014
Сообщений: 156
#1

Поиск в файле

13.03.2015, 20:55. Просмотров 230. Ответов 1
Метки нет (Все метки)

Условие
В файле содержатся фамилии, инициалы и номера телефонов. Вводится шаблон поиска вида: ?? 34 ?? Вывести все номера телефонов, соответствующие определенному шаблону. цифры в шаблоне не обязательно размещаются подряд.

Исправьте пожалуйста=)
C++
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
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "fstream"
#include "cstring"
#include "string"
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    ifstream fout;
 
    const int SIZE=15;
    char *name = new char[SIZE];
    string str, temp; 
 
    cout << "Открыть файл: "; 
    cin.getline(name,SIZE);
    fout.open(name);
    if(!(fout.is_open()))
    {
        cout << "Файла с именем " << name << " не существует!";
        _getch();
        return 0;
    }
    while(fout)
    {       
        getline(fout, str);
        cout << str << endl;
    }
    cout << endl;
 
    cout << "Введите строку-шаблон: ";
    getline(cin, temp);
 
    bool equals = temp.length() == str.length() ? true : false;
    do{
        for (int i = 0; i < temp.length() && equals; i++)
        {
            if(isdigit)
            {
                if (temp.at(i) == '?') continue;
                if (temp.at(i) != str.at(i)) equals = false;
            }
        }
        if (equals) cout << "Подходит!" << endl;
        else cout << "Не подходит!" << endl;
    }while(!fout.end);
 
    _getch();
    return 0;
}

Что не так?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2015, 20:55
Ответы с готовыми решениями:

Поиск в текстовом файле всех слов, заданных в другом текстом файле
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом...

Реализовать поиск заданного файла в древе каталогов и поиск указанной информации в этом файле
Имеется много папок в каждой папке есть файл proc.txt, как можно по всем этим...

Поиск в файле
Сведения об автомобиле состоят из его марки, номера и фамилии владельца. Дан...

Поиск в файле
Добрый вечер! не подскажите пожалуйста, как правильно нужно считать данные из...

Поиск в файле
Пользователь записывает данные в файл (номер аккаунта, фамилию владельца,...

1
Mistik
19 / 19 / 14
Регистрация: 25.02.2015
Сообщений: 138
13.03.2015, 22:49 #2
А зачем вы собственно велосипед то изобретаете? Может быть вам стоит забивать номера телефонов, маску и использовать регулярное выражение по заданной маске?

А если ты хочешь энтузиазма, тогда держи пример проверки на совпадение по маске виде "??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
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
#include <iostream>
#include <conio.h>
 
 
const int count = 3;
const int MAX_BUFF = 256;
 
int pos(const int* array, char* temp)
{
    char digit[count][MAX_BUFF] = { 0 };
    char tempDigit[MAX_BUFF] = { 0 };
    bool change = false;
 
    int result = 0;
 
    for (int i = 0; i < count; i++)
        itoa(array[i], digit[i], 10);
 
    for (int i = 0; i < count; i++)
    {
        for (int j = 0; j < strlen(digit[i]); j++)
        {
            if (digit[i][j] == '\0') break;
            if (temp[j] == '?') continue;
 
            if (digit[i][j] == temp[j] && !tempDigit[0] )
            {
                result = array[i];
                if ( !change ) strcpy(tempDigit, digit[i]);
            }
            else if (digit[i][j] == temp[j] && !change )
            {
                for (int k = 0; k < strlen(tempDigit); k++)
                {
                    if (digit[i][k] == tempDigit[k]) continue;
                    if ( digit[i][k] != tempDigit[k] && digit[i][k] == temp[k])
                    {
                        result = array[i];
                        break;
                    }
                    else if (digit[i][k] != tempDigit[k] && tempDigit[k] == temp[k])
                        break;
                }
            }
         }
         change = false;
    }
 
    return result;
}
 
int main()
{
    int phone[3];
 
    for (int i = 0; i < count; i++)
    {
        std::cout << "Enter phone " << "[" << i << "]: ";
        std::cin >> phone[i];
    }
 
    char temp[MAX_BUFF] = { 0 };
    std::cout << "Enter template: ";
    std::cin >> temp;
 
    std::cout << pos(phone, temp);
 
    getch();
}
Накидал быстренько рабочий пример...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2015, 22:49

Поиск в файле
Всем привет. Помогите пожалуста, у меня есть файли.тхт в нем хранятса данние...

Поиск в файле
Как организовать поиск в файле по фамилии или studID. Чтобы выводилась полная...

Поиск в файле
Есть файл, который содержит список учеников и их оценки Выглядит примерно так:...


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

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

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