elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:26  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Ayuda con programa en c
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con programa en c  (Leído 1,183 veces)
Caster


Desconectado Desconectado

Mensajes: 405


Divide y vencerás


Ver Perfil WWW
Re: Ayuda con programa en c
« Respuesta #15 en: 29 Diciembre 2011, 14:45 »

Lo que he dicho yo pero mejor explicado  ;)

Saludos


En línea

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe, he aquí el verdadero saber."
(Confucio)

yescri

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #16 en: 29 Diciembre 2011, 14:52 »

 ;-) muy bien explicado lo entiendo perfectamente.

Muchas gracias por vuestro tiempo. Ya ire preguntando las dudas que me vallan surgiendo.

Gracias a todos un saludo foreros y feliz navidad.


En línea
tillizi

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #17 en: 29 Diciembre 2011, 15:04 »

Estimado te aclaro el tema del return que veo que aun te tiene confundido
cuando llamas a una funcion cualquiera como peude ser "main" delante le pones lo que va a devolver y despues le pones lo que se le va a pasar.
void quiere decir que no se le pasa nada o que no devuelve nada.

EJ: void main() {
//estamos llamando a la funcion main la cual no devolvera nada y no se le pasara nada
}

int main(void){
//estamos llamando a la función main y la misma devolverá un int y no se le pasara nada o sea void. En el cuerpo de este main debe haber un return /o sea devolver algo/ en este caso un int
return int; // dicho int puede ser una variable o un numero fijo, por lo general se usa return 0; cuando no quieres devolver nada, es casi como poner void main()
//por lo general si ponemos un int o cualqueir otra cosa delante es para devolver una variable que se calcula dentro de la función
EJ: return mivariable;
}

Espero que te sirva esto como guía para aclarar un poco mas el tema.
En línea
yescri

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #18 en: 29 Diciembre 2011, 19:16 »

La verdad tillizi que no entiendo muy bien lo que me quieres decir.
Por ejemplo en el programa de antes:

Código:
#include <stdio.h>

int main ()
{
float basemayor,basemenor,altura,area;
printf("escriba un valor de la base mayor en metros:");
scanf("%f", &basemayor);
printf("escriba un valor de la base menor en metros:");
scanf("%f", &basemenor);
printf("escriba un valor de la altura en metros:");
scanf("%f", &altura);
area=(basemayor+basemenor)*altura/2;
printf("el area del trapecio es %f metros\n",area);
return 0;
}

Nosotros le vamos a pasar valores, y el programa nos va a dar otro valor. Por lo que he entendido de lo que tu me has explicado tendria que poner
Código:
int main (int)
y al final en vez de poner return 0 tendria que poner return int?

Me estoy liando un poco la verdad haber si alguien me lo puede explicar de alguna manera que lo entienda

Muchas gracias compañeros  ;)
En línea
Caster


Desconectado Desconectado

Mensajes: 405


Divide y vencerás


Ver Perfil WWW
Re: Ayuda con programa en c
« Respuesta #19 en: 29 Diciembre 2011, 19:20 »

No te andelantes, no me acuerdo en que post había dicho @Sagrini que la mejor forma de poner main() es esta:

Código
int main (int argc, char *argv [])

Pero si en el programa no vas a usar lo que está entre paréntesis es mejor que prescindas de ello:

Código
int main()

Primero aprende sobre lo primero, variables, controladores de flujo(if, switch, while, for) y después las funciones.

Saludos

PD: Para que lo entiendas rápido, las funciones son "mini-programas" que se van a repetir durante todo el programa principal pero para no repetirlos continuamente se crea una función y se escribe la función en vez del proceso entero.
« Última modificación: 29 Diciembre 2011, 19:22 por |Demon| » En línea

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe, he aquí el verdadero saber."
(Confucio)

yescri

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #20 en: 29 Diciembre 2011, 19:23 »

Vale Demon entonces lo estoy haciendo bien asi era como lo estaba poniendo yo siempre sea el programa que sea.

Lo que si me gustaria que me dijeseis  es si tengo que poner siempre return 0 al final del programa, o return int o no pongo nada.

Saludos
En línea
Ferno

Desconectado Desconectado

Mensajes: 282


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #21 en: 29 Diciembre 2011, 19:26 »

Siempre que declares a la función main adecuadamente como

Código
int main (int argc, char* argv[])

o

Código
int main (void)

