Обработка Символьных Строк

Тема в разделе "Общие вопросы по С и С++", создана пользователем -, 1 апр 2012.

  1. Гость

    помогите написать программу к задаче:
    Упорядочить список городов согласно правилам игры в города (последняя буква названия города д.б. первой буквой следующего). Сформировать упорядоченный массив, исключив из него "неупорядоченные" названия. Название первого в игре города в вводить с клавиатуры.пробывал сам написать но вышел только целый букет косяков
    Код (C++):
    #include "stdafx.h"
    #include <iostream>
    #include <conio.h>
    using namespace std;

    void vvod (char *str);
    void goroda (char *str);

    int _tmain(int argc, _TCHAR* argv[])
    {
    setlocale(LC_ALL,"");
    char string[100];
    char *st;
    st=(char*)&string;
    vvod(st);
    goroda (st);
    return 0;
    }

    void vvod (char *str)
    {
    cout<<"Введите название города\n";
    gets(str);
    }

    void goroda (char *str)
    {
    int i=0,j=0,k,z=0,o=0,n=0;
    int l[100];
    k=strlen(str);
    char goroda[][20]={"London",
    "New-York",
    "Washington",
    "Kiev",
    "Voronezh",
    "Harkov"
    };
    char perehod[20][20];
    for (int g=0;g!=6;i++)
    {
    l[i]=strlen(goroda[i]);
    g++;
    n++;
    }
    if (islower(*(str+k)))
    {
    *(str+k)=toupper(*(str+k));
    }
    i=0;
    j=l[i];
    for (;z<k;z++)
    {
    perehod[o][z]=*(str+z);
    }
    o++;
    z=i;
    for (;o<n+1;o++)
    {
    while (*(str+k)!=goroda[i][j])
    {
    j=l[i];
    i++;
    }
    for (;z<l[i];z++)
    {
    perehod[o][z]=goroda[i][z];
    }
    }
    i=0;
    j=0;
    cout << "Упорядоченный массив \n";
    for(;i<n+1;i++)
    {
    cout << "\n";
    for(;j<l[i];j++)
    {
    cout << perehod [i][j];
    }
    }
    getch();
    }
     
  2. rlib

    rlib New Member

    Регистрация:
    25 апр 2012
    Сообщения:
    1
    Симпатии:
    0
    Лови:

    main.cpp:

    Код (C++):
    #include "game.h"
    int main()
    {

    StrArr towns;
    towns.push_back("kiev");
    towns.push_back("moscow");
    towns.push_back("warsaw");
    towns.push_back("vladivostok");
    towns.push_back("alma-ata");
    towns.push_back("astrahan");
    towns.push_back("new-york");
    game(towns);
    return 0;
    }
    game.h
    Код (C++):
    #ifndef GAME_H
    #define GAME_H

    #include <string>
    #include <vector>
    using namespace std;

    typedef vector<string> StrArr;
    typedef vector<string>::iterator StrArrIt;
    StrArr sort(StrArr towns, string first);
    void game(StrArr);

    #endif // GAME_H
    game.cpp
    Код (C++):
    #include "game.h"
    #include <algorithm>
    #include <iostream>

    vector<string> sort(vector<string> towns, string first) {
    StrArr res;
    StrArrIt it;
    string town = first;
    bool done;
    do {
    done = true;
    res.push_back(town);
    for (it = towns.begin(); it != towns.end(); ++it) {
    if ((*it)[0] == town[town.size()-1] ) {
    done = false;
    town = *it;
    towns.erase(it);
    break;
    }
    }
    } while (!done);
    return res;
    }

    void game(StrArr towns) {

    cout << "Enter one of the town names: " << endl;
    StrArrIt it;
    for (it=towns.begin(); it!=towns.end(); ++it) {
    cout << *it << endl;
    }
    cout << endl;
    string first;
    cin >> first;
    if ( (it = find(towns.begin(), towns.end(), first)) == towns.end()) {
    cout << "No such town in the list. Game over!" << endl;
    }
    else {
    towns.erase(it);
    StrArr res = sort(towns, first);
    cout << "The results are as follows:" << endl;
    for (it=res.begin(); it!=res.end(); ++it)
    cout << *it << endl;
    cout << "All done!" << endl;
    }
    }
     
Загрузка...

Поделиться этой страницей