Ankündigung

Einklappen
Keine Ankündigung bisher.

User helfen Usern - Informatik

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Oh sorry, kleiner Denkfehler :)

    Kommentar


      würde ich auch so sehen asdasd, ohne es aber zu wissen.

      eigentlich kommt ja nur bei 2+1 die 1 als übertrag und bei 2+2 die 2 als übertrag in frage. alle anderen additionen lassen sich ja ohne übertrag darstellen

      Kommentar


        Mein Ergebnis für Teilaufgabe 1 ist "1212111" falls es jemand zum testen brauch.

        Kommentar


          partyalarm, wo sind die 1.0er ??

          Kommentar


            1
            1
            ---
            2 (1+1 ergibt 2 und übertrag 0)

            1
            2
            ---
            11 (1+2 ergibt 1 und übertrag 1)

            2
            2
            ---
            12 (2+2 ergibt 2 und übertrag 1)

            2+2+2 wär dann auch wieder 2 aber übertrag 2 etc

            Kommentar


              Du addierst die Ziffern von hinten nach vorne, so wie sonst auch. Wenn du eine ungerade Zahl hast, dann schreibst du eine 1, sonst eine 2. Der restliche Wert wird dann durch 2 geteilt und als Übertrag verwendet. Das machst du bis du fertig bist.

              Beispiel:
              22222
              +212121

              Letzte Stelle ergibt 3. Das heißt du schreibst eine 1 und hast 2 übrig. 2/2 ist 1, also nimmst du 1 als Übertrag. Vorletzte Stelle ergibt dann 5, also schreibst du eine 1 und hast 4 übrig also 2 als Übertrag. Usw...

              €: Natürlich 1 Minute zu spät. :D

              Kommentar


                danke euch

                Kommentar


                  Hi Freunde, kurze Frage:

                  Es geht um C:

                  Angenommen ich habe ein Programm und eine ausführbare Datei erstellt. Ich führe diese aus und gebe genau einen Int-Wert über die scanf-Funktion ein: z.B. 2000, und er spuckt mir eine Zahl aus, die er eben dementsprechend berechnen soll.

                  Nun führ ich die gleiche Datei nochmal aus und geben den gleichen Wert (2000) ein, diesmal spuckt er mir eine Zahl etwas abweichend von der ersten aus.

                  Wie kann man sich sowas erklären?

                  Kommentar


                    ohne quelltext gg....

                    deklarierung der variablen falsch...
                    scanf falsch
                    falls du n array nutzt out of bounds..
                    falls du pointer benutzt zeigt der vielleicht falsch

                    kann halt echt alles sein.. also quelltext oder nichts

                    Kommentar


                      Zitat von cena
                      Hi Freunde, kurze Frage:
                      Es geht um C:
                      Angenommen ich habe ein Programm und eine ausführbare Datei erstellt. Ich führe diese aus und gebe genau einen Int-Wert über die scanf-Funktion ein: z.B. 2000, und er spuckt mir eine Zahl aus, die er eben dementsprechend berechnen soll.
                      Nun führ ich die gleiche Datei nochmal aus und geben den gleichen Wert (2000) ein, diesmal spuckt er mir eine Zahl etwas abweichend von der ersten aus.
                      Wie kann man sich sowas erklären?
                      Das Programm hat eine sich veränderne Variable. zb:
                      - Datetime
                      - Unixzeit
                      - Letzte Zugriffszeit
                      - Zufallswert
                      - etc.

                      Edit: Systemweite Varibalen werden gesetzt und nicht bereinigt.

                      Kommentar


                        Schreib ich morgen rein, falls ich den Fehler nicht finde, danke euch schon mal.

                        Kommentar


                          Habs scheinbar immer noch nicht gerafft, wäre lieb von euch wenn ihr mal drüber gucken könntet.

                          Im Grunde möchte ich erstmal sowas hier vom Syntax richtig hinbekommen:
                          Code im Spoiler
                          Spoiler: 
                          #include

                          int A(int X);
                          int B(int A);

                          int main(void)
                          {
                          int X;
                          printf("Geben Sie eine Zahl ein: ");
                          scanf("%d", &X);
                          printf("Loesung:%d", B(A));

                          return 0;
                          }
                          /* Funktionen */

                          int A(int X){
                          return X/360;}

                          int B(int A){
                          return A*1337+A;}


                          Zurzeit gibt er mir noch folgenden Fehler an: Passing argument 1 of 'B' makes integer from pointer without a cast [enabled by default]

                          Unter anderem auch so einen Fehler: expected 'int' but argument is of type 'int (x)(int)'

                          Kommentar


                            Es ist keine gute Idee, Variablen und Funktionen (A) gleich zu benennen.


                            Erklärung:
                            "int A(int X);"

                            Hier sagst du: A ist eine Funktion, der man ein Integer übergeben muss und die ein Integer zurückgibt.

                            int B(int A);
                            [...]
                            printf("Loesung:%d", B(A));
                            [...]
                            int B(int A){
                            return A*1337+A;}
                            Hier ist A dann keine Funktion mehr sondern eine Integervariable.


                            "int A(int X);"
                            bedeutet, dass der NAME der Funktion "A" und nicht, dass der Rückgabewert "A" ist. Da, wo du A schreibst meinst du eigentlich A(X). Also die Zahl, die rauskommt, wenn A den Wert X übergeben bekommt.

                            Kommentar


                              Oh, okay. Moment, ich schreibe mal einen neuen und poste ihn hier rein.

                              Ich danke dir.

                              Könnte ich die beiden Funktionen auch so schreiben?

                              Spoiler: 
                              int A(int X){
                              int a;
                              a=X/360;
                              return (a);}

                              int B(int a){
                              int b;
                              b=(a+a);
                              return (b);}


                              Kommentar


                                Ja, aber das bringt dir nix ;)

                                Die Variable "a" gibt es nur in der Funktion A und die Variable "b" nur in der Funktion b. A(X) spuckt eine Zahl aus. Diese Zahl hat keinen Namen. Wenn du den Wert speichern willst musst du den Ausgabewert in eine Variable speichern. Zum Beispiel, indem du in der Funktion, die die Funktion A aufruft "int c = A(X)" schreibst. Dann wird in der Variable c der Ausgabewert von A(X) gespeichert. Dann kannst du B mit B(c) aufrufen.


                                Edit: Was du aber noch beachten musst: Du castest das Ergebnis X/360 auf einen int. X/360 muss keine ganze Zahl sein sondern kann eine Kommazahl sein. Du "zwängst" die Zahl aber in eine int-Variable und dadurch wird der Nachkommaanteil abgeschnitten. Wenn X=200 ist liefert A(200) nicht 0,556 sondern 0. A(1000) liefert 2.

                                Kommentar

                                Lädt...
                                X