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

  • Автор темы Guest
  • Дата начала
G

Guest

#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();
}
 

rlib

New member
25.04.2012
1
0
#2
Лови:

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;
}
}