Форум программистов, компьютерный форум, киберфорум
Peoples
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Игра в города (моя попытка реализации )

Запись от Peoples размещена 29.08.2016 в 13:17
Показов 3230 Комментарии 0

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
#include <iostream>
#include <vector>
#include <string>
#include <fstream> // для работы с файлами 
#include <set>      // для множеств 
#include <windows.h>  // для     SetConsoleCP
#include <algorithm> // для алгоритма find 
using namespace std;
int main() {
    SetConsoleCP(1251);  // для отображения русского языка, в свойствах консоли включить шрифт Lucida Console
    SetConsoleOutputCP(1251);
    vector<string>val;  // вектор для хранения городов (в нём записаны все города)
    ifstream ff;  // открываем файл, где записаны города с большой буквы, в столбец 
    ff.open("city.txt"); // сам файл с ними
    string s;
    while(!ff.eof()) {    // пока файл не пуст 
        getline(ff,s);  // читаем название города 
        val.push_back(s); // добавляем его в вектор 
    }
    ff.close();     // после прочтения закрываем файл
    set<string>v;  // множество для хранения уже названных городов( что бы не было повторений)
    string s1;
    while (s1!="l") {      // будем играть до тек пор пока игрок не введёт l (l=lose)
        getline(cin,s1); // читаем что вводит пользователь 
        if(!v.count(s1)) {   // если это слово не в "отбое" продолжаем 
            if(find(val.begin(),val.end(),s1)!=val.end()) { // если слово есть в списке( проверка для избежания ввода других слов кроме городов например "шляпа" )
 
                char c=s1[s1.length()-1];  // с=последнему символу введённого слова 
                if(c=='ь' || c=='ы') {  // городов на ь и ы не бывает (проверка)
                    c=s1[s1.length()-2]; // в таком случае берём предыдущую букву 
                }
                c=c-32; // переводим её в верхний регистр для сравнения 
                v.insert(s1); // вставляем слово в "отбой"
                for(vector<string>::iterator iter=val.begin(); iter!=val.end(); iter++) // идём по вектору городов 
                    if(((*iter)[0]==c) && !v.count(*iter)) { // если 1 буква города совпадает с C
                        cout<<*iter<<endl; // выводим название 
                        v.insert(*iter);  // кладём слово в "отбой"
                        break; // останавливаем, что бы не выводились остальные слова на эту букву 
                    }
            } else cout<<"Это не город!"<<endl; // если слова в списке нет выводим 
        } else cout<<"Слово уже было.  Ещё раз: "; // если введённое слово пользователем, или при поиске в векторе в отбое выводим 
 
    }
    cout<<"Вы проиграли(сдались)"<<endl; // при вводе l заканчиваем игру, выводим сообщение 
    system("pause");
    return 0;
}
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru