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

Проверка корректности введенного города игра "Города" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Из данной задачи составить параллельную программу вычисления произведения элементов вектора http://www.cyberforum.ru/cpp-beginners/thread1210159.html
Помогите, пожалуйста, из данной задачи составить параллельную программу вычисления произведения элементов вектора, используя функцию широковещательной рассылки #include "mpi.h" #include <time.h> #include <stdio.h> #include <stdlib.h> int main (int argc, char *argv)
C++ Решето Эратосфена с графикой Нужно сделать решето эратосфена, с введением чисел от 2 до N, и чтобы выводил все числа и вычеркивал, не знаю как это реализовать, знания языка на уровне структурного, нужно сделать примерно как на картинке, кодю в VisualStudio, ну и не очень знаком вообще с реализацией графики, помогите http://www.cyberforum.ru/cpp-beginners/thread1210138.html
Передвинуть элементы в массиве указателей на объекты fstream C++
Здравствуйте. Есть прога в которой одновременно надо обрабатывать до 10 файлов. Для этого создан массив указателей на fstream. Проблема такая: при закрытии, например 4-го файла, надо в массиве указателей на файлы сдвинуть элементы к началу массива, начиная с 4 позиции. То есть: fstream fList; //массив указателей на файлы ........................... for (int i = 4; i < 10; i++) ...
Размерность массива без ее ввода с клавиатуры C++
В условии сказано:" Из файла (имя файла вводится с клавиатуры) считывается массив целых чисел. Размер массива заранее неизвестен...". дальше массив нужно обработать. Как сделать так, чтоб размер массива не вводить с клавиатуры, а он определялся сам после считывания из файла?
C++ Начинающий, посоветуйте, с чего начать? http://www.cyberforum.ru/cpp-beginners/thread1210099.html
Здравствуйте, давно хотел заняться программированием, и сейчас, со всей серьезностью решил изучать. Помогите решить непростой для меня вопрос. C чего начать?, какую литературу и какой язык программирования. Облазил много форумов и на каждом, советуют разное, по этому не могу определиться что из предложенного нужно всерьез начать изучать. Очень надеюсь на вашу помощь.
C++ Какую сортировку массива применить, чтобы посчитать количество перестановок двух соседних элементов? Всем привет. Я раньше создавал подобную тему, но решил создать новую. Вопрос следующий. Скажите, каким видом сортировки массива можно воспользоваться, чтобы посчитать количество перестановок двух соседних элементов? Дело в том, что сортировка пузырьком - медленный способ. А в сортировке слиянием, как мне сказали, подсчитать количество перестановок проблематично. Заранее спасибо. Добавлено... подробнее

Показать сообщение отдельно
Katerinka
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 5

Проверка корректности введенного города игра "Города" - C++

17.06.2014, 07:15. Просмотров 554. Ответов 7
Метки (Все метки)

Здравствуйте, пишу программку "Города", т.е. пользователь называет какой-нибудь город, допустим, "Омск". Компьютер считывает последнюю букву и на нее осуществляет поиск города в векторе (города туда записываются из файла) и выдает этот город, предварительно записав его в "использованные". Все подфункции работают, единственная проблема с проверкой: следует проверить, ввел ли пользователь город на последнюю букву слова компьютера или он ввел просто левый город. Не получается придумать, как это реализовать.

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
using namespace std;
struct city {// структура под города пользователя
    char *gorod;
    bool used;
    city(const char* g, bool u) {
        if (g == NULL || strlen(g) == 0)
            cout << "Не верно введен город!\n";
        else {
            gorod = new char[strlen(g) + 1];
            strcpy(gorod, g);
            gorod[strlen(gorod)] = 0;
            used=u;
        }
    }
    ~city() {
        if (gorod != NULL) delete[] gorod;
    }
 
};
 
int FileRead (char* fileName, vector <city*> &vse_goroda) {
    FILE* f;//для хранения всех городов
    f=fopen(fileName, "r"); // FILE -- тип переменной "Файл". fopen -- функция открытия файла для чтения ("r"), перезаписи ("w"),
    if (f == NULL) 
    {
        cout << "Файл не найден " <<fileName<< endl;
        return 0;
    }
    else {
        char* bufCity = new char[50];
        while (fscanf(f, "%s ", bufCity) == 1) {
            vse_goroda.push_back(new city(bufCity, false));
        }
        delete[] bufCity;
    }
    fclose(f);// Закрываем файл.
    return 0;
};
 
bool provCity (char* userCity, vector <city*> &vse_goroda){
    bool znach=false;
    for (int i = 0; i < vse_goroda.size(); i++)
    {
        if (strcmp(vse_goroda.at(i)->gorod, userCity) == 0 &&!vse_goroda.at(i)->used)
        {
            vse_goroda.at(i)->used=true;
            znach=true;
            break;
        }
    }
    return znach;
}
 
char posl_Symvol (char* userCity, vector <city*> &vse_goroda)
{
    char symvol_pos=0;
    for (int i=0; i<strlen(userCity); i++)//возвращает кол-во симвлов в массиве если выполнится оператор sizeof(string), ответ будет 100, а если — функция strlen(string), ответ 6.
    {
        symvol_pos=userCity[strlen(userCity)-1];//проверяем посл букву слова пользователя
 
        if (symvol_pos=='ь'|| symvol_pos=='ы'|| symvol_pos=='й'|| symvol_pos=='ъ')
        { 
            symvol_pos=userCity[strlen(userCity)-2];
        }
    }
    return symvol_pos;
}
 
 
char* findCity_firstSymbol (char symvol_per, vector <city*> &vse_goroda) {
    char* res=0;
    char symvol_perBig=toupper((unsigned char)symvol_per);
    for (int i=0; i<vse_goroda.size(); i++)//возвращает количество элементов в векторе, перебираем все города вектора
    {
        if ((vse_goroda.at(i)->gorod[0] == symvol_perBig) && !vse_goroda.at(i)->used)
        {
            vse_goroda.at(i)->used=true;
            res=vse_goroda.at(i)->gorod;
            break;
        }
    }
    return res;
}
 
int main () {
    setlocale(LC_ALL, "");// включаем в консоли русский язык
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    vector <city*> vse_goroda;
    char* userCity = new char[255]; 
    char symvol_pos=0;
    char symvol_per=0;
    bool znach;
    char* fileName ="E:\\goroda.txt";// строка для хранения имени файла 
    FileRead(fileName, vse_goroda);
    char* compCity;
    printf("Пожалуйста, введите город: \n");
    while(true)
    {
        scanf("%s", userCity);// считывание города пользователя
        if (provCity (userCity,vse_goroda)==true)
        {
            symvol_pos=posl_Symvol(userCity,vse_goroda);// ход компьютера
            compCity=findCity_firstSymbol(symvol_pos,vse_goroda);
            if (compCity!=0)
            {
                cout<<compCity<<"\nВаш ход!"<<endl;
            }
            else 
            {
                cout<<"Вы выиграли!"<<endl;
                system ("pause");
                break;
            }
        }
        else cout<<"Такого города нет в РФ и странах СНГ или его уже называли!"<<endl;
    }
    _getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru