[war in C++] Polynom einlesen



  • Hallo,

    ich möchte ein Polynom der Form

    4xˆ8-13.5xˆ2+1x+1
    

    einlesen (Anzahl der Summanden ist variabel).

    Wie mache ich das am besten? Meine bisherige Lösung ließt immer nur einen Teil aus und macht das gleiche dann mit dem Rest-String. Es scheitert aber daran, dass sich das Eingabeformat nicht mehr rekonstruieren lässt, d.h. ich weiß nicht mehr bis wohin der erste Teil gegangen ist. Hier der Code:

    gets(buf);
    	char *ptr = buf;
    
    	while(0 != sscanf(ptr, " %fx^%d ", &factor, &pot))
    	{
    		printf("%f %d\n", factor, pot);
    		char bubu[1024];
    		sprintf(bubu, "%fx^%d", factor, pot);
    		ptr += strlen(bubu)+1;
    		printf("%d: %s\n", strlen(bubu), ptr);
    	}
    


  • Hast du vor damit zu rechnen, oder willst du es einfach nur einlesen?

    greetz



  • Nene, soll schon noch was damit passieren. Also Koeffizienten sollen indiziert nach Potenz in ein Array.



  • OK, dann erläutere mal bitte folgende Zeilen:

    gets(buf);
    char *ptr = buf;
    
    ptr += strlen(bubu)+1;
    printf("%d: %s\n", strlen(bubu), ptr);
    

    Mir ist schon klar was der erste Codeschnipsel bedeutet,
    aber ich versteh die Verbindung zum zweiten Codeschnipsel nicht ganz.

    Dann interessiert mich wie genau deine Eingabe aussieht.
    So sieht ein Polynom aus.

    a(n) * x^n + a(n-1) * x^(n-1) + ... + a(2) * x^2 + a(1) * x^1 + a(0) * x^0
    

    Wenn du nun sowas eingibst

    4xˆ8-13.5xˆ2+1x+1
    

    müsste bei deiner Art des Einlesens am Ende sowas in der Art stehen:

    4xˆ8-13.5xˆ2+1x^1
    

    Greetz



  • int n;
    sscanf(ptr, " %fx^%d %n", &factor, &pot, &n);
    ptr+=n;
    

    Mit "%n" kannst du erfragen, wieviele Zeichen scanf() eingelesen hat.


Anmelden zum Antworten