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

Проверить, есть ли слово в массиве - C++

Восстановить пароль Регистрация
 
Nikolaj50
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 5
04.08.2012, 01:38     Проверить, есть ли слово в массиве #1
Нужна помощь. Вообщем , есть символьный массив , пользователь вводит слово и нужно проверить есть ли это слово в массиве по стоке,столбцам или же по диагонали т.е

k y e j l d t r
a e s f h j k l
q w e e y k i m
q t b p u i p i

пользователь введ допустим : keep

k y e j l d t r
a e s f h j k l
q w e e y k i m
q t b p u i p i

Заранее благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2012, 01:38     Проверить, есть ли слово в массиве
Посмотрите здесь:

Определить длину строки. Проверить, есть ли в ней слово “one”. C++
C++ Составить программу для проверки, есть ли в массиве одинаковые элементы. Проверить на наличие одинаковых элементов линейные таблицы А [10] и В [12]. И
Проверить есть ли в массиве одинаковые числа C++
Есть натуральное число n. Проверить, есть ли в том числе 3 одинаковых цифры C++
C++ Проверить, является ли третье слово в массиве знаком "="
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rescr1pt
31 / 32 / 1
Регистрация: 03.10.2011
Сообщений: 61
04.08.2012, 08:24     Проверить, есть ли слово в массиве #2
Ну ищем символы по символам. Циклом или алгоритмом STL - вам решать.
Простая задача, если хорошо подумать.
Если что то не умеете, то обращайтесь конкретнее.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.08.2012, 10:20     Проверить, есть ли слово в массиве #3
Самое примитивное, например, так. Первую букву слова сравниваете с первой буквой строки в массиве. Если несовпадение, переход к следующей строке, если совпадение, то берётся вторая буква слова и сравнивается со второй буквой строки в массиве, и т.д. пока строка не закончится. Если всё совпало со строкой массива, то слово в массиве есть. По строкам прошлись, совпадений нет, переход к столбцам. Если там не совпало, проверка диагонали.
Чтобы упростить сравнение, можно использовать функцию: int strcmp(const char *str1, const char *str2). Возвращает 0, если str1 равна str2.
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2012, 13:10     Проверить, есть ли слово в массиве #4
Цитата Сообщение от Nikolaj50 Посмотреть сообщение
Нужна помощь. Вообщем , есть символьный массив , пользователь вводит слово и нужно проверить есть ли это слово в массиве по стоке,столбцам или же по диагонали т.е
k y e j l d t r
a e s f h j k l
q w e e y k i m
q t b p u i p i
пользователь введ допустим : keep
k y e j l d t r
a e s f h j k l
q w e e y k i m
q t b p u i p i
Заранее благодарен!
Вот с помощью STL
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
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
using namespace std;
 
int main()
{
    int i, j;//Счётчики
    int diag;//Будет содержать число диагоналей в которые помещается столбец
    string data;//Будет содержать символы столбца/диагонали
    string word;//Будет содеражть в себе слово из текста
    string line;//Будет содержать текущую строку текста
    vector<string> text;//Будет содержать в себе текст из файла (2D char массив)
    vector<string>::iterator it;//Это итератор - конструкция позвояющаяя работать
    //с конейнером как с массивом
    ifstream ifs("input.txt");//Инициализируем поток чтения для файла данных
    if(!ifs.is_open())
        cout<<"Error open input.txt\n";
    else
    {
        //Построчное чтение файла
        while(getline(ifs,line))
            text.push_back(line);//Добавляем строку в наш 2-мерный массив символов
        ifs.close();
        cout<<"\tText in file\n";
        //Вот цикл печати элементов вектора
        //сделал его просто дабы была понята роль итератора
        for(it = text.begin(); it < text.end()    ;it++)
        {
            for(i  = 0;         i < (*it).length();i++)
                cout<<(*it)[i]<<" ";//Печатаем [i] букву строки и пробел после неё
            cout<<endl;
        }
        cout<<"Enter word : ";cin>>word;
        cout<<"\tSearch in Columns\n";
        //проверка на случай если длинна слова больше длинны столбца
        if(text.begin() - text.end() < word.length())
            cout<<"Word length is more than length of text column\n";
        else//Поиск в столбцах
        for( j = 0           ;  j < word.length() ; j++)
        {
            data.resize(0);//Очищаем строку
            //Накапливаем строку с данными столбца
            for(it = text.begin(); it < text.end()    ;it++)
                data += (*it)[j];
            if(word.find(data,0) != -1)
                cout<<word<<" found in col     : "<<data<<endl;
            else
                cout<<word<<" not found in col : "<<data<<endl;
        }
        it = text.begin();
        line = (*it);
        cout<<"\tSearch in Rows\n";
        //проверка на случай если длинна слова больше длинны строки
        if(line.length() < word.length())
            cout<<"Word length is more than length of text row\n";
        else//Поиск в строках
        for(it = text.begin(); it < text.end()    ;it++)
        {
            if((*it).find(word,0) != -1)
                cout<<word<<" found in row     : "<<(*it)<<endl;
            else
                cout<<word<<" not found in row : "<<(*it)<<endl;
        }
        cout<<"\tSearch in Daigonals\n";
        //Получаем число диагоналей число символов в строке - число строк
        diag = line.length() - (text.begin() - text.end());
        if(diag < 0)
            diag = (-1)*diag;
        for(i = 0; i < diag; i++)
        {
            data.resize(0);//Очищаем строку
            //Накапливаем строку с данными диагонали
            if(text.begin() + i < text.end())
            {
                for(j = i; j < word.length(); j++)
                {
                    it = text.begin() + j;
                    data += (*it)[j];
                }
                if(data.find(word,0) != -1)
                    cout<<word<<" found in diag     : "<<data<<endl;
                else
                    cout<<word<<" not found in diag : "<<data<<endl;
            }
        }
    }
    return 0;
}
Миниатюры
Проверить, есть ли слово в массиве  
-=ЮрА=-
Заблокирован
Автор FAQ
04.08.2012, 13:23     Проверить, есть ли слово в массиве #5
Небольшая абстракция всего здесь http://codepad.org/O0Z6ppTO
Nikolaj50
0 / 0 / 0
Регистрация: 04.08.2012
Сообщений: 5
04.08.2012, 23:31  [ТС]     Проверить, есть ли слово в массиве #6
Спасибо большое.
Yandex
Объявления
04.08.2012, 23:31     Проверить, есть ли слово в массиве
Ответ Создать тему
Опции темы

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