vas a tener que retornar un entero! Porque justamente, la declaración de la función lo indica. El "int" antes del nombre de la función es lo que indica lo que si o si debe devolver la función, por ende, en este caso, es necesario retornar un entero.
Podés retornar el entero que quieras, pero por convención, el número 0 quiere decir que no hubo problemas con la función! Por ende, siempre se coloca return 0; al final del main.
En línea
tillizi

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #22 en: 29 Diciembre 2011, 19:30 »

Mira desde mi punto de vista solo deberias ponerle un

void main(){
}
y olvidate de poner return.

Yo lo que te queria explicar es que el main es una funcion mas solo que especial de un programa en C.
Y como toda funcion en C se le puede pasar un valor o no  y puede devolver un dato o no, ya sea un int oun char un float o lo que sea.
En línea
yescri

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #23 en: 29 Diciembre 2011, 19:33 »

Dios que lio  :rolleyes: ,cada uno teneis vuestro criterio.

Yo voy a poner siempre:
Código:
int main(){
...
...
return 0;

Si esto esta mal por favor que alguien me corrija
En línea
Sagrini

Desconectado Desconectado

Mensajes: 104

Visit las Vegas ;)


Ver Perfil WWW
Re: Ayuda con programa en c
« Respuesta #24 en: 29 Diciembre 2011, 19:34 »

Por eso es incorrecto usar "void main ()" y "return 0;", ya que son cosas contradictorias (además, da error al compilar). "int" se debe usar siempre con "main ()", pero para otras funciones no, ya que depende de lo que vaya a retornar. Para finalizar con el tema, te recomiendo leas las chinchetas de la sección, especialmente las de "Cosas que no debes hacer en C/C++". Un saludo ;)

Modif1: NO! void main () y return; no son correctos! Leeos las chinchetas!
Modif2: Eso sí es correcto, yescri.
En línea

Un saludo. Sagrini
Caster


Desconectado Desconectado

Mensajes: 405


Divide y vencerás


Ver Perfil WWW
Re: Ayuda con programa en c
« Respuesta #25 en: 29 Diciembre 2011, 19:34 »

Haber,

en "int main()" escribe siempre "return 0" eso le indica que el programa ha finalizado, cunado entres en funciones verás que no siempre será un "return 0" tendrás que poner "return + el resultado del mini-programa que te expliqué antes"

Yo no ví mucho las funciones en C(sinceramente no las vi, lo que sé es por PHP)

Te voy a poner un ejemplo en php:

Código
function nombre_funcion (variable1,variable2,variables3) //Se declara la funcion y sus componentes
{
    variable1  + variable2 = variable3;
    return variable3 // Aqui mostraria en pantalla el resultado de "variable3";
}
echo /*muestra en pantalla en PHP*/ nombre_funcion(10,10,10) /*estos numeros corresponderian al valor de las variables
y asi realizaria el proceso de antes pero son menos lineas de codigo

Espero que entiendas todo jeje

Saludos
En línea

"Saber que se sabe lo que se sabe y que no se sabe lo que no se sabe, he aquí el verdadero saber."
(Confucio)

rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #26 en: 29 Diciembre 2011, 21:05 »

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
int main(void){
  /* ... */
}

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

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
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
tillizi

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #27 en: 29 Diciembre 2011, 21:07 »

Nunca dije que ponga un void main() y return 0 por que se cae de maduro que poner ambas cosas estas mal.
Por un lado poner void main() estas diciendo que no va a devolver nada la funcion o se que no tienes que poner ningun return en ese main.
Si pones int main() vas a tener que devolver un entero ya que es lo que estas diciendo al ponerle el int delante del main que ese main devolvera un int, pero si tu programa no hara ninguna operacion no tiene ningun sentido ponerle que devuelva un 0 cero como estan diciendo, asi que Conclusión: PARA PONER DEVOLVER UN 0 MEJOR PONE QUE NO DEVUELVE NADA.
En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #28 en: 29 Diciembre 2011, 21:25 »

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
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda en Programa
Programación General
redHat 11 768 Último mensaje 11 Febrero 2005, 02:49
por redHat
ayuda con mi programa
Programación Visual Basic
nitrox 2 656 Último mensaje 31 Julio 2005, 00:48
por Slasher-K
Ayuda con programa
Software
elohim 1 337 Último mensaje 9 Septiembre 2005, 14:17
por Thunder2k
Ayuda que Programa
Programación C/C++
kichan 1 607 Último mensaje 9 Septiembre 2005, 18:13
por Pseudoroot
ayuda con programa en c++
Programación C/C++
maryrisas 12 1,085 Último mensaje 18 Enero 2006, 21:57
por Manibal_man
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines