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 - do-while

#1001
Paso por paso.

El for no tiene cuerpo, todas las comprobaciones se hacen en la condicion de continuidad. (Date cuenta de que nada mas terminar la declaracion del for, hay un punto y coma, por lo tanto el valor se le asigna a ord al salir del for)

Cualquier cadena termina en cero, y cero en C significa falso y distinto de cero verdadero. Por lo tanto

nom1[k] && nom2[k]

significa que for se ejecutara mientras las dos cadenas tengan un caracter, o lo que es lo mismo, que el for finalizara cuando se acabe una de las dos cadenas (o las dos).

La siguiente condicion te dice que el for continuara mientras las letras de la posicion actual sean iguales.

Es decir, de todas todas se saldra del for si alguna de las cadenas ha terminado o si el caracter de la posicion i es distinto.

(cambio la i por la k para que no me salga en cursiva)

Caso1: nom1 ha terminado
   En este caso, nom1[k] == 0, por lo tanto si la segunda cadena es mas larga, 0 - letra (no simbolo, sino letra) sera menor que cero. Y si la segunda cadena tambien ha terminado, las dos seran iguales:

Hola
Holaa

o sino

Hola
Hola

(compruebalo mirando las condiciones del for con lapiz y papel)

Caso2: nom2 ha terminado
   Si se da este caso, nom1 no habra terminado (estudia sobre la evaluacion del y logico), pero nom2 si, por lo tando nom1[k]!=0 y nom2[k] == 0, suponiendo que nom1[k] es una letra del alfabeto, se tiene que nom1[k] > 0 y nom2[k] == 0. Es decir, nom1[k] - nom2[k] > 0, lo cual tiene su logica, ya que todas las letras de nom1 seran iguales a las de nom2 mientras no se termine nom2, pero nom1 sera mas larga:

Holaa
Hola
(como antes, comprueba con lapiz y papel que efectivamente es asi)

Caso3: nom1[k] != nom2[k]
   Ahora no ha terminado ni nom1, ni nom2 y se ha encontrado una letra diferente en las cadenas. Por lo tanto nom1[k] - nom2[k] sera menor o mayor que cero, segun nom1[k] sea menoro o mayor alfabeticamente que nom2[k].

(como siempre, compruebalo con lapiz y papel)

¡Saludos!
#1002
¡Buenas!

hace mucho que no pongo codigos... pero viendo que la gente se anima...



/*
* mystrcmp < 0 si s1 < s2
* mystrcmp ==0 si s1 == s2
* mystrcmp > 0 si s1 > s2
*/
int mystrcmp(char* s1,char* s2)
{
    for(; *s1 && *s2 && (*s1) == (*s2) ; s1++ , s2++);

    return ((*s1) - (*s2));
}



Eso si trabajas con funciones, sino en tu codigo podrias poner


for(i = 0 ; nom1[i] && nom2[i] && nom1[i] == nom2[i] ; i++);

ord = nom1[i] - nom2[i]; /* y ord tendra los valores de la funcion anterior */


Espero no haberme confundido, ya que ni siquiera he probado el codigo...  :silbar:

¡Saludos!
#1003
 ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) Esto por wikileaks
(Y no hay emoticono que describa lo que siento por EEUU y el apoyo que por su parte han recivido los torturadores y asesinos en la guerra de Irak)
#1004
Programación C/C++ / Re: compilar dll
25 Octubre 2010, 03:06 AM
¿No estaras intentando meter todo el codigo de arriba en un fichero?

Tienes tanto el fichero .cpp, como el .h y el .def

Solo tienes que crear el proyecto copiar el codigo y compilar.

Si no sabes lo que es un fichero de cabecera (header) o crear un programa partiendo de multiples ficheros fuente, empieza por lo mas basico.

¡Saludos!
#1005
Cita de: DARKDMR en 20 Octubre 2010, 05:31 AM
no es por nada pero estoy viendo clase de ello y te puedo asegurar que sin colocar lo que me has dicho el programa corre lo de las comillas se me ah pasado y gracias por la ayuda.

Disculpa, yo este año tambien he empezado un ciclo de programacion y te puedo asegurar que lo que enseñan esta lejos de ser correcto. Supongo que utilizaras un compilador borland (el 5.XX ejemplo) que te dejara compilar con un monton de errores que un compilador que respete el estandar no te dejara compilar.


int main()

Estas diciendo que main es una funcion que devuelve un entero. Y por mucho que diagas lo contrario estas cometiendo un error, ya que no estas devolviendo nada al entorno que lo ejecuta.

Lo de las comillas ya se te ha dicho.

Me parece que tambien te han dicho que estas guardadndo valores reales en valores enteros, por lo que estas perdiendo informacion.

Y por ultimo (creo), scanf necesita que le pases direcciones de memoria para poder cambiar variables y en alguno de los que tu has puesto (buscalo), has puesto directamente una variable en lugar de su direccion... (que por cierto, me acabo de dar cuenta, tambien te lo habian dicho...

Si se te corrige es porque no sabes o porque haces mal las cosas. Si no quieres aceptar lo que se te dice en las respuestas no preguntes. Nos ahorraras tiempo.

¡Saludos!
#1006
Cita de: thedoctor77 en 17 Octubre 2010, 13:38 PM
Vuelvo a repetir porque no sé si es que me explico muy mal o es que no se me lee xD que desastre!!

eso no se puede hacer, y te explico por qué

Imaginemos que tenemos un fichero con una línea de datos que queremos recuperar.

Sin leer la línea--> LLamamos a la función eof() y nos devuelve false, como es normal.

Leemos la primera línea, primera y única. Llamamos al getline y a continuación llamamos a eof() y nos devuelve FALSE!!!! porque necesita una lectura más. es decir:

Si intentamos leer una nueva línea como no hay ahora es cuando eof devuelve TRUE.

¿Tan dificil es entender lo que digo?
un saludo!!

¬¬

Revisa el pseudo que te he dejado y comprueba que es lo que hace con el ejemplo que me has puesto


Leer fichero //cargo la linea del fichero

EOF?
No -> Proceso la informacion

//Ahora ya no queda informacion en el fichero
Leer fichero //No hay informacion y se activa EOF

EOF?
Si -> Las acciones que quieras


¿No era tan complicado no? Si leer lo que ponen los demas tampoco cuesta tanto.

¡Saludos!
#1007
¡Buenas!

Varias cosas:

+ Una nota puede no ser un numero entero.
+ Si divides un numero entero por otro, el resultado sera la parte entera de la division.
+ Utiliza otra forma alternativa de lectuda de stdin, que te permita el vaciado completo del bufer de entrada, y posteriormente, utiliza el equivalente a getchar que haya para istream.

¡Saludos!

(Es posible que me deje algo... (no estoy en plenas facultades (es lo que tiene la cerveza(y alguna otra bebida)))...) XD
#1008
¡Buenas!

La solucion la veo bien sencilla.


Leer fichero

Si no fin fichero
{
    ejecutas lo que quieras
}
Sino
{
    Acciones en caso de alcanzar fin fichero.
}


Tan sencillo como esto.

¡Saludos!
#1009
Cita de: B€T€B€ en 17 Octubre 2010, 00:47 AM
Tema: Los operadores advierten de que el cierre de webs les hara perder clientes... :silbar: :silbar: :silbar: :silbar: :silbar: :silbar: :silbar:

Salu2.

Cierto, sino, no estarian en contra de la ley.

¡Saludos!
#1010
¡Buenas!

Pues si no sabes hacer ninguna de las dos cosas, te recomiendo que empieces por lo mas facil. Estudia el manejo de ficheros y los tipos derivados de datos. Una vez hagas eso, el problema se resulve solo.

¡Saludos!

PD: En la sección de libros y papers encontraras buen material. Te recomiendo el libro "Como programar en C,C++ y Java" de Deitel & Deitel.