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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


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

Desconectado Desconectado

Mensajes: 13


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

Demon lo que yo me refiero es a esto.

Si pongo el programa de esta manera me da un resultado erroneo.

Código:
#include <stdio.h>

int main ()
{
float basemayor,basemenor,altura,area;
area=(basemayor+basemenor)*altura/2;
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);

printf("el area del trapecio es %f metros\n",area);
return 0;
}

Si lo pongo asi si me sale bien

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;
}

Mi pregunta es: Que implica que lo declare en un lugar o en otro.
Espero haberme explicado bien.

Un saludo  ;)


En línea

Caster


Desconectado Desconectado

Mensajes: 786


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

Ni idea ;$

Pero hazlo como te dije yo así no hay error ;D

Saludos


En línea

yescri

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Ayuda con programa en c
« Respuesta #12 en: 29 Diciembre 2011, 14:25 pm »

 ;D bueno no pasa nada pero ya es saberlo por intriga.

Haber si algún otro compañero puede echarnos una mano!!  :P

Gracias programadores por vuestro tiempo  ;-)
En línea

Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Ayuda con programa en c
« Respuesta #13 en: 29 Diciembre 2011, 14:37 pm »

Creo que ya se cual es el error:


Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5. float basemayor,basemenor,altura,area;
  6. area=(basemayor+basemenor)*altura/2;
  7. printf("escriba un valor de la base mayor en metros:");
  8. scanf("%f", &basemayor);
  9. printf("escriba un valor de la base menor en metros:");
  10. scanf("%f", &basemenor);
  11. printf("escriba un valor de la altura en metros:");
  12. scanf("%f", &altura);
  13.  
  14. printf("el area del trapecio es %f metros\n",area);
  15. return 0;
  16. }

Aquí el valor de área siempre será 0 porque la pones antes de introducir los datos, entonces te la acepta porque están declaradas todas las variables y la sintaxis es correcta pero el valor de las variables siempre es 0 por lo tanto el resultado será siempre 0

Sin embargo aquí

Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5. float basemayor,basemenor,altura,area;
  6. printf("escriba un valor de la base mayor en metros:");
  7. scanf("%f", &basemayor);
  8. printf("escriba un valor de la base menor en metros:");
  9. scanf("%f", &basemenor);
  10. printf("escriba un valor de la altura en metros:");
  11. scanf("%f", &altura);
  12. area=(basemayor+basemenor)*altura/2;
  13. printf("el area del trapecio es %f metros\n",area);
  14. return 0;
  15. }

Le das un valor a "área" cuando ya has introducido los valores de todas la variables y podrá operar correctamente.

Espero haberme explicado bien ;)

Saludos
En línea

3mp3z@ndo

Desconectado Desconectado

Mensajes: 51


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

Demon lo que yo me refiero es a esto.

Si pongo el programa de esta manera me da un resultado erroneo.

Código:
#include <stdio.h>

int main ()
{
float basemayor,basemenor,altura,area;
area=(basemayor+basemenor)*altura/2;
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);

printf("el area del trapecio es %f metros\n",area);
return 0;
}

Si lo pongo asi si me sale bien

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;
}

Mi pregunta es: Que implica que lo declare en un lugar o en otro.
Espero haberme explicado bien.

Un saludo  ;)

Lo que implica es que en el primer caso las variables no están inicializadas, y aunque lo estuviesen, por ejemplo a 0, lo que estás haciendo con
Código:
area=(basemayor+basemenor)*altura/2;

es asignarle a area un valor basado en unas variables que todavía no contienen su valor real (el introducido por el usuario), por eso te da error, no importa lo que introduzca el usuario por el teclado, tu ya le has asignado un valor a area ANTES de obtenerlo por el teclado.

Y claro, en el segundo caso te funciona porque es exactamnete lo que quieres hacer, preguntas por unos valores, y DESPUÉS de obtenerlos por teclado es cuando le asignas un valor a area, que esta vez se apoya en los valores introducidos por teclado ya que has hecho esa asignación:

Código:
area=(basemayor+basemenor)*altura/2;

DESPUÉS de que las variables obtengan su valor real.

Un saludo

Edito: Se me adelantó |Demon| mientras te contestaba  :P
« Última modificación: 29 Diciembre 2011, 14:45 pm por 3mp3z@ndo » En línea

Caster


Desconectado Desconectado

Mensajes: 786


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

Lo que he dicho yo pero mejor explicado  ;)

Saludos
En línea

yescri

Desconectado Desconectado

Mensajes: 13


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

 ;-) 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 pm »

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 pm »

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: 786


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

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

Código
  1. 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
  1. 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 pm por |Demon| » En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA CON PROGRAMA
Diseño Gráfico
Luisango 1 2,489 Último mensaje 17 Abril 2005, 13:25 pm
por Sub_Cero
ayuda con mi programa
Programación Visual Basic
nitrox 2 2,396 Último mensaje 31 Julio 2005, 00:48 am
por Slasher-K
Ayuda con programa en vb
Programación Visual Basic
BriaNUR 1 1,382 Último mensaje 12 Febrero 2006, 16:55 pm
por Kizar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines