Cita de: ghastlyX en 28 Julio 2011, 22:38 PM
Algunos de los ejercicios del tema 2 te han quedado muy largos y poco simples, suponiendo que sean correctos, puesto que no los he mirado todos. Te pongo soluciones alternativas más cortas y simples, por lo menos a mi parecer.Código (cpp) [Seleccionar]//Problema 1
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
cout << string(n - i, ' ');
for (int j = 0; j + 1 < i; ++j) cout << "* ";
cout << "*" << endl;
}
}
//Problema 2
#include <iostream>
using namespace std;
void imprime(int n, int i) {
if (i == 1) cout << n%10 << endl;
else if (n/10 == 0) cout << -1 << endl;
else imprime(n/10, i - 1);
}
int main() {
int n, i;
cin >> n >> i;
imprime(n, i);
}
//Problema 3
#include <iostream>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = 0; i < s.size() >> 1; ++i) {
if (i > 0) cout << ", ";
cout << s[i] << " + " << s[s.size() - 1 - i] << " = " << s[i] - '0' + s[s.size() - 1 - i] - '0';
}
if (s.size()&1) cout << ((s.size() > 1)?", ":"") << s[s.size()>>1];
cout << endl;
}
//Problema 4
#include <iostream>
using namespace std;
int main() {
int maxim = 0, act = 0;
char c, ant = '0';
while (cin >> c) {
if (c >= ant) ++act;
else {
maxim = max(maxim, act);
act = 1;
}
ant = c;
}
maxim = max(maxim, act);
cout << maxim << endl;
}
//Problema 6
#include <iostream>
using namespace std;
int mcd(int a, int b) {
if (a == b) return a;
return (a > b) ? mcd(a - b, b) : mcd(b - a, a);
}
int main() {
int a, b;
cin >> a >> b;
cout << mcd(a, b) << endl;
}
Muchas gracias por las sugerencias, pero el problema es que estoy haciendo los ejercicios acorde a lo que llevo visto hasta ahora, por lo que, por ejemplo, aún no podría utilizar variables de tipo string. Pero me vienen muy bien tus soluciones para volver a comparar los ejercicios cuando haya dado todo el temario.
Reconozco que mi principal fallo es no saber hacer los algoritmos más cortos y eficientes, pero estoy trabajando en ello (aunque de todas formas solo me piden que funcionen, pero me convendría aprender a simplificar).
gracias!