Plataforma: URI
Problema: 1244
Enunciado: Crie um programa para ordenar um conjunto de strings pelo seu tamanho. Seu programa deve receber um conjunto de strings e retornar este mesmo conjunto ordenado pelo tamanho das palavras, se o tamanho das strings for igual, deve-se manter a ordem original do conjunto.
Linguagem: C++
Solução:
#include <algorithm> #include <iostream> #include <vector> using namespace std; bool compara(const string &a, const string &b) { return a.size() > b.size(); } int main() { int n, pos, i; string linha, sep = " ", token; vector<string> palavras; cin >> n; cin.ignore(); while (n--) { getline(cin, linha); pos = 0; while ((pos = linha.find(sep)) != string::npos) { token = linha.substr(0, pos); palavras.push_back(token); linha.erase(0, pos + sep.length()); } palavras.push_back(linha); stable_sort(palavras.begin(), palavras.end(), compara); for (i = 0; i < palavras.size()-1; i++) cout << palavras.at(i) << " "; cout << palavras.at(i) << endl; palavras.clear(); } return 0; }
Nenhum comentário:
Postar um comentário