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

#141
Cita de: Anastacio en 19 Enero 2012, 21:27 PM
Pero for sale de programacion estructurada. No se podria hacer con programacion estructurada (do while, if then else,etc)?

¿?

¿Cómo que sale de programación estructurada? Un for no es más que una manera de abreviar un while. Si no te gusta el for, hazlo con un while.

for (i = 0; i < algo; ++i) {
    /* codigo */
}


es totalmente lo mismo que

i = 0;
while(i < algo) {
    /* codigo */
    ++i;
}


Pero vamos, no entiendo por qué dices que sale de programación estructurada. Es más, es recomendable usar bucles for en recorridos (como en este caso). Lo que sí que se aleja del concepto de programación estructurada son los goto, los exit y los return antes del final de una función. Aquí lo explican.
#142
Cita de: satu en 19 Enero 2012, 20:49 PM
Hola

Para hacer potencias con cualquier exponente puedes usar esta función:


int potencia(int base, int exp)
{
    int i, resul = 1;

    for(i = 0; i < exp; i++)
        resul *= base;

    return resul;
}


O también puedes usar la función pow() que está incluida en math.h que tiene muchas funciones matemáticas.

Saludos

Sip, eso te valdría para potencias naturales. Si quieres potencias enteras o reales, la implementación es distinta.
#143
¡Hola!

Cita de: Anastacio en 19 Enero 2012, 19:59 PM
GRACIAS!!!!!!!!!!!!!!!

Os agradezco muchisimo amigos, estoy aprendiendo recien C, y soy bastante retardado.

Tengo un problema, diferente. Con Dev C++, mi compilador, quiero compilarlo, ahora que acomode eso, y trabaja como si fuera la version anterior de mi programita. Es decir, me sigue trabajando mal la resta.

Como hago para actualizarlo, y para que el tarado compilador se de cuenta de que el codigo fuente es diferente al anterior??

Antes que nada, quería aclarar que Dev-C++ no es un compilador, es un IDE. El compilador que usa es el de MinGW, que es un port para Windows del gcc.

¿Has comprobado si al guardar has renombrado el código? Si no es esto, borra todos los ejecutables y todos los ficheros objetos de la carpeta donde esté el código y vuelve a probar. Y asegúrate de que resultado=a-b esté efectivamente después del último scanf.

Cita de: Anastacio en 19 Enero 2012, 20:26 PM
Quiero añadir mas y mas cosas a este programa. Estuve carcomiendome el cerebro por horas, pero, como harian para que pueda hacer potencias con cualquier exponente?

Depende. Con cualquier exponente, ¿te refieres a que el exponente puede ser real (por ejemplo, 23.16753)? ¿Exponente entero (1,-2,5,0,-10)? ¿O exponente estrictamente natural (1,2,3,4,5,6)? Puedes implementar una función tu mismo que calcule la potencia (hay diferencias dependiendo de cual de los tres casos anteriores consideres), a modo de ejercicio, o puedes usar las funciones de la librería math.h (me parece que la función para las potencias se llamaba pow, mírate la documentación para estar seguro).

Saludos.
#144
Cita de: satu en 19 Enero 2012, 15:55 PM
Por cierto, te vendría bien leerte esto

Saludos

Estoy de acuerdo.

Cita de: ttzz en 19 Enero 2012, 16:38 PM
Así es amigo no te anda la resta porque la operación la ases antes. No puedes hacer una resta sin tener parámetros primero pides los valores a y b (como lo muestra satu en la respuesta)y luego ases la operación así como lo hiciste con las demás operaciones de la suma


¿Ases? ¡Ases de las alturas!

[youtube=425,350]http://www.youtube.com/watch?v=ZO6giM9UAv0[/youtube]

Perdona, es que me recordaste la canción  ;)

Saludos
#145
Cita de: dante009 en 19 Enero 2012, 08:39 AM
no se haz aprendi a CHINGAR A TU MADRE yo me dedico a contestarle a los pendejos

 :¬¬ ¿De dónde salen estos payasos? ¿Te has registrado sólo para decir esta memez? Hay que joderse.

Cita de: $Edu$ en 18 Enero 2012, 08:28 AM

- Crear experimentos caseros
- Sobre el espacio y todo eso
- Sobre espiritus
- Meditacion ? xD


Hombre, ya que dices lo de los espíritus... Léete esto (la parte de los Curiosos fenómenos ligados a los infrasonidos). No soy una persona que crea en los fenómenos paranormales y en estas chorradas, pero aun así las historias y leyendas que hay detrás de ellos me fascinan. Y también me fascinan las explicaciones científicas que tienen algunos de estos supuestos fenómenos. Quien sabe, a lo mejor algún día que te aburras puedes hacer un experimento sometiéndote a infrasonidos, y nos cuentas los resultados  ;D

