elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 [140] 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 ... 160
1391  Programación / Programación C/C++ / Re: Ayuda con programa en c en: 29 Diciembre 2011, 21:25 pm
Conclusión: PARA PONER DEVOLVER UN 0 MEJOR PONE QUE NO DEVUELVE NADA.
Hay dos argumentos para recomendar que, aun cuando no se utilice, se indique el valor de retorno de esa función.

El primero es que así el compilador no puede quejarse de la definición de "main", si lo hiciera seria un error del compilador (no del programa).

La segunda es mantenerse con las "buenas costumbres", una vez avance en su aprendizaje del lenguaje encontrara la utilidad de retornar un valor (los ejemplos mas conocidos de ello son las aplicaciones utilizadas en scripts).

Un saludo
1392  Programación / Programación C/C++ / Re: Sobreescribir línea ya escrita lenguaje C en: 29 Diciembre 2011, 21:08 pm
Para tener acceso al prototipo de la función "system" se debe incluir el encabezado <stdlib.h> en el caso de C o <cstdlib> en el caso de C++.

Un saludo
1393  Programación / Programación C/C++ / Re: Ayuda con programa en c en: 29 Diciembre 2011, 21:05 pm
Solo para aclarar el tópico de la definición de la función principal "main":

Al principio del tema se cita otro donde se indica:
Citar
2. "main ()", "void main ()", "int main (void)" no son correctos (el último sería aceptable, pero no suele usarse).
3. "int main (int argc, char *argv [])". Es lo más correcto, pero lo que hay entre paréntesis puede suprimirse si no es usado en el programa.
Ello no es completamente correcto, explico porque:

* El estándar de C indica que la definición de la función principal debe ser una de dos formas:

A) Si no se procesan los argumentos pasados mediante la linea de comandos:
Código
  1. int main(void){
  2.   /* ... */
  3. }

B) Si ellos se procesan:
Código
  1. int main(int argc, char *argv[])
  2. {
  3.   /* ... */
  4. }

O alguna equivalente, por ejemplo al utilizar macros (con la directiva "#define ...") o alias (con la palabra reservada "typedef"). También se debe considerar que en una definición los paréntesis vacíos indican "no argumentos" así que "int main() ..." también es valida.

Otras formas de definir la función principal pueden ser validas o no (ese es el problema) ya que dependerán del compilador utilizado (este las puede aceptar como una extensión al lenguaje).

----

En cuanto al valor de retorno de la función principal: cuando una función debe retornar un valor (su tipo de retorno no es "void") si este no se indica el resultado es un valor no definido o "basura".

Ese es el caso con "main" en el estándar C90. En el estándar C99 aplica lo mismo que en C++: si el valor de retorno de la función "main" no se indica este se toma como cero pero (usualmente) se agrega de todos modos (como una "buena costumbre").

Un saludo
1394  Programación / Programación C/C++ / Re: Programacion C for(; ;) en: 29 Diciembre 2011, 20:28 pm
A un bucle "for" en la forma:
Código
  1. for (; ;)
  2.   cuerpo_del_bucle
se le conoce como bucle sin fin (o endless loop) ya que este no termina en base a su condición (cuando esta se omite es igual a utilizar 1).

Para que el bucle termine se debe utilizar una sentencia "break;" (para terminar el bucle) o bien una sentencia de retorno (para terminar la función).

Un saludo
1395  Programación / Programación C/C++ / Re: matrices en: 9 Diciembre 2011, 19:28 pm
Por partes.

Cuando se declara un array se puede indicar el valor inicial de sus elementos mediante una lista de valores, estos se colocan entre llaves y separados por comas. Entre el nombre del array y la lista se debe colocar un '=' que en este caso es un separador (no confundir con el operador '=' usado en expresiones). Por ejemplo:
Código
  1. int numero[] = {1, 2, 3};
En este caso es el compilador quien calcula el numero de elementos del array en base al numero de valores en la lista (obvio, son tres).

Si se indica el numero de elementos y esto no coincide con el numero de valores en la lista:
Código
  1. int numero[5] = {1, 2, 3};
