Oprettet ons. d. 24. oktober 2012 kl. 10:04:03

simondid
simondid (6.696 point. Point ude: 30)

c++ løs -2x-4=7x+1 hjælp ?? skole opgave....

hej

åhh har fået en  stilled en opgave om at lave et c++ program som kan løse denne ligning -2x-4=7x+1 og sener hænd en 2. grands ligning er sådan  lige pt. på rimelig bar bund i forhold til at løse det har før hænd arbejde med java og lommeregner og ved der fra at den bedste løsning var at få inputtet som en array  og der efter lave om i den og så regne den ud på en eller anden måde.

men dette er meget lang tid siden og kan endelig ikke helt huske løsningen  eller finde de postes jeg før hænd har lavt omkring det .... ☹ ved der findes nogle Be skrævende tekniker til at løse sådan nogle matematiske problemer med men kan desværre ikke huske hvad de hedder nogle der kan hjælpe ??

Skrevet ons. d. 24. oktober 2012 kl. 11:31:10| #1

fedeko
fedeko (20.035 point)
http://www.eksperten.dk/ (...)

Ovenstående link giver dig en oversigt over de spørgsmål du tidligere har stillet, bl.a. dem ang. lommeregneren :-)

Skrevet ons. d. 24. oktober 2012 kl. 14:31:33| #2

simondid
simondid (6.696 point)
lol :( hade lige over set den funktion mange tak :) lige et hurtigt spørgsmål nogle der ved om det kan lade sige gøre at skrive den kode om til c++ og ikke mindst håndter 2 grands ligninger??

Skrevet fre. d. 26. oktober 2012 kl. 20:03:35| #3

arne_v
arne_v (1.048.763 point)
Til inspiration:

#include <iostream>
#include <cmath>

using namespace std;

typedef double (*fptr)(double x);

const double EPS = 0.0000001;

double f1(double x)
{
    return -2*x-4;
}

double f2(double x)
{
    return 7*x+1;
}

double f(fptr lhs, fptr rhs, double x)
{
    return lhs(x)-rhs(x);
}

double df(fptr lhs, fptr rhs, double x)
{
    return (f(lhs,rhs,x+EPS)-f(lhs,rhs,x))/EPS;
}

double solve(fptr lhs, fptr rhs)
{
    double x = 0;
    double oldx = -1;
    while(fabs(x - oldx) > EPS)
    {
        oldx = x;
        x = oldx - f(lhs,rhs,oldx)/df(lhs,rhs,oldx);
    }
    return x;
}

int main()
{
    cout << solve(f1,f2) << endl;
    return 0;
}

Skrevet lør. d. 27. oktober 2012 kl. 16:02:25| #4

simondid
simondid (6.696 point)
takker for inspirationen heldig hvis fik vi lidt mere info om hvordan det kan lade sig gøre at løse opgave :) her et det stykke arbejde jeg har lavt indtil videre som virker rat godt syntes jeg selv :)

mit største problem lige pt er at den ikke kan tage tal som består af mere end 1 tal og heller ikke 2 grads ligninger hvis i har nogle ider til at løse det kunne det være fedt




#include &lt;iostream&gt;



using namespace std;
void behandelLigning(char input[]);
char ligning[100];

float tempA=0;
float tempAA=0;
float tempC=0;
float tempB=0;
float a = 0;
float b = 0;
float c = 0;
float final;
int main(int argc, const char * argv[])
{
   
   
   
    cout &lt;&lt; &quot;velkommen til lommeregneren :)&quot;&lt;&lt;endl;
    cin &gt;&gt; ligning;
    behandelLigning(ligning);
   
   
   
    return 0;
}
void behandelLigning(char input[]){
   
    for (int i =0; i&lt;100; i++) {
       
        if (input[i]==&#039;x&#039;) {
            tempAA=input[i-1]-48;
            if (input[i-2]==&#039;-&#039;) {
               
                // b=b*-1;
                tempAA=tempAA*-1;
            }else if (input[i-2]==&#039;+&#039;){
               
                tempAA=tempAA*tempAA/tempAA;
            }
            cout &lt;&lt; &quot; tempAA før = =&quot;&lt;&lt;tempAA&lt;&lt;&quot; x&quot;&lt;&lt;endl;

            tempA=tempA+tempAA;
           
        }
       
        if (isdigit(input[i])) {
            if(input[i+1]==&#039;x&#039;){
                // gør ingen ting da det er en x værdi
            }else{
               
                if (b==48) {
                    tempB=input[i]-48;
                }else{
                    tempB=input[i]-48;
                }
               
               
                if (input[i-1]==&#039;-&#039;) {
                   
                    // b=b*-1;
                   
                    tempB=tempB*-1;
                }else if (input[i-1]==&#039;+&#039;){
                }
               
                cout &lt;&lt; &quot;tempB før = =&quot;&lt;&lt;tempB&lt;&lt;endl;
                b=b+tempB*-1;
            }
        }
       
        //^^^^ før ligheds tegnet under efter ligheds tegnet
       
        if (input[i]==&#039;=&#039;) {
            for (int re =0; i&lt;100; i++) {
                if (input[i]==&#039;x&#039;) {
                    tempAA=input[i-1]-48;
                    if (input[i-2]==&#039;-&#039;) {
                       
                        // b=b*-1;
                        tempAA=tempAA*-1;
                    }else if (input[i-2]==&#039;+&#039;){
                       
                        tempAA=tempAA*tempAA/tempAA;
                    }
                    cout &lt;&lt; &quot; tempAA efter = =&quot;&lt;&lt;tempAA&lt;&lt;&quot; x&quot;&lt;&lt;endl;
                    tempA=tempA+tempAA*-1;
                   
                }
               
                if (isdigit(input[i])) {
                    if(input[i+1]==&#039;x&#039;){
                        // gør ingen ting da det er en x værdi
                    }else{
                       
                        if (c==48) {
                            tempC=input[i]-48;
                        }else{
                            tempC=input[i]-48;
                        }
                       
                       
                        if (input[i-1]==&#039;-&#039;) {
                           
                            // b=b*-1;
                           
                            tempC=tempC*-1;
                        }else if (input[i-1]==&#039;+&#039;){
                            // gør ingen ting da det er +
                        }
                       
                        cout &lt;&lt; &quot;tempC efter = =&quot;&lt;&lt;tempC&lt;&lt;endl;
                        c=c+tempC;
                    }
                }
               
            }
           
           
           
           
        }
       
       
    }
    a=tempA;
    // a=tempA+tempAA;
    cout &lt;&lt;endl;
    cout&lt;&lt;&quot;tempA=&quot;&lt;&lt;tempA&lt;&lt;endl;
    cout&lt;&lt;&quot;tempAA=&quot;&lt;&lt;tempAA&lt;&lt;endl;
   
    cout&lt;&lt;&quot;a=&quot;&lt;&lt;a&lt;&lt;endl;
    cout&lt;&lt;&quot;b=&quot;&lt;&lt;b&lt;&lt;endl;
    cout&lt;&lt;&quot;c=&quot;&lt;&lt;c&lt;&lt;endl;
    if (c==48) {
        final=b+(c-48);
    }else{
        final = b+c;
    }
   
   
    cout&lt;&lt;&quot;fianl b+c = &quot;&lt;&lt;final&lt;&lt;endl;
   
    cout&lt;&lt;&quot;x=&quot;&lt;&lt;final/a;
   
}

Skrevet lør. d. 27. oktober 2012 kl. 16:06:21| #5

simondid
simondid (6.696 point)
åhh kan see at det ikke er blevet kopieret rigtig ind så her er lige et pastbin link i stedet :)

http://pastebin.com/ (...)

kan man rediger et post i stedet for at double poste?

Skrevet lør. d. 27. oktober 2012 kl. 23:31:18| #6

arne_v
arne_v (1.048.763 point)
Det der er vel mere en parsnings opgave en en lignings loesning.

Skrevet man. d. 29. oktober 2012 kl. 08:26:11| #7

simondid
simondid (6.696 point)
åhh hvis jeg vidste hvad du mener med parsnings opgave så vill jeg sikker give dig rat :)

i har ikke nogle ider til hvis dan det kan lade sig gøre at få tal med to tal i fx. 22

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Om anvendelse af argv i switch, og hvordan man overfører...

Oprettet den 16. maj 2013 kl. 16.03
heyn giver 100 point for svar | Giv et svar »

Hvordan undersøger jeg om min comport fungerer på Linux...

Oprettet den 15. maj 2013 kl. 09.59
heyn giver 30 point for svar | Giv et svar »

Kan nogle forklaere en mærkelig fejlbesked ved...

Oprettet den 14. maj 2013 kl. 13.36
heyn giver 30 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Her er seks Google Labs-funktioner, som du skal slå til med det samme

Gmail Labs giver dig adgang til en masse smarte funktioner, som Googles ingeniører leger med i øjeblikket.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Tre smarte trick som gør Windows 8 bedre

Boot direkte til skrivebordet, få en strategisk godt placeret luk-knap og slip for at logge ind. Her er tre tips til Windows 8, som gør det nemmere at blive venner med styresystemet.


Nyheder fra Computerworld

Teaser billede

Galleri: Her er Googles nyeste værktøj og legetøj

Google har i denne uge afholdt udviklerkonferencen I/O i San Francisco. Se her hvad søgegiganten kunne præsentere af nyskabelser.


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger