Avatar billede how Nybegynder
09. februar 2004 - 09:54 Der er 18 kommentarer og
1 løsning

c++ løsning af andengradsligning

hejsa, jeg har skrevet følgende kode til løsning af andengradsligning:

// EX1_01.CPP
// A Simple Example of a Program
#include <iostream>
using namespace std;

int main()

    int a = 0, b = 0, c = 0;
   
    int x = 0, x1 = 0, x2 = 0;

    int d = 0;
   

   
    cout << endl

        << "Hvad er a?: ";
        cin >> a;

    cout << endl

        << "Hvad er b sa?: ";
        cin >> b;

    cout << endl

        << "Hvad sa med c?: ";
        cin >> c;

    d = b*b-4*a*c;


    cout << endl
        << "d er lig med " << d << " ";

if

(d > 0)



x1 = -b+d^0.5/(2*a);
x2 = -b-d^0.5/(2*a);

cout << endl
        << "x er lig med " << x1 << " og " << x2 << " ";
else
if
(d = 0)

    x = -b/(2*a);


cout << endl
        << "Og er x lig med " << x << " ";

else
(d < 0)
cout << endl
        << "Ingen løsninger";

    return 0;

}


Er der nogen der kan se hvad der er galt med den?


tak
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 09:59 #1
^ er ikke potensopløftning, men "ekslusiv eller": XOR
Avatar billede arne_v Ekspert
09. februar 2004 - 10:02 #2
potens er pow funktionen
Avatar billede how Nybegynder
09. februar 2004 - 10:05 #3
hvordan skriver man så fx x^2, altså x i anden?
Avatar billede arne_v Ekspert
09. februar 2004 - 10:26 #4
pow(x,2)
Avatar billede arne_v Ekspert
09. februar 2004 - 10:27 #5
Du skal have inkludere math.h (eller cmath).
Avatar billede erikjacobsen Ekspert
09. februar 2004 - 10:34 #6
Avatar billede how Nybegynder
09. februar 2004 - 10:49 #7
hvad gør cmath eller math.h og er det det samme?
Avatar billede how Nybegynder
09. februar 2004 - 10:50 #8
Jeg er ny i det her....:)
Avatar billede how Nybegynder
09. februar 2004 - 10:54 #9
der er åbenbart også noget galt med if else sætningerne, men jeg kan ikke se hvad...
Avatar billede arne_v Ekspert
09. februar 2004 - 10:59 #10
math.h er til C compilere og ældre C++ compilere
cmath er til nyere C++ compilere
Avatar billede arne_v Ekspert
09. februar 2004 - 11:00 #11
Jeg tror at du mangler nogle { } i.f.m. dine if sætninger.

if(...)
{
  ...
}
else if(...)
{
  ...
}
else
{
  ...
}
Avatar billede how Nybegynder
09. februar 2004 - 11:35 #12
nu er koden ændret til:

// EX1_01.CPP
// A Simple Example of a Program
#include <iostream>
#include <cmath>
using namespace std;

int main()

    int a = 0, b = 0, c = 0;
   
    int x = 0, x1 = 0, x2 = 0;

    int d = 0;
   

   
    cout << endl

        << "Hvad er a?: ";
        cin >> a;

    cout << endl

        << "Hvad er b sa?: ";
        cin >> b;

    cout << endl

        << "Hvad sa med c?: ";
        cin >> c;

    d = b*b-4*a*c;


    cout << endl
        << "d er lig med " << d << " ";

if

(d > 0)

{

x1 = (-b+pow(d,0.5))/(2*a);
x2 = (-b-pow(d,0.5))/(2*a);

cout << endl
      << "x er lig med " << x1 << " og " << x2 << " ";
}
else
if
(d == 0)
{
    x = -b/(2*a);


cout << endl
        << "x er lig med " << x << " ";
}
else
(d < 0);
{

cout << endl
        << "Ingen løsninger";
}
    return 0;

}
og det har hjulpet en hel del. Men pow-funktionen virker ikke helt som tilsigtet og man kan heller ikke indtaste kommatal som a b og c....?
Avatar billede arne_v Ekspert
09. februar 2004 - 11:49 #13
Prøv og erklær a,b,c,d etc. som double i.s.f. int (int=heltal).
Avatar billede how Nybegynder
09. februar 2004 - 11:54 #14
ok, nu er der kun en lille detalje tilbege: "Ingen løsninger" kommer frem hver gang til sidst i programmet...
Avatar billede arne_v Ekspert
09. februar 2004 - 11:59 #15
Jeg tror at:

else
(d < 0);
{

skal være:

else if (d < 0)
{

[altså uden semikolon !]
Avatar billede arne_v Ekspert
09. februar 2004 - 13:51 #16
OK ?
Avatar billede how Nybegynder
09. februar 2004 - 14:21 #17
det ser ud til at virke!

mange tak..:)
Avatar billede how Nybegynder
09. februar 2004 - 14:35 #18
forresten....hvordan laver jeg så det til en .exe microsoft visual c++?
Avatar billede arne_v Ekspert
09. februar 2004 - 14:39 #19
Når du har kørt det, så er der også en EXE fil.

Under dit projekt ligger der et debug og et release directory. Din EXE
fil ligger i et af dem eller begge (afhængig af hvad du har compilet til).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester