3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
1

Вводить только определенное слово

31.05.2015, 22:07. Показов 1075. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер, помогите пожалуйста) В общем у меня есть какое-то слово, например "zerolet", и я хочу, чтобы пользователь мог ввести только его. То есть если он вводит другое слово - ему выдает ошибку и типо введите заново, и так пока он не введет слово zerolet. Потом там можно будет немного больше слов ввести, но помогите реализовать для одного, продолжу потом для остальных. Мой примерный код:
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 trymass()
{
    char mainmass[100], mzero[10] = "zerolet", newmass[20];
    gets(mainmass); // ввожу какой-то текст
    for (int i = 0, j = 0;; ++i) // тут проверяю, чтобы это было именно слово zerolet
    {
        if (*(mainmass + i) != ' ' && *(mainmass + i) != '\0')
        {
            *(newmass + j) = *(mainmass + i); // записываю посимвольно слово, разделенное пробелами в newmass
            ++j;
        }
        else
        {
            *(newmass + j) = '\0';
            if (strcmp(newmass, mzero) == 0) // сравниваю, чтобы это было именно слово zerolet
            {
                cout << newmass << endl;
            }
            else if (*(mainmass + i) == '\0') // когда дошли до конца mainmass - выходим из for
                break;
            else // если это другое слово - пытаюсь рекурсивно обратиться к этой ф-ции снова, но не получается
            {
                cout << "введите заново\n";
                trymass();
            }
            j = 0;
        }
    }
}
Постарался подробно расписать комментарии и проблему, помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2015, 22:07
Ответы с готовыми решениями:

Не получается вводить слово и использовать его через for
Делаю корявый код базы данных студентов через структуру. Хочу чтобы пользователь мог ввести фамилию...

В тексте найти определенное слово
задание таково: прочитать первое слово из первого текстовика и найти это слово в другом текстовике...

Программа, удаляющая определённое слово
Задание следующее: В многострочном тексте (char text) удалить заданное слово (все его вхождения)....

Считать определенное слово из файла
У меня есть файл с 28 фамилиями как мне считать именно определенную фамилию( например, третью) ...

10
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
31.05.2015, 22:24 2
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
#include <iostream>
#include <string.h>
#include <stdio.h>
 
using std::cout;
 
void trymass(const char *my_word)
{
    char mainmass[100], mzero[10] = "zerolet", newmass[20];
    bool x=true;
 
    while (strcmp(mainmass,my_word)){
    if (!x) cout<<"Error input, retry again\n";
      gets(mainmass); // ввожу какой-то текст
      x=false;
    }
 
    cout<<mainmass<<"\n";
}
 
 
int main()
{
    trymass("zerolet");
}
0
3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
31.05.2015, 22:29  [ТС] 3
Цитата Сообщение от daslex Посмотреть сообщение
while (strcmp(mainmass,my_word))
не могу сравнить текст и слово, которое нужно. Суть программы, чтобы вводился текст (mainmass) и состоял он лишь из определенных слов, то есть их несколько. По этому нужно выделять каждое слово в тексте отдельно и сравнивать его с теми, которые можно вводить. Думал, если поможите реализовать сравнение для одного, я потом добавлю остальные слова.
0
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
31.05.2015, 22:30 4
почему не пользуетесь string?

C++
1
2
3
4
5
6
7
string temp,main;
int f=1;
while(f){
cin>>temp;
if(temp=="zerolet")main=temp,f=0;
else cout<<"введите заного"<<endl;
}
0
3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
31.05.2015, 22:32  [ТС] 5
нелья( условие задачи. Только массивы char
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
31.05.2015, 23:17 6
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
#include <iostream>
#include <string.h>
#include <stdio.h>
 
using std::cout;
 
void trymass(const char my_word[][10])
{
    char mainmass[5][255];
    bool x=false;
    int count=0;
 
    while (count-3){
        x=false;
        gets(mainmass[count]);
        for (int i=0;i<3;i++) if (!strcmp(mainmass[count],my_word[i])){   //В массиве разрешенных слов всего три слова, поэтому до 3
            count++;
            x=true;
        };
       if (!x) cout<<"Error input\n";
    }
 
 
cout<<"\n+++++++++++++++++++++\n";
for (int i=0;i<3;i++) cout<<mainmass[i]<<"\n";
 
}
 
 
int main()
{
    char MainArray[255][10]={
        "moskwa","london","zerolet"   //Массив с разрешенными словами
    };
 
    trymass(MainArray);
}

Не по теме:

про уникальности речи не шло, если вдруг надо.


Не по теме:

у меня указан массив для 255 слов из 10 символов, причем десятый - это ноль-признак (это на всякий случай)

0
3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
01.06.2015, 00:16  [ТС] 7
Не получается, если я ввожу "zerolet zerolet" - ошибку выдает, хотя слова разрешенные ведь должны быть
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
01.06.2015, 00:24 8
В смысле вводится одна строка "zerolet zerolet"
Ясно, просто имеет смысл сразу говорить что за задача, иначе решения могут отклоняться.
У меня вводится одно слово, не строка, оно проверяется в массиве, если оно разрешено, оно записывается в массив mainmass и вводится следующее слово (не несколько слов в строке)
0
3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
01.06.2015, 00:43  [ТС] 9
Цитата Сообщение от Avgust Посмотреть сообщение
Суть программы, чтобы вводился текст (mainmass) и состоял он лишь из определенных слов
думал нормально объяснил, простите
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
01.06.2015, 00:49 10
Ну достаточно дать пару примеров ввода (хотя бы два) и показать что должно получиться
1 с неправильными словами
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
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
 
using namespace std;
 
void trymass(const char MainArray[][255]){
 
    int count=0;
    char mainmass[10][255];
 
    gets(mainmass[count]);
    char *pch=NULL;
 
    pch=strtok(mainmass[count]," ");
    while (pch){
 
        for (int i=0;i<3;i++){
            if (!strcmp(pch,MainArray[i])){
                        strcpy(mainmass[count++],pch);
            }
        }
 
    pch++;
    pch=strtok(0," ");
    }
    
    cout<<"\n=======================\n";
    for (int i=0;i<count;i++) cout<<mainmass[i]<<" | ";
    cout<<"\n";
 
}
 
int main()
{
  char MainArray[10][255]={
        "moskwa","london","zerolet"   //Массив с разрешенными словами
    };
 
  trymass(MainArray);
}
1
3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
01.06.2015, 01:11  [ТС] 11
спасибо, примерно так, постараюсь дальше доделать)
0
01.06.2015, 01:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2015, 01:11
Помогаю со студенческими работами здесь

Удалить определенное слово из строки
Я недавно начал изучать язык програмирования. Мне задали задания удалить из строки все слова больше...

Программа, удаляющая определённое слово
Задание следующее: В многострочном тексте (char text) удалить заданное слово (все его вхождения)....

Вывести определенную строку в ответ на введенное определенное слово
Хочу написать программу, которая выводит определенную фразу в ответ на введенное определенное имя,...

Как определенное слово из первой строки переписать во вторую?
Даны две строки состоящие из слов. &quot;Добро побеждает зло&quot; &quot;Добро пожаловать домой&quot; Мне надо...

Дано слово, состоящее только из строчных латинских букв. Проверьте, является ли это слово палиндромом.
Дано слово, состоящее только из строчных латинских букв. Проверьте, является ли это слово...

Запрет на ввод букв, символов. Можно вводить ТОЛЬКО цифры
Доброго дня, форумчане. Как можно сделать запрет на ввод всех букв, спецсимволов. Чтобы можно...


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

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

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