En instructables.com tienes instrucciones y guías detalladas para la realización de diversos proyectos de diversa índole (instrumentos musicales, armas de lego, bobinas tesla, dibujo, escultura y miles de cosas más). Es un sitio muy interesante también.

Si te gustan las matemáticas y no te importaría intentar hacer algunos retos "chungos", puedes probar resolviendo los problemas de años anteriores de la Olimpiada Matemática Española. Todos vienen convenientemente resueltos, por si te trabas mucho en alguno, y además te ayudan a abrir tu mente, a ganar en flexibilidad y en destreza mental. Además, cuando resuelves alguno, te sube la autoestima de forma considerable (o por lo menos a mí  ;D)

También puedes hacer algo de ejercicio, que seguro que con tanto tiempo en el ordenador hay algunos triglicéridos sobrantes por ahí  ;D. Nah, el ejercicio va muy bien para evitar llevar una vida totalmente sedentaria. No sé, cosas que puedas hacer de noche en tu casa: flexiones, abdominales, pesas...

Tocar algún instrumento musical también es muy buena idea. El piano/teclado, la guitarra, el violín... Lo único que si tocas de noche, sería mejor pillar un instrumento electrónico para ponerle auriculares, supongo que no es plan tampoco enturbiar el sueño de los vecinos. Servidor toca el piano (bueno, es un tecladito, no es un Steinway & Sons, tampoco), y puedo asegurar que empezar a aprender fue una de las mejores decisiones que he tomado en toda mi vida.

Bueno, estas son algunas sugerencias que te planteo aparte de la de los colegas anteriores. A ver si te decantas por algo  ;)

Saludos
#146
¡De nada!

Una última recomendación.

Cuando escribas código, intenta que quede lo más legible posible. Conviene evitar sentencias if con megacondiciones (poniendo la evaluación de la expresión en una función aparte, por ejemplo). O, si aun así prefieres poner una megacondición, al menos distribúyela a lo largo de varias líneas, así:

if( m[i][j] > m[i][j-1] &&
m[i][j] > m[i][j+1] &&
m[i][j] > m[i-1][j-1] &&
m[i][j] > m[i-1][j] &&
m[i][j] > m[i-1][j+1] &&
m[i][j] > m[i+1][j-1] &&
m[i][j] > m[i+1][j] &&
m[i][j] > m[i+1][j+1] )
#147
Oh, vaya. Antes copié la misma línea de código y no me di cuenta.

Aquí tienes un error:

fscanf(f1,"%f", matriz[i][j]);

Se te pasó poner el & antes de matriz[ i ][j]. El argumento de scanf tiene que ser el puntero al dato, no el dato.

Y otra cosa. Es recomendable que el main devuelva un entero. Deberías poner int main() en la cabecera y no main() a secas. Y al final del main, pon return 0;

Te aconsejo que compiles con -Wall y -Werror. Deberías considerar todos los warning como errores, y corregirlos convenientemente (y tu código da un par de warnings si los compilas con -Wall)

Cita de: deifk en 18 Enero 2012, 23:37 PM
max_altura=m[i][j];

esta sentencia creo que me sobraba, nose porque estaba ahí aun asi sigo teniendo error de segmentacion, ¿que es lo que que dices que es necesario inicializar?
no se supone que i y j adquieren el valor -1 al ejecutarse el for?

Me refería a que si querías acceder a m[ i ][j] antes del for, tenías que darle un valor concreto a i, j (inicializarlos).

Saludos.
#148
Tranqui, no pasa nada.

Ya había visto el error antes de que postearas. Mira:

 float max_altura;
 int i,j;

 max_altura=m[i][j];


Ni i ni j están inicializadas, por tanto el valor que tienen es impredecible (o, dicho de otra manera, es basura). Por tanto, seguramente la violación de segmento se produce cuando accedes a m[  i][j] sin haberles dado un valor previo a j,i.

Joder, he tenido que reeditar el post 100 veces porque esta vez fui yo quien se hizo la picha un lío con lo de las cursivas.
#149
Ah, claro. Eso es porque no utilizas las etiquetas para adjuntar código ([ code=c ] [ /code ]). La etiqueta [ i ] [ /i ] sirve para escribir en cursiva. Ya que estamos, a partir de ahora usa [ code ] para pegar código. Será más fácil de leer. Si puedes, hazlo ahora (no me gustaría tener que intuir cosas allá donde no las hay).
#150
fscanf(f1,"%f", matriz[j]);

Supongo que en todo caso sería

fscanf(f1,"%f", matriz[i][j]);

La función Muestra_montanas la tienes plagada de errores de este tipo. Recuerda que para acceder a un elemento de una matriz hacen falta dos índices.

Saludos