Nicht nachvollziehbare Ausgabe in der Console



  • Hallo Leute! Bin neu hier und bin ein Anfänger in Sachen Programmierung und das auch noch in der Programmiersprache C. Würde mich freuen, wenn ihr mir etwas helfen könntet. Ich benutze den Compiler gcc und nutze Linux Ubuntu 12.04 LTS.

    Nun zu meinem "Problem":
    Ich versuche mich gerade in Arrays. Ich generiere in einer externen Datei eine Zufallszahl.
    Diese Zufallszahl soll einer fiktiven Pin(eindimensionales Array) zugeordnet werden. Am Ende möchte ich 3 verschiedene Pinnummern je 4 Ziffern haben, die eben per Zufall generiert wurden. Diese möchte ich dann auf dem Bildschirm ausgegeben haben.
    Das habe ich versucht mit den For-Schleifen zu realisieren. Doch leider kriege ich nur diese Ausgabe:

    Deine Geheimzahl ist: 2-7-5-9

    Beim 8. Lauf lautet die generierte Pin: 2-8-1-8

    Also nur ein mal die generierte Pin und beim "Lauf" eine 8, obwohl ich doch in der Schleife 3 Läufe deklariet habe.
    Und das hier ist mein Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #include "zufallszahl.h"
    
    int main(void) 
    {
       int min;
       min = 1;
       int max;
       max = 9;
    
       int geheimzahl[3];	
       geheimzahl[0] = 2;
       geheimzahl[1] = 7;
       geheimzahl[2] = 5;
       geheimzahl[3] = 9;
    
       int pin[3];	
    
       printf("Deine Geheimzahl ist: %d-%d-%d-%d\n\n", geheimzahl[0], geheimzahl[1], geheimzahl[2], geheimzahl[3]);
    
       for (int u = 0; u < 4; u++)
       {
          for (int k = 0; k < 4; k++)
          {
            int gen = liefere_ganze_zufallszahl(min,max);
    	pin[k] = gen;
          }
       printf("\nBeim %d. Lauf lautet die generierte Pin: %d-%d-%d-%d\n", u, pin[0], pin[1], pin[2], pin[3]);	
       }
    
    }
    

    Würde mich freuen, wenn ihr mir da einen Tip geben könntet. Danke schon mal im Voraus! 😋



  • Wie viele Zahlen kann geheimzahl und pin aufnehmen?
    Wie viele werden abgespeichert?



  • soong schrieb:

    Doch leider kriege ich nur diese Ausgabe:

    Deine Geheimzahl ist: 2-7-5-9

    Beim 8. Lauf lautet die generierte Pin: 2-8-1-8

    Seltsam. Nein, eigentlich unmöglich. Dein Code stimmt.

    Führt du wirklich das aktuelle Binary aus?



  • Also die geheimzahl[3] soll eine Geheimzahl mit vier Ziffern haben und die pin[3] soll auch nur vier Ziffern aufnehmen, allerdings soll die Pin drei mal generiert werden, so dass ich am Ende eben 3 Pinnummern habe.



  • soong schrieb:

    Also die geheimzahl[3] soll eine Geheimzahl mit vier Ziffern haben und die pin[3] soll auch nur vier Ziffern aufnehmen.

    Entschuldige, was meinst du mit Binary?
    Vielleicht noch als zusätzliche Info, das Ubunut 12.04 LTS nutze ich unter Oracle VM VirtualBox 4.2.12.



  • strangee schrieb:

    Dein Code stimmt.

    Tut er nicht. Siehe Nathans Post.


  • Mod

    soong schrieb:

    Also die geheimzahl[3] soll eine Geheimzahl mit vier Ziffern haben und die pin[3] soll auch nur vier Ziffern aufnehmen.

    Kommt dir das selber nicht irgendwie komisch vor, wenn du diesen Satz schreibst? Guck dir nochmal Arrays an.



  • SeppJ schrieb:

    soong schrieb:

    Also die geheimzahl[3] soll eine Geheimzahl mit vier Ziffern haben und die pin[3] soll auch nur vier Ziffern aufnehmen.

    Kommt dir das selber nicht irgendwie komisch vor, wenn du diesen Satz schreibst? Guck dir nochmal Arrays an.

    Also das Array geheimzahl[3] ist hier eigentlich nur nebensächlich. Wichtig ist das Array pin[3]. Ich möchte halt drei verschiedene Pins haben, die je vier Ziffern aufweisen. Diese Ziffern möchte ich dann sozusagen später dann mit den Ziffern des Arrays geheimzahl[3] vergleichen. Was mir noch komisch vorkommt, dass beim "Lauf" eine 8 ausgegeben wird und nur ein mal die Pin generiert wird.


  • Mod

    Fang nicht an, dich selber ausweichend zu verteidigen, wenn du nach Fehlern fragst und man dir die Fehler nennt! Geh lieber davon aus, dass man dir deine Fehler genannt hat!

    SeppJ schrieb:

    Guck dir nochmal Arrays an.

    Wichtige Stelle nochmal markiert.



  • SeppJ schrieb:

    Fang nicht an, dich selber ausweichend zu verteidigen, wenn du nach Fehlern fragst und man dir die Fehler nennt! Geh lieber davon aus, dass man dir deine Fehler genannt hat!

    SeppJ schrieb:

    Guck dir nochmal Arrays an.

    Wichtige Stelle nochmal markiert.

    Danke, ich übe mich noch, hab Nachsicht 😉



  • OK, nochmal:
    Wie viele Zahlen passen in das Array int pin[3]?
    Antworte nur mit einer Zahl.



  • Danke an dieser Stelle für den Hinweis mit den Arrays. Ich habe das Programm umgeschrieben - das wollte ich im Grunde erreichen:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #include "zufallszahl.h"
    
    int main(void) 
    {
       int min;
       min = 1;
       int max;
       max = 9;
    
       int geheimzahl[3][4];
       geheimzahl[1][1] = 1;
       geheimzahl[1][2] = 1;
       geheimzahl[1][3] = 1;
       geheimzahl[1][4] = 2;
    
       printf("Deine Geheimzahl ist: %d-%d-%d-%d\n\n", geheimzahl[1][1], geheimzahl[1][2], geheimzahl[1][3], geheimzahl[1][4]);
    
       for (int z = 0; z < 10000; z++)
       {
         for (int u = 0; u < 3; u++)
         {
            int pin[3][4];	
    
    	for (int k = 0; k < 4; k++)
    	{
               int gen = liefere_ganze_zufallszahl(min,max);
    	   pin[u][k] = gen;
    	}
    
    	if (geheimzahl[1][1] == pin[1][1] && geheimzahl[1][2] == pin[1][2] && geheimzahl[1][3] == pin[1][3] && geheimzahl[1][4] == pin[1][4])
    	{
    	   printf("Erratene Pin: %d-%d-%d-%d\n", pin[1][1], pin[1][2], pin[1][3], pin[1][4]);
    	   printf("Erkannt! Beim %d. Versuch\n", z);
    	   z = 10000;	
    	} else 
    	{
    	 //puts("NICHT erkannt!");
    	    ;
    	}
          }
       }
    }
    

    Ausgabe:

    Deine Geheimzahl ist: 1-1-1-2

    Erratene Pin: 1-1-1-2
    Erkannt! Beim 2675. Versuch

    Trotzdem ist es für mich weiterhin schleierhaft, warum er bei der Ausgabe, beim "Lauf", eine 8 ausgegeben hat und nicht die drei. Hat das was vielleicht mit dem Puffer zutun?



  • ...



  • Nathan schrieb:

    OK, nochmal:
    Wie viele Zahlen passen in das Array int pin[3]?
    Antworte nur mit einer Zahl.

    Ich antworte mal an seiner statt: Leider nur drei. Leider wurde die vierte Stelle daher in die Pampa geschrieben.

    Soong, achte doch mal auf das, was die Leut Dir hier sagen, sie tun's doch schließlich nicht nur zum Selbstzweck.


Anmelden zum Antworten