ayuda con este programa xfavoooorrr

Iniciado por chj++, 1 Diciembre 2013, 13:59 PM

0 Miembros y 1 Visitante están viendo este tema.

chj++

Codificar un programa que resuelva las ecuaciones simultáneas siguientes:

ax + by + c = 0 y px + qy + r = 0
Fundamentos de Informática Tema 5: Funciones
Dpto. Lenguajes y Ciencias de la Computación 2
Realizar una función encargada de la solución de las ecuaciones que devuelva el valor de x e y en función del
resto de parámetros de las ecuaciones. La función también debe devolver una variable lógica que indique si el
sistema de ecuaciones tiene solución o no. El programa principal debe leer los valores, resolver las ecuaciones
usando la función diseñada e imprimir en pantalla los valores en caso de existir o un mensaje de error si no es
posible resolverlas.

Resolver con dicho módulo las ecuaciones siguientes:
3x + 2y - 7 = 0 3x + 2y - 7 = 0 3x + 2y - 7 = 0
9x - 5y + 1 = 0 9x + 6y - 21 = 0 9x + 6y - 20 = 0

ivancea96

No se hacen tareas.
Si tienes alguna duda, pregúntala.
Si tienes algún error, postea el código.

dato000

Cita de: ivancea96 en  1 Diciembre 2013, 14:09 PM
No se hacen tareas.
Si tienes alguna duda, pregúntala.
Si tienes algún error, postea el código.

y lo peor de todo es que ni dice "por favor"  ;-) :laugh: :silbar:



chj++

Perdonad! No tenia ni idea de como iba esto :-\
#include <iostream>
#include <cstdlib>
using namespace std;
float SistemaX(float a,float b,float c,float p,float q,float r)
{
      float x, a, b, c, p, q, r;
      x=(b*a*r-b*p*c-c*b*p-c*a*q)/(a*a*q-b*p*a);
      return x;
      }
float SistemaY (float a,float b,float c,float p,float q,float r)
{
      float y,a,b,c,p,q,r;
      y=(p*c-a*r)/(a*q-b*p);
      return y;
      }
int main()
{
    float x,y,a,b,c,p,q,r;
    cout<<"Un sistema lineal tiene estas dos ecuaciones: ax+by+c=0 y px+qy+r=0\n";
    cout<<"Indique el valor de a,b,c,p,q y r:";
    cin>>a>>b>>c>>p>>q>>r;
    x=SistemaX(a,b,c,p,q,r);
    y=SistemaY(a,b,c,p,q,r);
    cout<<"La x vale:"<<x<<endl;
    cout<<"La y vale:"<<y<<endl;
    System ("Pause");
    return 0;
}



Esto es lo que tengo hecho pero me salen errores y no se lo que significan:
--6 C:\Users\Angel\Documents\ejercicio9Tema5.cpp declaration of 'float a' shadows a parameter --
y asi con todas las variables que he declarado
A ver si alguien me puede ayudar!
Muchas Gracias

Almapa

Veamos el error que te da es porque estás declarando las variables que ya tienes decaradas como variables que obtienes como parámetros de la función, pues la línea debería quedar:
en SistemaX
Código (cpp) [Seleccionar]
float x;

y en SistemaY
Código (cpp) [Seleccionar]
float y;

Pues son las únicas variables que no has declarado como parámetro de la función.

De todos modos, lo he probado y el cálculo del valor de "x" sale mal, supongo que error del algoritmo.

Un saludo

Almapa

El programa está bien, cambiando las dos líneas esas por redundancia de declaración y con el algoritmo correcto para calcular la x funciona bien.

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
using namespace std;
float SistemaX(float a,float b,float c,float p,float q,float r)
{
      float x;
      x=(b*r-c*q)/(a*q-b*p);
      return x;
      }
float SistemaY (float a,float b,float c,float p,float q,float r)
{
      float y;
      y=(p*c-a*r)/(a*q-b*p);
      return y;
      }
int main()
{
    float x,y,a,b,c,p,q,r;
    cout<<"Un sistema lineal tiene estas dos ecuaciones: ax+by+c=0 y px+qy+r=0\n";
    cout<<"Indique el valor de a,b,c,p,q y r:";
    cin>>a>>b>>c>>p>>q>>r;
    x=SistemaX(a,b,c,p,q,r);
    y=SistemaY(a,b,c,p,q,r);
    cout<<"La x vale:"<<x<<endl;
    cout<<"La y vale:"<<y<<endl;
    system("Pause");
    return 0;
}



Un saludo

chj++

Muchas gracias Almapa!!
ahora tengo otro problemilla con el "else"

int main()
{
    float x,y,a,b,c,p,q,r;
    cout<<"Un sistema lineal tiene estas dos ecuaciones: ax+by+c=0 y px+qy+r=0\n";
    cout<<"Indique el valor de a,b,c,p,q y r:";
    cin>>a>>b>>c>>p>>q>>r;
    if(SistemaX(a,b,c,p,q,r)==true)
    {
    x=SistemaX(a,b,c,p,q,r);
    cout<<"La x vale:"<<x<<endl;
    else cout<<"La x no existe";
    }
    if(SistemaY(a,b,c,p,q,r)==true);
    {
    y=SistemaY(a,b,c,p,q,r);
    cout<<"La y vale:"<<y<<endl;
    else cout<<"La y no existe";
    }
    system("pause");
    return 0;
}



me sale este error y yo ya no se donde me pide que le ponga otro ;


28 C:\Users\Angel\Documents\ejercicio9Tema5.cpp expected primary-expression before "else"
28 C:\Users\Angel\Documents\ejercicio9Tema5.cpp expected `;' before "else"
int main()
34 C:\Users\Angel\Documents\ejercicio9Tema5.cpp expected primary-expression before "else"
34 C:\Users\Angel\Documents\ejercicio9Tema5.cpp expected `;' before "else"


muchisimas gracias !!

Stakewinner00

#7
Citarif(SistemaX(a,b,c,p,q,r)==true)
   {
   x=SistemaX(a,b,c,p,q,r);
   cout<<"La x vale:"<<x<<endl;
   else cout<<"La x no existe";
   }
   if(SistemaY(a,b,c,p,q,r)==true);
   {
   y=SistemaY(a,b,c,p,q,r);
   cout<<"La y vale:"<<y<<endl;
   else cout<<"La y no existe";
   }
pon esto

Código (cpp) [Seleccionar]
if(SistemaX(a,b,c,p,q,r)==true)
   {
   x=SistemaX(a,b,c,p,q,r);
   cout<<"La x vale:"<<x<<endl;
   } else { cout<<"La x no existe";
   }
   if(SistemaY(a,b,c,p,q,r)==true);
   {
   y=SistemaY(a,b,c,p,q,r);
   cout<<"La y vale:"<<y<<endl;
  } else {  cout<<"La y no existe";
   }


la estructura if else no es
if {
else
}
es
if {
} else {
}
Ejemplo:
Código (cpp) [Seleccionar]
if (a==b) {
cout << "a=b";
} else {
cout << "a!=";
}


usa las etiquetas GeSHi para darle color al código

ivancea96

Código (cpp) [Seleccionar]
int main()
{
    float x,y,a,b,c,p,q,r;
    cout<<"Un sistema lineal tiene estas dos ecuaciones: ax+by+c=0 y px+qy+r=0\n";
    cout<<"Indique el valor de a,b,c,p,q y r:";
    cin>>a>>b>>c>>p>>q>>r;

    if(SistemaX(a,b,c,p,q,r)==true)
    {
    x=SistemaX(a,b,c,p,q,r);
    cout<<"La x vale:"<<x<<endl;
    } else cout<<"La x no existe";

    if(SistemaY(a,b,c,p,q,r)==true)
    {
    y=SistemaY(a,b,c,p,q,r);
    cout<<"La y vale:"<<y<<endl;
    } else cout<<"La y no existe";

    system("pause");
    return 0;
}


  if(SistemaY(a,b,c,p,q,r)==true);
Si pones el ';' al fina del if, el if se cerrará ahí mismo.

Además, el "else" se pone al final del if, es decir, despues de la última instrucción. (O después del '}')