Frage



  • Also erstmal: Nein, das soll kein witz sein.
    und zweitens, nein, das ist auch keine parserfunktion.
    Das ist lediglich ein Code-Schnipsel eines Skriptes, dass ein Viereck mit einer Mindestanzahl an Angaben vollständig auflöst.
    Für die "%C%C" will ich mich entschuldigen, ich habe sie bei mir bereits entfernt, ich muss da wohl eine ältere version meines sources kopiert haben.
    Die if-anweisungen SIND geordnet, 3 eingaben, 3 if anweisungsblöcke.
    Hast du einen anderen Vorschlag, dann poste ihn bitte.
    Wieso sollte das nicht genug sein?

    Ich habe hier eine Eingabe plus Zuweisungen, nach den Zuweisungen erfolgt eine Anweisung "if ((a_gross!=0)&&(ha!=0)){a=20;}"

    Ich kann mir die Antwort denken aba du hast nicht zufällig Links zu diesem Thema zur Verfügung? Wenn ja bitte poste sie.

    Thx



  • Strings liest man so ein:

    scanf ("%s", zeichen_1);

    also ohne &.



  • Sorry das ist eig die richtige if anweisung, if ((a_gross!=0)&&(ha!=0))
    {a=a_gross/ha;}
    obwohl bei der Eingabe kein 'A' eingegeben wird ist a_gross!=0 was ich nicht ganz verstehe.
    gibt man 'A' bei der Eingabe ein ist a_gross==0.



  • c.rackwitz schrieb:

    langsam komm' ich mir bloed vor...

    und es geht weiter und weiter...

    ich moechte mal vermuten, einer der gruende fuer die fehler in deinem code ist, dass du selber keinen durchblick durch deinen code hast. deine unzaehligen variablen mit kryptischen namen (extra?!?! U->u, aber A->a_gross?!?!) tragen genauso dazu bei wie deine berge von ifs, deren hintergrund nirgends beschrieben wird (wie du an einzelnen buchstaben inmitten eines strings herausfinden willst, was da nun reinkam, ist mir schleierhaft)

    mit deinem derzeitigen code kann (denke ich) keiner hier was anfangen. also waere es mir am liebsten wenn du deine gedanken zum problem ordnen und aufschreibst, anstatt sie sofort in code zu giessen.
    anfangen wuerde ich so: welche werte am viereck wuerdest du akzeptieren wollen?



  • ok, ganz langsam...

    Erstens habe ich den TOTALEN Überblick über meinen Code. (bzw den algo)
    Dass du mir den zweiten "weiter"-Link geschrieben hast empfinde ich als beleidigend.

    zum Vergleich: Sogar der Vefasser dieses Codes

    #include <stdio.h>
    void main()
    {
        int a,b,c;
    
        c=a+b;
    
        printf("die rechenoperation heisst: a + b = c\n\n");
    
        printf("gib eine zahl fuer a ein:");
    
        scanf("%d\n",&a);
    
        printf("a = %d\n\n", a);
    
        printf("gib eine zahl fuer b ein:");
    
        scanf("%d\n",&b);
    
        printf("b = %d\n\n", b);
    
        printf("damit lautet das ergebnis: c = %d\n", c);
    
    }
    

    wurde zumindest mit Respekt behandelt, währen ich meine Behandlung von dir als respektlos empfinde.
    (Zitate wie: das soll n witz sein, oder?, oder .....zusammenfrickelst?
    WAS SOLL DAS? Das ist ein Unterprogramm meines ersten Programmes.
    Nur weil du ein Mod bist und gut skripten kannst gibt dir das noch lang nicht das Recht so daherzureden.
    Ich weiss dass mir hier niemand helfen muss und ich mag dieses Forum sehr trotzdem brauchst du mir nicht auf diese schei** Art zu kommen.

    Ich habe versucht die Fragestellung so weit wie möglich zu präzisieren und habe nur die jeweils wichtigen Code-Segmente (2 an der Zahl) gepostet.
    Ich habe die Zeile wo der Fehler auftritt gepostet und hervorgehoben.
    Die anderen Variablen können dir scheissegal sein, die gehören nicht zur Fragestellung und sind für andere Berechnungen. Du siehst nicht amal wozu sie gut sind und redest deppat daher. Na für was sonst wenn nicht für andere Berechnungen. trottel, na no na zum spaß werde ich sie deklarieren.
    na was wirds wohl sein wenn ich vierecksauflösungen mache. mathematische Bezeichner. u=Umfang, A=Fläche, e= diagonale, sin=sinus
    das mit den strings? Is doch klar du trottel oder (und selbst wenn es ned die effizientest Methode is)? wenn ich das zweite Element auf a checke, was kommt denn da in Frage?? Nur ha, wenn es b is kommt nur hb in Frage.
    Ich habe anderen meinen gesamten source geschickt die das SOFORT gecheckt haben ohne dass ich was dazu sagen musste, was heissen soll es interessiert dich vermutlich nicht mal was das soll du handelst es gleich mal runter.

    Was is denn daran so schwer? es erfolgt eine eingabe, aufgrund der eingabe wird entschieden welche var den eingabewert zugeschrieben bekommt.
    Drei Angaben, drei nichtleere Variablen, aufgrund dreier Angaben (beliebige reihenfolge) wird das spezielle Viereck völlig aufgelöst.

    Du hast wie du sagst zwar keine Ahnung von diesem Skript und maßt dir an gleich mich und mein gesamtes skript niederzumachen. Alles was nicht funzt is eine verdammte Übergabe die bei allen anderen var's funzt.

    Wenn der code so ned passt hättest du es mir freundlicher sagen können und ich hätte ihn sofort dokumentiert.

    a_gross weil a eine Seite ist und A (a_gross) die Fläche.
    ALLES was ich wissen wollte ist, wieso nur bei a_gross (bei allen anderen var's funzt mein inzischen fertiges Skript problemlos), keine Übergabe stattfindet.

    denn wenn man A beschreibt is A=0 und wenn mans ned beschreibt irgendein hoher wert. bis auf diese Sache (wenn ich a_gross ausklammer) funzt dieses Skript auch spitze also behanlde mich nicht wie einen Trottel.

    Die paar syntaxfehler sind nur da weil ich unabasichtlich einen ein bisschen älteren source gepostet habe.

    Sorry ich meins ned persönlich aber deine Art macht mich wirklich sauer, vor allem weil ich die regeln und die must's gelesen habe und mich dementsprechend bemüht habe diese einzuhalten. Und Trotzdem werde ich wie wasweissichwer behandelt und das is ziemlich kränkend.



  • Ja von mir aus sperr mich jetzt, nur ich lass mich nicht gleich niedermachen nur weil du mod bist.
    Es is sonst nicht meine Art zu flamen aba hast du mir Respekt entgegengebracht?
    Du hast mich viell. nicht direkt beschimpft behandelst mich aba wie einen Idioten und dass lass ich mir sicher nicht gefallen.



  • Ich glaube nicht, dass irgendjemand dich hier Beleidigen möchte, aber in diesem Fall ist es einfach Sinnvoller erstmal den Code zu strukturieren und zu Kommentieren, in den meisten Fällen findet sich der Fehler dann von selbst. Und wenn du Code postest, dann solltest nicht nur DU den Überblick haben, sondern auch jeder der dir dazu irgendwie helfen soll. Zur Info: Dieser Beitrag ist nicht beleidigend gemeint. 😉



  • Ich hoff hab Dein Problem richtig verstanden:
    "denn wenn man A beschreibt is A=0 und wenn mans ned beschreibt irgendein hoher wert."
    Variablen haben irgend nen Wert, wenn man sie nicht initialisiert, vielleicht solltest Du am Anfang erst 0 zuweisen, dann kannste ev. den Fehler einengen.
    Seh sonst auch grad keinen Fehler. Übrigens kannste ruhig "A" schreiben statt "a_gross", C ist case sensitive.

    Und reg Dich nicht auf, weil Anfänger hier generell runter gemacht werden.
    [flame]Scheints haben gewisse Leute einfach kein Respekt, und wissen nicht mehr wies war, als sie anfingen.[/flame]



  • Danke, das ist ne gute Idee, leider funzt es ned.
    Was mir ein Rätsel ist, ist dass es bei allen anderen Variablen klappt.
    Die If-clause ist auch identisch und syntaktisch wie logisch richtig sofern ich das beurteilen kann.
    Nichts unterscheidet diese if abfrage von den anderen, alles was meiner Meinung nach noch übrig bleibt ist die eingabe.

    a wird nirgendwoanders überschrieben, da es, wenn ich diese if-clause ausklammere alles funzt.



  • ausserdem sind alle berechnungen in jeder routine nicht direkt von einander abhängig.



  • Kapiers ned, irgendwie komisch 😕

    Hau doch mal den aktuellen Code rein, anstatt der alten ausm ersten Post.



  • ja klar, unterscheidet sich nur nicht so sehr von dem alten.

    #include <stdio.h>
    #include <math.h>
    
    int main ()
    
    {
    
    float a, b,c, a_gross=0,u,d, extra, extra_2,extra_3,i,x, e, f, status, sin_a, sin_b, sin_y,sin_y_1, cos_a, cos_b, cos_y, ha,hb, alpha,alpha_1, beta, special, g, gamma,gamma_2,gamma_1,sin_a_1, h_1, a_1, a_2,cos_y_1
    ;  /*d und c nicht vergessen */
    char zeichen_1[6], zeichen_2[6], zeichen_3[6];
    
    printf ("Bitte geben sie sie ihre erste Angabe ein\n");
    scanf ("%s", zeichen_1);
    getchar ();
    
    printf ("Bitte geben sie ihre zweite Angabe ein\n");
    scanf ("%s", zeichen_2);
    getchar ();
    
    printf ("Geben sie nun ihre dritte Angabe ein\n");
    scanf ("%s", zeichen_3);
    
    printf ("Geben sie bitte den Wert für %c%c an\n", zeichen_1);
    scanf ("%f", &extra);
    getchar ();
    
    printf ("Geben sie bitte den Wert für %c ein\n", zeichen_2);  
    scanf ("%f", &extra_2);
    getchar ();
    
    printf ("Geben sie nun bitte den Wert für %c%c ein\n", zeichen_3);
    scanf ("%f", &extra_3);
    
    if (zeichen_1[0]=='a') { a=extra;}
    if (zeichen_1[0]=='b') { b=extra;}
    if (zeichen_1[0]=='U') { u=extra;}
    if (zeichen_1[0]=='A') { a_gross=extra;}
    if (zeichen_1[0]=='e') { e=extra;}
    if (zeichen_1[0]=='f' ) { f=extra;}
    if (zeichen_1[1]=='a') {ha=extra;}
    if (zeichen_1[1]=='b') {hb=extra;}                                     /* string oder array einrichten*/
    if (zeichen_1[4]=='a') {sin_a=extra;}
    if (zeichen_1[4]=='b') {sin_b=extra;}
    if (zeichen_1[1]=='l') {alpha=extra;}
    if (zeichen_1[1]=='e') {beta=extra;}
    
    if (zeichen_2[0]=='a') { a=extra_2;}
    if (zeichen_2[0]=='b') { b=extra_2;}
    if (zeichen_2[0]=='U') { u=extra_2;}
    if (zeichen_2[0]=='A') { a_gross=extra_2;}
    if (zeichen_2[0]=='e') { e=extra_2;}
    if (zeichen_2[0]=='f' ) { f=extra_2;}
    if (zeichen_2[1]=='a') {ha=extra_2;}
    if (zeichen_2[1]=='b') {hb=extra_2;}                                     /* string oder array einrichten*/
    if (zeichen_2[4]=='a') {sin_a=extra_2;}
    if (zeichen_2[4]=='b') {sin_b=extra_2;}
    if (zeichen_2[1]=='l') {alpha=extra_2;}
    if (zeichen_2[1]=='e') {beta=extra_2;}
    
    if (zeichen_3[0]=='a') { a=extra_3;}
    if (zeichen_3[0]=='b') { b=extra_3;}
    if (zeichen_3[0]=='U') { u=extra_3;}
    if (zeichen_3[0]=='A') { a_gross=extra_3;}
    if (zeichen_3[0]=='e') { e=extra_3;}
    if (zeichen_3[0]=='f' ) { f=extra_3;}
    if (zeichen_3[1]=='a') {ha=extra_3;}
    if (zeichen_3[1]=='b') {hb=extra_3;}                                     /* string oder array einrichten*/
    if (zeichen_3[4]=='a') {sin_a=extra_3;}
    if (zeichen_3[4]=='b') {sin_b=extra_3;}
    if (zeichen_3[1]=='l') {alpha=extra_3;}
    if (zeichen_3[1]=='e') {beta=extra_3;}
    

    Stehen die Variablen fest, durchläuft das Programm eine Menge if-blocks die unabhängig voneinander sind und auch beim debuggen, konnte ich diese Zeile als die identifizieren, die a umschreibt,f ((a_gross!=0)&&(ha!=0))
    {a=a_gross/ha;}, zudem ist A (a_gross) die einzige Variable die auch Probleme macht.
    Daher vermute ich den Fehler in der Eingabe, bzw. der indexzahl des arrays. Komischerweise erscheint die mir auch richtig, da das erste array element ja 0 ist.



  • diese Zeile als die identifizieren, die a umschreibt,f ((a_gross!=0)&&(ha!=0)) {a=a_gross/ha;},

    Wo sitz denn die?



  • oh sry, hab da noch immer die doppel "%c", aba der rest is genauso.
    vorher hab ich ja auch unabsichtlich ne alte if abfrage drinnen gehabt die is jetzt
    ausgebessert.



  • die sitzt irgendwo unten in einem der if-blocks.

    Was komisch is is aber, dass auch wenn a_gross!=0 ist, müssten die befehle abgeblockt werden weil ha ja auch null sein sollte.



  • anno2006 schrieb:

    weil ha ja auch null sein sollte.

    Oh oh, er hat "sollte" gesagt 😃
    Initialisiere alle Variablen mit 0, sonst hast Du irgend nen Bockmist drin, meist ne massiv negative Zahl, aber sicher nicht null.

    Edit: Sorry aber mehr gibt Dein Codebrocken nicht her



  • LOL, np, hat gefunzt, skript lässt sich problemlos ausführen.

    ur strange, aba bitte.

    danke



  • u r wellcum 😃


Anmelden zum Antworten