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 - Xandrete

#91
Cita de: Anastacio en  1 Febrero 2012, 20:01 PM
String h creo que la tengo.

A alguien le gustaria ser mi maestro para ayudarme a aprender C, es que me cuesta mucho.

Saludos!!!

¿Tu maestro? Aprender a programar no es como aprender a usar el sable láser. Dar clase a distancia es muy difícil, Anastacio, y en cualquier caso, no veo un beneficio muy claro. Yo en tu lugar seguiría aprendiendo de un manual o libro (los hay muy buenos) y, en caso de tener alguna duda puntual, preguntaría (como veo que ya has hecho).

Cita de: тαптяαпсє en  1 Febrero 2012, 19:05 PM
Descarga graphics.h

Y copiala junto a string.h que estará en la ruta de instalación de Dev-C++, más concretamente en una carpeta llamada include.

Bueno, se puede poner en cualquier otra carpeta siempre y cuando se compile con la opción -I[PATH] donde [PATH] sería la ruta al directorio donde tienes el fichero de cabecera (de hecho, yo no pondría ficheros de cabecera de terceros junto a los estándar (por una cuestión de orden, más que nada).

Saludos
#92
Cita de: Anastacio en  1 Febrero 2012, 17:09 PM
Yo hice un programa que reconoce cual es tu signo zodiacal. Pero, tengo problemas con la fecha. Anda de lujo, pero para pedir la fecha, tienes que darle primero el mes, sin ceros adelante, y luego, los dias. Es decir que si tienes que escribir el 26/07, en mi programa deberas escribir:726.

Yo quisiera que me transforme el numero a una fecha. Como se haria??

¿Tiene que ser necesariamente en ese formato? Si no, haz lo que te dice satu, guarda el número del mes en una variable y el del día, en otra.
#93
Cita de: prometheus48 en 31 Enero 2012, 22:53 PM
GRacias chicos, si me interesa. No es un ejercicio de clase, porque como he dicho ya varias veces tengo 14 años.

¿Qué porque quiero hacerlo sin bucle?
Bueno, porque segun mi padre es AVSOLUTAMENTE IMPOSIBLE hacerlo sin bucle y sin funcion pow. ( mi padre no sabe programar pero sabe de lo que hablo porque de pequeño programó en BASIC ). Entonces es exactamente por eso.

El usuario que puso un comentario arriba, no me acuerdo el nombre lo siento, me interesa de lo que hablas...
¿POdrías explicar un poco?

Salu2!

Tampoco hacía falta recordar mi nombre... lo podías copiar y pegar, xD.

A ver, dile a tu padre que sí que se puede hacer sin bucle. Ejemplo;

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int pow_aux(int b, int ex) {
if (ex == 0) return 1;
else return b*pow_aux(b,ex-1);
}

double pow(int b, int ex) {
if (ex > 0) return pow_rec(b,ex);
else return 1.0/pow_rec(b,-ex);
}

int main() {
int a,b;
cin >> a >> b;
cout << pow(a,b) << endl;
}


Y bueno, como te han comentado, hace falta tener base matemática para comprender como se haría en el caso del exponente real. Este es mi código:

Código (cpp) [Seleccionar]
#include <iostream>
#include <cmath>
#include <vector>
#define GRADMACLAURINSERIES 20
using namespace std;

vector<double> PolyExp;

vector<double> MacLaurinExp(int grad) {
vector<double> Poly(grad+1);
Poly[0] = 1;
for (int i = 1; i <= grad; ++i)
Poly[i] = Poly[i-1]/i;
return Poly;
}

double evalPoly(double x, vector<double> Poly) {
double result = 0;
for (int i = Poly.size()-1; i >= 0; --i)
result = result*x + Poly[i];
return result;
}

double pow_aux(int ex) {
if (ex == 0) return 1;
else return M_E*pow_aux(ex-1);
}

double pow(double b, double ex) {
double result;
ex *= log(b);
if (ex > 0) result = pow_aux(int(ex));
else result = 1.0/pow_aux(int(-ex));
result *= evalPoly(ex-int(ex),PolyExp);
return result;
}

int main() {
double x,y;
PolyExp = MacLaurinExp(GRADMACLAURINSERIES);
cin >> x >> y;
cout.precision(10);
cout << pow(x,y) << endl;
}


MacLaurinExp devuelve los coeficientes de la serie de MacLaurin (polinomio de Taylor en x=0) de la función exponencial (ex) en un vector. polyEval evalúa el polinomio para un valor de x mediante el algoritmo de Horner.

En mi código, lo que hago básicamente es plantearme una potencia xy de la siguiente manera: eln(x)*y (sólo funciona para bases mayores que 0, claro, para bases menores que 0 el resultado es, en general, complejo, y se tendría que calcular de otra manera). ln(x)*y consta de parte decimal y parte entera. Pongamos que ln(x)*y = 5.64. Como e5.64=e5e0.64la serie de MacLaurin (polinomio de Taylor en x=0) de la función exponencial, lo que hago es evaluar e5 de la manera tradicional (mediante bucles o mediante una función recursiva, como en este caso con pow_aux) y e0.64 lo obtengo mediante el polinomio de Taylor de la función exponencial. Luego multiplico los dos resultados y listo, tengo xy. Insisto en que, para comprender esto, deberías saber lo que es el polinomio de Taylor de una función. Además, considerando que tu nivel de programación todavía no es muy alto, quizás deberías centrarte en seguir aprendiendo antes de preocuparte por estas cosas.

EDITO: Oh, y M_E es una macro definida en cmath, que contiene el número e con la máxima precisión que admite la máquina.

Saludos

EI: juntando mensajes.

Ah, aquí una implementación mucho más eficiente del algoritmo para exponentes enteros. Si bien en los algoritmos dados hasta ahora el coste era Θ(n), en éste el coste es Θ(log n), lo cual es una mejora MUY importante.

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

double pow_aux(double b, int e) {
if (e == 0) return 1;
else {
double x = pow_aux(b, e/2);
if (e%2) return x*x*b;
else return x*x;
}
}

double pow(double b, int e) {
if (e < 0) return 1/pow_aux(b,-e);
else return pow_aux(b,e);
}

int main() {
double b;
int e;
cin >> b >> e;
cout << pow(b,e) << endl;
}
#94
Cita de: [Alex] en 27 Enero 2012, 22:16 PM
¿Y por qué no simplemente fopen()? es simple, es estándar y es portable.
naturalmente hay que olvidarse de errno, pero si un simple fopen pidiendo acceso de lectura no retorna un descriptor, entonces es claro que ese fichero está fuera del alcance (exista o no) y se puede dar un mensaje de que el fichero no existe o no tiene los permisos apropiados.

Saludos.

P.S → Guarda con usar inline, si llamás la función muchas veces, pero la usás poco (en un bucle, por ejemplo) está bien usarlo por que se "expande" el código una vez, ahora ... si la usás de forma dispersa lo mejor es evitar inline, por que causa que el binario engorde con código duplicado.
Depende del compilador igual si obedece inline, lo toma como una sugerencia, o si optimiza esos casos de código duplicado.

P.S 2 →  PEEERO, en este caso, consume más tiempo hacer la operación de I/O al acceder al disco duro (que, tiene una linda latencia si no es un SSD) que lo que te ahorrás en el par de instrucciones assembly de llamar una función abriendo una instancia en el stack y demás, así que aunque usases la función en un for, lo que ganás es siquiera medible.



¡Hola!

Si, claro. Si no puedes abrir el archivo y no te hace falta saber exactamente el motivo, ya va bien así (yo hacía lo propio con el open cuando me devolvía -1). Pero cuando quieres saber que no puedes abrir el archivo porque éste no existe y sólo porque éste no existe, tienes que recurrir a otros medios.

¡Saludos!
#95
Fail, entonces. Ahora, con Hotmail, hay otra opción de restablecimiento que consiste en rellenar un formulario con tu información personal (la que introdujiste en su momento en tu cuenta). Has de indicar detalles tales como tu nombre, tus apellidos, tu fecha y lugar de nacimiento, tu contraseña anterior y cosas así. Y si no, a crearse otra cuenta y a elegir una contraseña más segura. De paso, puedes agregar tu antigua cuenta y si se conecta el tipo que te la manganeó, le pides por favor que te dé la contraseña cuando termine de trollear.

P.S. Y si no es tu cuenta y lo que quieres es birlársela a otra persona, olvídate. Ya es muy triste que messenger sea una de las pocas palabras que has puesto sin faltas de ortografía (aunque sea de otro idioma).
#96
Primero me preocuparía de elegir un lenguaje y aprender a programar. Luego, piensa en solucionar eso de repetir la última letra de tus palabras. Cuando leí lo de "socio programadorrr" pensé en (música) "el gato voladorrrrrrr" y en "a bailarrrrrrrr", xD.

Saludos(ssssssssssssssssssssssssssssssssss)
#97
GNU/Linux / Re: Como eliminar ubuntu?
30 Enero 2012, 20:06 PM
Cita de: тαптяαпсє en 28 Enero 2012, 14:40 PM
Gracias por esa aportación que le servirá de mucha ayuda, para que no venga en dos días diciendo que en su ordenador aparece.

Not Operative system founded jaja

Operating System not found, en todo caso, xDDD

[youtube=425,350]http://www.youtube.com/watch?v=TMd5Bx3QulY&feature=fvsr[/youtube]
#98
Fíjate en el main, dentro del switch... el error es un poco tonto: entre todos los corchetes has puesto MAXCLIENTES en lugar de cliente, que es la variable en que se ha guardado el número introducido por el usuario. El fallo no tenía nada que ver con los atributos privados de la clase. Estabas accediendo todo el rato a una zona de memoria no inicializada, por eso lo de Segmentation Fault.

EDITO: Y por cierto, tienes otro error. En el while deberías poner and en lugar de or. Y por lo que más quieras, estás en C++, aquí puedes usar las palabras and y or, no uses || ni &&.

¡Saludos!
#99
Y sin ánimo de ofender:

CitarProgramación C/C++

Creo que tu duda figuraba mejor en Programación general.

Saludos
#100
Programación C/C++ / Re: problema en c++
30 Enero 2012, 10:32 AM
Madre mía. Mal comienzas, chico. Aquí no se hacen tareas. Y no pongas dobles vocales, que se te entiende muy bien poniendo una sola. Tampoco sé lo que significa "porfaaz" (debe ser la fusión de "porfa" y "haz"  ;D). En todo caso, "por favor". En cmath tienes una función para calcular logaritmos naturales y otra para calcular logaritmos en base 10 (en realidad, con cualquiera de esas puedes calcular logaritmos en base LAQUESEA). Y si tienes que programarla tú como ejercicio, deberías venir con algo de código hecho (no te vamos a resolver la vida) o con alguna idea (p.e., usar polinomios de Taylor).

Saludos