14. august 2005 - 11:03
Der er
11 kommentarer og 1 løsning
Simpel ligning i c++
Hej eksperter... jeg sidder og leger lidt med den smule c++ jeg har lært men jeg kan ikke få dette program til at løse denne simple ligning. #include <iostream> using namespace std; main() { double x; x + 5 = 23; cout << "x + 5 = 23 x = " << x << endl; system("pause"); return 0; } nogle der kan hjælpe mig med at løse ligninger i c++ ! Jeg har ikke særlig mange points men jeg kan også give karma !
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
14. august 2005 - 11:23
#1
den nemme men uinteressante løsning er: omskriv til: x = 23 - 5; den rigtige løsning er: bruge newtons formel + bruge funktion pointers: #include <iostream> using namespace std; double f1(double x) { return x - 10; } double f2(double x) { return x * x - 25; } const double SMALL = 0.0000001; typedef double (*fptr)(double x); double solve(fptr f) { double xlast = 0; double x = 1; while(fabs(x-xlast)>SMALL) { xlast = x; x = x - f(x) / ((f(x+SMALL/2)-f(x-SMALL/2))/SMALL); } return x; } int main() { cout << "x - 10 = 0 => x = " << solve(f1) << endl; cout << "x * x - 25 = 0 => x = " << solve(f2) << endl; return 0; } [men det kræver altså både lidt C/C++ og lidt matematik at forstå]
14. august 2005 - 11:23
#2
Skulle kunne gøre det: #include <iostream> using namespace std; main() { double x; x + 5 = 23; cout << "x + 5 = 23 x = " << 23-5 << endl; system("pause"); return 0; }
14. august 2005 - 11:33
#3
ja jeg forstår ikke særlig meget af dit eksempel arne_v ligninger er åbenbart sværere at løse i c++ end jeg troede ! men kan det virkelig passe at denne simple ligning x + 5 = 23 er så svær for c++ at løse ??
14. august 2005 - 11:40
#4
prøv og løs problemet med papir programmering tag et stykke papir for hver variabel og "kod" på et nyt stykke papir: skriv tallet 1 på første ark skriv det tal der står på første ark på andet ark og du vil se at det ikke er helt ligetil.
14. august 2005 - 11:43
#5
Den algoritme arne_v bruger hedder "Newton's metode" og er - tro det eller ej - en af de mere simple numeriske metoder til løsning af ligninger ;^) Men ja (eller nej, alt efter hvordan man drejer den), det at løse ligninger er ikke noget som er så trivielt som man umiddelbart skulle tro. Derfor bliver det som regel også til temmeligt mange linjer kode i C++. Når man så ikke kender algritmen så gør det jo heller ikke situationen bedre.
14. august 2005 - 12:09
#6
ok men lige en ting til.... hvordan finder jeg de 100 første primtal på den simpleste måde start med at skriv hvordan man finder primtal
14. august 2005 - 12:15
#7
simplest bare tæl n op og divider med alle tal fra 2 til sqrt(n) og se om nogen går op hvis nej så har du fundet et primtal avanceret: søg på Sieve of Erastothenes
14. august 2005 - 12:25
#8
ok læg et svar og få dine points jeg tror lige jeg skal læse lidt mere for at forstå alt dette ;)
14. august 2005 - 12:28
#9
svar
14. august 2005 - 16:42
#10
14. august 2005 - 21:16
#11
Jeg kan godt lide den pædagogiske linie. Jeg mener bestemt at du burde bruge moderne ANSI C++ og namespace std. Og selvom det kun er artikel 1 kunne den godt bruge mere stof.
14. august 2005 - 21:18
#12
ok mange tak ;)
Kurser inden for grundlæggende programmering