/* Ciandra, existe um método chamado Replace, você pode trabalhar ele em conjunto com o Find.
Segue um pequeno exemplo de como utilizar:*/
#include <iostream>
#include <string>
int main ()
{
using namespace std;
string str;
str = "R$ 20,200.00";
str.replace(str.find(','),1,"@");
str.replace(str.find('.'),1,",");
str.replace(str.find('@'),1,".");
cout << ("%s",str);
getchar(); // Prefiro usar o comando getchar(); no lugar do system("pause");
return 0;
}
Mesclar listas de dois em dois. Use a ordenação por mesclagem como a rotina de mesclagem para mesclar, pois as listas são classificadas. Isso é muito simples de implementar sem nenhuma biblioteca. Mas leva tempo o O(m^2*n)que é pequeno o suficiente se m não for grande.
Faça isso até restar apenas 1 lista, que seria sua resposta. Essa técnica é usada huffman codinge produz optimal merge pattern. Isso leva O(m*n*logm). Além disso, para listas de tamanhos semelhantes, pode ser feito parallelcomo podemos selecionar um par de lista e mesclar em paralelo. Supondo que você tem, em m processorsseguida, o algoritmo pode idealmente executado em O(n*logm)vez deO(m*n*logm)
Para formatar essa sequência usamos o seguinte algoritmo:
include <list>
#include <iostream>
using namespace std;
int main(void)
{
list<int> a = { 1, 3, 5, 7, 9}, b = { 2, 4 , 6, 8, 9, 10}, c; //c is out
for(auto it1 = begin(a), it2 = begin(b); it1 != end(a) || it2 != end(b);)
if(it1 != end(a) && (it2 == end(b) || *it1 < *it2)) {
c.push_back(*it1);
++it1;
}
else {
c.push_back(*it2);
++it2;
}
for(auto x : c)
cout<<x<<' ';
cout<<'\n';
}
Mesclar listas de dois em dois. Use a ordenação por mesclagem como a rotina de mesclagem para mesclar, pois as listas são classificadas. Isso é muito simples de implementar sem nenhuma biblioteca. Mas leva tempo o O(m^2*n)que é pequeno o suficiente se m não for grande.
Faça isso até restar apenas 1 lista, que seria sua resposta. Essa técnica é usada huffman codinge produz optimal merge pattern. Isso leva O(m*n*logm). Além disso, para listas de tamanhos semelhantes, pode ser feito parallelcomo podemos selecionar um par de lista e mesclar em paralelo. Supondo que você tem, em m processorsseguida, o algoritmo pode idealmente executado em O(n*logm)vez deO(m*n*logm)
Para formatar essa sequência usamos o seguinte algoritmo:
include <list>
#include <iostream>
using namespace std;
int main(void)
{
list<int> a = { 1, 3, 5, 7, 9}, b = { 2, 4 , 6, 8, 9, 10}, c; //c is out
for(auto it1 = begin(a), it2 = begin(b); it1 != end(a) || it2 != end(b);)
if(it1 != end(a) && (it2 == end(b) || *it1 < *it2)) {
c.push_back(*it1);
++it1;
}
else {
c.push_back(*it2);
++it2;
}
for(auto x : c)
cout<<x<<' ';
cout<<'\n';
}
Para escrever sua resposta aqui, entre ou crie uma conta.
Compartilhar