Hay dos escenarios: si el numero de valores es menor los elementos restantes (numero[3] y numero[4] en este caso) toman el valor 0 (o 0.0 o NULL, dependiendo del tipo). En otras palabras la ultima declaración es equivalente a:
Código
  1. int numero[5] = {1, 2, 3, 0, 0};

Si el numero de valores es mayor entonces se genera "comportamiento no definido" (es un error).

----

Si se trata de un array donde sus elementos son a su vez arrays aplica lo mismo: se indica el valor de cada elemento mediante una lista donde cada uno es una lista.

En tu caso:
Código
  1. int matriz[2][3] = {
  2.   {1, 2, 3}, /* <== Valores de matriz[0] */
  3.   {4, 5}     /* <== Valores de matriz[1] */
  4. };
El array "matriz" consiste a su vez de dos arrays (matriz[0] y matriz[1]) cada uno de tres elementos de tipo int. El primero tiene sus tres elementos inicializados, el segundo todos menos uno (ese toma el valor cero).

Un saludo
1396  Programación / Programación C/C++ / Re: Adivinanza: este codigo es C o C++ en: 9 Diciembre 2011, 17:03 pm
Es C++ por lo ya comentado (C no permite indicar valores predeterminados para los parametros de una funcion).

Por otra parte la conversion explicita a "char *" en la llamada a printf no es requerida por ninguno de los dos lenguajes.

Un saludo
1397  Programación / Programación C/C++ / Re: Ayuda en manejo de Archivos en Lenguaje C en: 9 Diciembre 2011, 01:28 am
Si, con sus detalles.

Cuando un programa termina sin que se genere un error (una terminación normal) los buferes se vacían y se cierran los streams (entre otras cosas). Pero, de nuevo, se consideran "buenas practicas" cerrar los archivos antes de finalizar la aplicación.

Un saludo
1398  Programación / Programación C/C++ / Re: programa sobre colas en: 8 Diciembre 2011, 17:31 pm
Hay varios errores en ese programa.

El primero en la declaracion:
Código
  1. struct nodocola {
  2.   int dato;
  3.   nodocola *sig; /* <== */
  4. };
  5. typedef struct nodocola nodocola;
El alias "nodocola" todavia no existe, deberia ser "struct nodocola *sig;"

La variable "z" de la funcion principal no se utiliza, hay que eliminarla.

No retornas nada al terminar la funcion "main", al menos deberias retornar cero para indicar una salida normal.

El problema principal se encuentra en la funcion que inicializa la cola, esta es:
Código
  1. void inicializa (cola c)
  2. {
  3.   c.frente = NULL;
  4.   c.fin = NULL;
  5. } // fin inicializa
Esa funcion lo que hace es modificar el parametro "c" y este es una variable local. Para que tenga efecto debes emular el paso por referencia mediante punteros, como en las otras funciones.

No revise lo demas. Corrige eso y nos cuentas.

Un saludo
1399  Programación / Programación C/C++ / Re: Función que retorna el valor de retorno de otra función en: 7 Diciembre 2011, 06:19 am
Mi pregunta es, por que pasa esto?
Cuando no se indica el valor de retorno de una funcion este es "no definido". Un caso similar es cuando se utiliza una variable local sin darle un valor inicial explicito.

Un saludo
1400  Programación / Programación C/C++ / Re: Duda funcíon potencia en: 3 Diciembre 2011, 18:21 pm
Aqui voy de metiche ... espero se tome de forma constructiva.

No se requiere de un contador ya que el parametro indicando la potencia puede utilizarse para ese proposito. El acumulador debe empezar en 1 para tener en cuenta la potencia 0 (donde todos resultan en el valor 1).

Por ejemplo:
Código
  1. float potencia(float a, float b)
  2. {
  3.   float rv;
  4.  
  5.   for (rv = 1.0; b > 0; b--)
  6.      rv *= a;
  7.  
  8.   return rv;
  9. }

Pero como ya comentaron mejor utilizar la funcion para ese proposito: pow cuyo prototipo se encuentra en <math.h>.

Un saludo
Páginas: 1 ... 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 [140] 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines