eingabe string lesen
-
Hey leute!
vorweg erst mal, wir pogrammeirn C unter linux als eine shell anwendung.
Mein Problem ist nun ich bekomm als parameter z.B.: 4.5x2+2.0x1+7.12x2-9.0098x0
Nun ist mein Problem wie ich ds auslesen soll.. strings dürfen wir nicht benutzen..
Abgespeichert werden soll ds ganze in ein array wobei der exponent das feld angiebt also bei: 4.5x^2 an stelle [2] und wenn mehrerer vorkommen soll zusammengefasst werden.
Kann mir jmd ein tipp geben ? hab schon mit allen möglichen sachen probiertMfG Alsfar
-
du könntest das evtl eine struktur machen
typedef struct { float number; // zahl vor der variable z.B.: 4.5 char variable; // variable zb x float exponent; // exponent zb.: 2 char operand; // operand zum nachfolgenden element, zb.: + } term;
für folgenden ausdruck 4.5x2+2.0x1+7.12x2-9.0098x0 kannst du dir dann so ein array zurechtbasteln:
term arr[4]; arr[0].number = 4.5; arr[0].variable = 'x'; arr[0].exponent = 2; arr[0].operand = '+'; arr[1].number = 2.0; arr[1].variable = 'x'; arr[1].exponent = 1; arr[1].operand = '+'; arr[2].number = 7.12; arr[2].varialbe = 'x'; arr[2].exponent = 1; arr[2].operand = '-'; arr[2].number = 9.0098; arr[2].varialbe = 'x'; arr[2].exponent = 0; arr[2].operand = '\0'; // '\0' für keinen weiteren operanden
-
Die zahlen werden ja vom benutzer beim peogramm aufruf als parameter eingegeben
und wie ich das ausles weiß ich nit.. ich kann mir ja nu nit tausend variablen baun und alles mit sscanf machen
gibts da nichn befehl der dann alles in ein char array kloppt oder so ? damit ich des weiter barbeiten kann ?
wir sollen uns auch kein eigenen typen baun. der exponent gibt an an welche index stelle des arry die zahl kommt also bei 42^2 wird in arr{ \0 , \0 , 42 , .. } geschrieben für 5^1 : arr{ \0 , 5 , 42 , .. } usw.
-
Was du benötigst, nennt sich Parser.
Die Struktur aus dem vorherigen Beitrag ist schon gut dafür geeignet, du mußt diese jetzt nur noch füllen (lassen).Du kannst entweder Zeichen für Zeichen lesen oder aber du benutzt z.B. scanf dafür:
typedef struct { float number; // zahl vor der variable z.B.: 4.5 char variable; // variable zb x float exponent; // exponent zb.: 2 } term; term t; char c; scanf("%f%c%c%f", &t.number, &t.variable, &c, &t.exponent);
Jetzt brauchst du nur in eienr Schleife die einzelnen Terme in ein Array einlesen...