No hay espacios que yo sepa, sólo tabuladores, no sé si da lo mismo. Lo único que Anghios quiere es conseguir los números del final, todas las cadenas son de ese tipo por lo que no hace falta comprobarlo.
Un saludo.
No hay espacios que yo sepa, sólo tabuladores, no sé si da lo mismo. Lo único que Anghios quiere es conseguir los números del final, todas las cadenas son de ese tipo por lo que no hace falta comprobarlo.
Un saludo.
@Joaking said:
Bienvenido, y no te preocupes, somo tos buenas personanas menos Lent :wiii:
:facepalm: EPIC FAIL!
Bienvenida al foro!! Espero que pases unos buenos ratos por aquí ^^
Post #12
Bien, antes que nada empezaré explicándoos qué son los prototipos, cuáles son sus ventajas y como se usan. Sabemos que podemos declarar (crear) primero una variable y después darle un valor. Pues bien, con las funciones es lo mismo, podemos primero declararlas y luego inicializarlas (decir lo que van a hacer). Para declarar una función sin inicializarla se usan los prototipos. Una de las ventajas de los prototipos es que el código queda más organizado y puedes ver más rápidamente qué funciones tiene tu programa. Además si estás haciendo un programa junto con más gente y tú por ejemplo te encargas de hacer la función main y otro se encarga de hacer la función x() si tú pones un prototipo de esa función y después la usas dentro de main aunque todavía no esté inicializada y el programa no sabe qué tiene que hacer, no se producirá ningún error de compilación, por supuesto después al intentar ejecutarlo sí, pero al compilarlo no.
Para hacer el prototipo de una función primero se pone el tipo de datos que devuelve, después entre paréntesis y separados por comas los tipos de datos que va a recibir esta función, después del tipo de datos podemos opcionalmente poner un nombre a ese tipo de datos que recibe, que puede coincidir o no con el nombre que le pondremos después en la implementación. Por último se escribe punto y coma (;) después de los paréntesis. Esto parece muy difícil pero con un ejemplo se ve mucho más claro:
#include
//Esto es el prototipo de la función mifuncion. Gracias
//al prototipo podemos declararla primero y después de
//la función main implementarla, cosa que antes no se
//podía, había que implementarla antes de main
void mifuncion(char c, int i, int i2, float f);
//Otras posibles implementaciones COMPLETAMENTE VÁLIDAS
//void mifuncion(char w, int j, int a, float asdfasdas);
//void mifuncion(char,int,int,float);
int main() {
mifuncion('@',25,40,1.25);
return 0;
}
//Ahora podemos dejar encima de main todos los prototipos
//e implementar todas las funciones debajo de main
void mifuncion(char c, int i, int i2, float f) {
//operaciones de la función
}
Los prototipos podéis usarlos (e incluso os recomiendo que lo hagáis) en todas vuestras funciones. Si no los usáis no pasa nada.
Ahora vamos a ver una forma de interrumpir los bucles. Sirve tanto para el bucle while como para el for. Si en algún momento queremos interrumpir un bucle y salir de él sin ejecutar nada más que haya dentro del bucle usaremos la palabra clave break. Es bastante fácil, vamos a ver un ejemplo con un bucle while, aunque funciona exactamente igual con un bucle for. Creo que no está de más aclarar que si hay un bucle dentro de otro break sólo saldrá del interior, no de los dos.
int num;
while(1){//como 1 significa verdadero siempre se cumplirá
num++;
if(num == 12) {//Si el número es 12...
break;//...salimos del bucle
}
printf("Este mensaje ya se ha mostrado %d veces",num);
}
//gracias al break el programa puede salir del bucle
Antes de empezar con los punteros he visto que había gente que tenía dudas con algunos signos. Aquí tenéis casi todos los que vais a usar (hay algunos más como operadores de bits, pero no son muy usados):
Signo de suma: +
Signo de resta: -
Signo de multiplicación: *
Signo de división: /
Signo de módulo*: %
(*) El módulo de a y b (a % b) es el resto de hacer la división entre a y b. Por ejemplo 3 % 2 da 1, que es el resto de dividir 3 entre 2.
No debéis intentar usar el símbolo ^ para las potencias, en otros programas sirven para eso pero en programación es uno de los operadores de bits menconado antes que no tiene nada que ver con las potencias.
Ahora ha llegado el momento de enseñaros qué son los punteros. Esto puede llegar a ser muy difícil pero estoy seguro de que lo vais a entender. Las variables que creamos en nuestros programas se guardan en la memoria RAM de nuestro ordenador. La memoria RAM es como una gran ciudad. Dentro de la ciudad hay muchas casas (que serían las variables) donde puede vivir gente (que serían los datos que almacena). Una misma casa puede ser vendida a otras personas y cambiar sus dueños, pero una vez construyes una casa siempre está en la misma dirección (por ejemplo C/San Benito 4). Obviamente las direcciones de nuestras variables no tienen nombres de calles sino que son números. Hay un tipo de variable especial para guardar direcciones de memoria, los punteros. Al igual que hay muchos tipos de casas hay muchos tipos de variables. Hay casas grandes como mansiones y casas pequeñas como chabolas, pues con las variables igual. Hay variables que pueden guardar muchos datos y ocupan mucha memoria y otras que guardan menos y ocupan menos. Por ejemplo las variables tipo float ocupan bastante más que las variables char, por eso hay punteros de diferentes tipos de datos. Hay punteros a int, punteros a char, punteros a float, y punteros a otros tipos de datos que no hemos visto. Para declarar un puntero lo hacermos como lo haríamos con una variable normal pero con un asterisco (*) delante. Por ejemplo:
int *puntero;
La variable puntero es un puntero a int. Puede guardar direcciones de memoria de variables de tipo int. ¿Cómo se hace eso? Es muy fácil, para obtener la dirección de memoria de una variable se pone el símbolo ampersand (&) delante. O sea, que cuando en scanf poníamos & delante del nombre de la variable era por que en realidad enviábamos a la variable la dirección de memoria de esa variable, más adelante veremos por qué. Para asignar una dirección de memoria a un puntero lo hacemos así:
int var, *punt;
punt = &var;
Como podéis observar el símbolo * se pone delante al crearlo para indicar que es un puntero, pero no se hace al asignarle un valor (en este caso el valor es la dirección de memoria de var).
Esto puede ser algo difícil de asimilar, así que pongo un ejercicio para aseguraros que lo entendéis. Si tenéis alguna duda preguntadla.
Ejercicio 27 (M): Crea un programa que asigne el valor a una variable con scanf y luego muestre el valor, pero que a scanf le pase un puntero y no directamente la dirección de la variable con &.
En el próximo post veremos más a fondo los punteros y habrá más ejercicios.
¿Qué es lo que no entiendes de los arrays?
Como ya te dije mil veces, por favor, hazme preguntas concretas. No entiendes qué son, cómo crearlos, cómo usarlos... Por favor se más concreto aunque tengas que hacer más preguntas...
Probablemente haya métodos para leer solo un determinado número de caracteres, por ejemplo creo que readline te lle hasta el primer salto de línea, pero todo esto no te hace falta obligatoriamente. Usa el método substr de la clase String para extraer los caracteres de la posición x hasta la y de la cadena que has obtenido del archivo. Un saludo.
Estuvimos hablando por msn pero se tuvo que ir antes de solucionarlo. El archivo sigue el patrón:
PALABRA - numero variable de tabuladores - valor numérico que se desea conseguir - fin de línea
Yo no he trabajado nunca con expresiones regulares pero si mal no recuerdo se desean extraer los números de todas las cadenas. Creo que la palabra del principio sólo contiene letras.
Ideone es básicamente una web donde puedes compilar y ejecutar online programas escritos en casi cualquier lenguaje (están todos los que usamos aquí, java, C, C++, VB y muchísimos más muy raros que no conocía xD). Lo bueno que tiene es que no necesita descargar nada, no necesitas tener un compilador instalado en el ordenador, puedes subir el código fuente y ejecutarlo y ver la salida que produce. Además puedes descargarte el ejecutable y si no desactivas la opción se queda guardado el código en la web para que puedas verlo después. Lo bueno que tiene eso es que lo puedes usar en cualquier ordenador con internet, pero solamente te sirve si tu programa es en línea de comandos, por que no te enseña las ventanas que crea tu programa ni nada de eso xD.
¿Qué es ideone?
Ideone es más que un sitio para pegar código; es un compilador y depurador en línea que permite
compilar y ejecutar código en más de 40 lenguajes de programación.
¿Cómo utilizar ideone?
Elija un lenguaje de programación, pegue su código fuente y datos de entrada en las cajas de texto. Entonces marque o desmarque ejecutar código (si desea o no ejecutar su programa) y privado ( si no desea listar su código en la página de código recientes), haga clic en el botón enviar y observe su código ser ejecutado.
Se te olvidó dejar los créditos:
[http://www.aulafacil.com/photoshop/Lecc-01.htm][0]">[http://www.aulafacil.com/photoshop/Lecc-01.htm][1]
un saludo.
[0]: <a href=
[1]: http://www.aulafacil.com/photoshop/Lecc-01.htm
@Anghios said:
Y al rededor de cuanto cuesta un hosting que si lo permita, o un dedicado?
[http://www.banahosting.com/dedicated-servers.shtml][0]">[http://www.banahosting.com/dedicated-servers.shtml][1]
El más barato que he encontrado 58$/mes _xD_
[0]: <a href=
[1]: http://www.banahosting.com/dedicated-servers.shtml
Tumbate boca abajo (con la espalda recta xD) y aplica calor seco por esa zona. Pide a tu madre que te planche una toalla y cuando esté caliente te la pones o algo así. Alivia bastante el dolor, aunque lo mejor es que vayas al médico.