Foros del Web » Programación para mayores de 30 ;) » C/C++ »

duda variables dentro y fuera de funcion

Estas en el tema de duda variables dentro y fuera de funcion en el foro de C/C++ en Foros del Web. Buenos días, estoy aprendiendo a programar en c++ y tengo una duda creo que sencilla para cualquiera que maneje la programación en c++. he hecho ...
  #1 (permalink)  
Antiguo 29/08/2012, 03:45
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 11 años, 7 meses
Puntos: 0
duda variables dentro y fuera de funcion

Buenos días, estoy aprendiendo a programar en c++ y tengo una duda creo que sencilla para cualquiera que maneje la programación en c++.

he hecho un programa para resolver una ecuacion de segundo grado utilizando una funcion, tal que así

#include<iostream>
#include<stdio.h>
#include <stdlib.h>
#include <math.h>

using namespace std;

float ecuacion_segundo_grado (float, float, float);//declaracion de funcion para resolver ec. 2º grado
float x1, x2; //valores de x en la ecuacion

int main()
{
float a, b, c;
cout <<"Introduzca los coeficientes a, b y c de la ecuacion ax\253+bx+c=0: ";
cin >>a>>b>>c;
if (a=0)
cout <<"El coeficiente a no puede ser 0"<<endl;
else
{
ecuacion_segundo_grado (a, b, c);
cout <<"Las soluciones de la ecuacion ax\253+bx+c=0 son: x1= "<<x1<<" y x2= "<<x2<<endl;
}

system("PAUSE");
return EXIT_SUCCESS;

}

float ecuacion_segundo_grado (float a, b, c)
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
return x1, x2;
}

la duda es que al compilar me dice que no están declaradas las variables a, b y c dentro de la funcion ecuacion_segundo_grado pero entiendo que ya vienen declaradas desde main como en este otro programa que te dice los días que tiene un mes

#include<iostream>
#include<stdio.h>
#include <stdlib.h>
#include <math.h>

using namespace std;

bool bisiesto1 (int);//declaracion de funcion para calcular año bisiesto
bool bisiesto; //la variable se declara fuera de main

int main()
{
int anio, mes;

cout << "Introduzca el año: ";
cin >>anio;
cout <<"Introduzca el numero de mes: ";
cin >>mes;
if ((mes<=0)||(mes>12))
cout << "Mes no valido"<<endl;
else
{
bisiesto1(anio); //se llama a la funcion bisiesto1 que está fuera de main
if ((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)| |(mes==10)||(mes==12))
cout <<"El mes tiene 31 dias"<<endl;
else if ((mes==4)||(mes==6)||(mes==9)||(mes==11))
cout <<"El mes tiene 30 dias"<<endl;
else if (bisiesto==1)
cout <<"El mes tiene 29 dias"<<endl;
else
cout <<"El mes tiene 28 dias"<<endl;
}

system("PAUSE");
return EXIT_SUCCESS;

}

bool bisiesto1 (int anio)
{

if ((anio%4==0)&&((anio%100==0)&&(anio%400==0)))
bisiesto=1;
else
{
if ((anio%4==0)&&((anio%100==0)&&(anio%400!=0)))
bisiesto=0;
else
{ if (anio%4==0)
bisiesto=1;
}
}
return bisiesto;
}

aquí no he declarado nada dentro de la funcion y sí funciona...

Gracias por vuestros comentarios. Agradeceré cualquier comentario sobre cualquier otra cosa de estos programas también :)

Un saludo.

Antonio715
  #2 (permalink)  
Antiguo 29/08/2012, 07:52
 
Fecha de Ingreso: agosto-2012
Mensajes: 30
Antigüedad: 11 años, 8 meses
Puntos: 3
Respuesta: duda variables dentro y fuera de funcion

Hola antonio715

primero: la declaracion de "float a, b, c" dentro de main, son locales a la funcion main, por lo cual, la funcion ecuacion_segundo_grado no sabe quien es a, b y c.

segundo: en la funcion ecuacion_segundo_grado tienes declarada las variables a, b y c, pero lo has echo mal

en la primera linea

Código C++:
Ver original
  1. float ecuacion_segundo_grado (float a, b, c)
  2. {
  3. x1=(-b+sqrt(b*b-4*a*c))/(2*a);
  4. x2=(-b-sqrt(b*b-4*a*c))/(2*a);
  5. return x1, x2;
  6. }

tienes que cambiar

Código C++:
Ver original
  1. float ecuacion_segundo_grado (float a, b, c)

por
Código C++:
Ver original
  1. float ecuacion_segundo_grado (float a, float b, float c)

Creo que con ello deberia ir.
  #3 (permalink)  
Antiguo 29/08/2012, 10:34
 
Fecha de Ingreso: agosto-2012
Ubicación: Alcalá
Mensajes: 37
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: duda variables dentro y fuera de funcion

En la función bisiesto1 no he declarado dentro de la función la variable anio y sin embargo el programa corre bien...eso es lo que no entiendo..

Gracias

Edito: poniendo los 3 float en los parámetros de la función ya me deja compilar float ecuacion_segundo_grado (float a, float b, float c)
sin necesidad de declarar las variables a, b, c dentro de la función.
Ahora me da resultados raros para x1 y x2 pero eso ya será otro tema que tendré que mirar..

Última edición por antonio715; 29/08/2012 a las 10:39
  #4 (permalink)  
Antiguo 29/08/2012, 15:14
 
Fecha de Ingreso: agosto-2012
Mensajes: 30
Antigüedad: 11 años, 8 meses
Puntos: 3
Respuesta: duda variables dentro y fuera de funcion

Hola

Claro que si has declarado la variable anio dentro de tu funcion, mira

Código C++:
Ver original
  1. bool bisiesto1 (int anio)
  2. {
  3. ...
  4. }

Lo que estas haciendo, es declarar la variable cuando la recibes por parametro.

De manera que dentro de tu funcion bisiestro1, tendras una variable llamada anio y con un valor que tu le pases desde donde la llamaste.

Mírate un tutorial, donde expliquen bien lo que son variables globales y variables locales.

Despues cuando tengas claro esta parte, te miras el paso de parametros en funciones.

Y si aun tienes dudas, nos consultas de nuevo
que para eso estamos

Etiquetas: compilar, fuera, funcion, int, programa, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.