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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.92
colding54
Заблокирован
#1

Поиск слова в массиве - C++

06.04.2012, 20:04. Просмотров 3536. Ответов 3
Метки нет (Все метки)

Здравствуйте. Задача стоит найти слово в массиве, если слово найдется, то вывести его индекс. Если нет, то вывести "Слово не найдено". Собственно основная часть есть, осталось сделать вывод фразы, если слово не найдено.
Была мысл(мне кажется полнейшей чушью) ввести int k; и присвоить k=i;

Вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    if(slovo!=0)
{
    for(i=0;i<a;i++)
    {
     if(strcmp(slovo,mass[i])==0)
     {
      printf("\n indeks  %d",i);
     k=i;
     }
    }
//Затем сделать такой ход здесь 
if(strcmp(slovo,mass[k]))!=0) printf("нет такого слова");
}

Это без вывода фразы, здесь работает поиск и вывод индекса
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
#include <stdio.h>
#include <iostream>
#include <string.h>
 
int main()
{
    char mass [80][80];
    char slovo[80];
    int i=0;
    int a;
    
 
FILE *f;
f=fopen("f.txt", "r");
if(f==NULL) printf("файл f.txt файл не открыт\n");
 
while(!feof(f))
{
     fscanf(f,"%s",&mass[i]);
     printf("%s\n", mass[i]);
     i++;
}
a=i;
printf("Введите слово для поиска: ");
gets(slovo);
 
    if(slovo!=0)
{
    for(i=0;i<a;i++)
    {
     if(strcmp(slovo,mass[i])==0)
     {
      printf("\n indeks  %d",i);
     }
    }
}
 
 
    return 0;
}
Текстовый файл выглядит так:
privet
hi
go
to
do
pay

Добавлено через 38 минут
Ребята получился вывод фразы, если слово не найдено.

Но что-то не дает покоя, и говорит внутри меня "бестолковый вариант!!!".
Подскажите как можно переделать вывод фразы.

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
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <conio.h>
 
int main()
{
    char mass [80][80];
    char slovo[80];
    int i=0;
    int a;
    int k;
FILE *f;
f=fopen("f.txt", "r");
if(f==NULL) printf("файл f.txt не открыт\n");
 
while(!feof(f))
{
     fscanf(f,"%s",&mass[i]);
     printf("%s\n", mass[i]);
     i++;
}
a=i;
printf("Введите слово для поиска: ");
gets(slovo);
 
    if(slovo!=0)
{
    for(i=0;i<a;i++)
    {
     if(strcmp(slovo,mass[i])==0)
     {
      printf("\n индекс слова %d",i);
      k=i;
     }
 
    }
if(strcmp(slovo,mass[k])!=0)printf("слово не найдено");
 
}
getch();
}
Добавлено через 1 час 16 минут
UP !
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 20:04     Поиск слова в массиве
Посмотрите здесь:

C++ Поиск слова в массиве символов char
C++ поиск слова
C++ Поиск слова
C++ поиск слова в массиве
как осуществить в строковом массиве поиск именно слова(!), а не..... C++
C++ Поиск слова
Поиск слова в массиве символов (строке) C++
поиск слова C++
Поиск и вствка слова в массиве C++
Поиск числа в двумерном массиве (бинарный поиск) C++
C++ В заданном символьном массиве найти слова, в которых первая буква слова встречается в нём ещё 1 раз
Расположить слова в массиве символов в алфавитном порядке по первой букве слова C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
eji
118 / 118 / 6
Регистрация: 17.09.2010
Сообщений: 288
06.04.2012, 20:16     Поиск слова в массиве #2
colding54, Измени на:
C++
1
2
3
4
5
if(strcmp(slovo,mass[i])==0)
     {
      printf("\n indeks  %d",i);
      return 0;
     }
А после цикла напиши:
C++
1
printf("Слово не найдено");
colding54
Заблокирован
06.04.2012, 20:40  [ТС]     Поиск слова в массиве #3
Задача решена! Спасибо, eji.
juliandc
0 / 0 / 0
Регистрация: 21.10.2012
Сообщений: 35
05.11.2015, 09:44     Поиск слова в массиве #4
использую такую же конструкцию для поиска команды в буфере.... ничего не выходит
буфер работает, данные приходят, записываются в прерывании....
C++
1
2
3
4
5
6
7
8
9
10
11
const char* command_open="X";   // Искомое слово в массиве
 
for(int i=0;i<BUFSIZERX;i++) // перебираем буфер
    {   
        if(strcmp(command_open,bufRX[i])==0)
        {
         message_send(message_check);  // отдельно отправка сообщения работает.
         break;
        }
    }
        clear_bufRX(); // Очищаем буфер (заполняет буфер нулями)
Yandex
Объявления
05.11.2015, 09:44     Поиск слова в массиве
Ответ Создать тему
Опции темы

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