Exempel
komplex_eval[(1+i) + (2+i)]
returnerar 3 + 2i
komplex_eval[((2+0i) - (1+0i)) + (ett polärt tal med belopp 1 och
vinkel 3,14159)]
returnerar 0+0i
Du får själv avgöra om det returnerade talet ska vara på polär eller rektangulär form. Du avgör själv om du vill ha en infix, postfix eller prefix notation. Huruvida resultatet skrivs ut som heltal eller flyttal saknar betydelse.
Du kan ha nytta av funktionerna sin, cos,
tan, asin, acos, atan
och pi
, där de första sex
tar ett argument och den sista inget.
Om du vill påverka representationen av tal (vilket inte är obligatoriskt), kan du dessutom vilja använda funktionen float[i], som tar ett argument, ett heltal, och returnerar samma tal som flyttal, samt truncate[f], som tar ett argument, ett flyttal, och returnerar det närmaste heltalet.
Antag parenteser kring alla deluttryck.
Ledning 1: Det kanske kan vara klokt att tänka sig två olika abstrakta datatyper i denna uppgift. Fundera ordentligt kring de abstrakta datatyperna.
Ledning 2: En möjlig representation för de komplexa talen är såsom en lista av tre element, en "tag" som avgör om listan representerar ett tal på rektangulär eller polär form samt de två talen.
Anders Berglund Office: Room 1254 Department of Computer Systems E-mail: Anders.Berglund@docs.uu.se Box 325 Phone (work): +46 18 471 31 67 S-751 05 Uppsala Mobile phone: +46 70 425 02 11 Sweden Fax (work): +46 18 55 02 25 Senast ändrad: 08/30/97 19:08:33