Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - bigfu

#31
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!
#32
Cita de: .mokk. en 28 Julio 2011, 00:54 AM
El segundo no lo entiendo:Porque el resultado seria 6 si "i" se encuentra en la posicion 0 ? o como?

El ejercicio pide que introduzcamos un numero (N) y una posición (i). Por tanto, fijándonos en el ejemplo, vemos que N=25064 e i=2, por lo que el resultado es 6. i es la posición en el número, empezando desde la derecha (i=1->resultado=4; i=3->resultado = 0). No sé si me he explicado bien...

Por cierto, le acabo de echar un vistazo a tu código del triángulo. Aunque en el ejercicio ponga de ejemplo N=5, el código debe realizarse para cualquier número, par o impar. Es que he visto que solo lo construye para los número impares  ;)
Y otra cosa, la altura es igual a N. Según tu código, la altura es N/2.

Gracias por intentarlo y postearlo, te animo a que le eches otro vistazo al código anterior y te animes con el ejercicio 2  :D
#33
Programación C/C++ / Re: Sumar un porcentaje
24 Julio 2011, 18:45 PM
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
double total (double, double);
double iva2 = 18;

int main(){
       double precio, iva;
       cout << "Introduzca el precio: " ;
       cin >> precio;
       cout << "Introduzca el iva: " ;
       cin >> iva;
       if (iva > 0)
               cout << total (precio,iva);
       else
               cout << precio+(precio*(iva2/100));

       return 0;
}

double total ( double precio, double iva)
{
       double total = precio+(precio * (iva / 100));
       return total;
}


He quitado el stdafx.h, cambiado void main() por int main() y he añadido return 0 al final del main y no me da problema alguno...
#34
Ya está añadido el contenido del tema 2 y los ejercicios correspondientes. Mirar primer post.
#35
Programación C/C++ / Re: Sumar un porcentaje
24 Julio 2011, 15:52 PM
total = precio + (precio*IVA/100);
#36
Define la variable area en la funcion.

EDIT: Vale, no me habia fijado en que la estabas definiendo xD
#37
Bueno, pues intenta hacer un ejemplo facilito en un papel con el código de la función, paso por paso. Verás como lo entiendes rápidamente.

Y la conversión para hexadecimal es igual que las demás, lo único es que si el resto está entre 10 y 15, ha de sustituirse por A, B, C, D, E o F.
#38
Sabes como hacerlo manualmente?? es decir, sabes convertir entre bases numéricas??
#39
El ejercicio 7 es un juego, en el que juegan el humano contra el ordenador. El ordenador decide quien empieza y tienen que ir restando 1, 2 o 3 en turnos alternos hasta que ya no haya más objetos que coger. El que coge el último objeto, pierde.
Pues bien, con esas condiciones, tienes que desarrollar un algoritmo en el que SIEMPRE gane la máquina.
#40
¿Qué es lo que no entiendes del unsigned long conversor? ¿Lo que es o lo que hace?