Uebung Arrays vergleichen...



  • eins



  • Glaubst Du, das guckt sich so komplett ohne Formatierung jemand an?



  • Sorry, Formatierung funktioniert irgendwie nicht...


  • Mod

    Wie man seinen Beitrag lesbar formatiert

    Das Semikolon hinter dem if ist falsch.



  • Es war das Semikolion hinter dem if. Bricht mich grad ein wenig an! Ich weiß das hinter Schleifen(außer do-while) und Verzweigungen kein ; kommt und doch passieren mir solche Faselfehler. Zu meiner Entschuldigung, beschäftige mich erst seit 2 Wochen mit C.

    Bis denne und nochmal Danke
    Andy



  • andy_f schrieb:

    Zu meiner Entschuldigung, beschäftige mich erst seit 2 Wochen mit C.

    Das heißt, wir müssen damit rechnen, dass der OP möglicherweise neue Threads erstellt, in denen er seine Beiträge wegeditiert, sobald ihm geholfen wurde. Guckt euch mal seine post history an und überlegt euch, ob ihr in Zukunft noch antworten wollt.

    Können wir das generell etablieren, bei Neu-Regs immer erstmal ein fullquote zu machen, damit solche Threads nachvollziehbar bleiben und nicht völlig wertlos werden? Der OP ist da nämlich auch beileibe nicht der einzige mit diesem Unfug, das kommt in letzter Zeit irgendwie häufiger vor.


  • Mod

    D. Zitrone schrieb:

    Können wir das generell etablieren, bei Neu-Regs immer erstmal ein fullquote zu machen, damit solche Threads nachvollziehbar bleiben und nicht völlig wertlos werden? Der OP ist da nämlich auch beileibe nicht der einzige mit diesem Unfug, das kommt in letzter Zeit irgendwie häufiger vor.

    Macht voraussichtlich mehr Arbeit, als es wert ist, denn die meisten neuen Benutzer sind ja doch normalsoziale Leute. Diesem Thread hier weint auch niemand ernsthaft nach. Ich werde mich aber selbstverständlich dafür einsetzen, dass dem Threadersteller hier in Zukunft nicht mehr geholfen wird.



  • Sorry,

    wußte nicht, dass es verpönt ist seine Codes zu löschen. Da die Formatierung bei mir trotz mehrmaligem editieren nicht hingehauen hat, habe ich es nach dem ich weiß nicht mehr wievieltem Male einfach gelassen. Ich würde gern weiter auf eure Hilfe bauen und vielleicht komme ich ja dann auch mal dahin, dass ich anderen Usern helfen kann. Als Normalsozial würde ich mich übrigens nicht bezeichnen. Ich hau jetzt den Code(auch den jetzt fertigen für den abgespeckten Ticketautomat) wieder rein und werde in Zukunft nichts mehr löschen. Hoffe damit ist das Thema geklärt und ich würd mich über ein OK Eurerseits freuen.

    Danke für die bisherige Hilfe...
    andy

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int array1[10], array2[10];
    	int i;
    
    	for (int i = 0; i < 10; i++)
    	{
    		array1[i] = i;
    		array2[i] = i;
    	}
    	array2[9] = 30;
    
    	for (int i = 0; i < 10; i++)
    	{
    		if (array1[i] == array2[i])					  //Wenn array1 gleich aray2
    		{
    			continue;								  //dann mach weiter.
    		}
    
    		else										  //Trifft das nicht zu(array1 nicht gleich array2)
    		{
    			printf("Unterschied an Position %d\n", i);//dann gib die Position des Unterschiedes aus.
    			break;
    		}
    
    	}
    
    	return 0;
    }
    


  • Die Formatierung klappt übrigens wieder nicht. Ich arbeite mit Visual Studio Pro 2015 und kopiere den Code mit Strg+C und hau ihn mit Strg+V dann rein. Eigentlich müßte meine Formatierung übernommen werden???



  • du musst auch den "Code"-button anklicken oder deinen code wenigstens in [ code ] [ /code ] (natürlich ohne leerzeichen 😃 ) packen.

    sieht schonmal ganz gut aus, bekommst du aber sicherlich noch kürzer hin, sprich ohne continue und else.



  • Das geschieht nicht von alleine, du musst den code in code-tags setzen, die dinger unter den smileys. Vergiss einen codetagblock nicht zu schließen.



  • Code mit der Maus markieren und auf den C Button unter dem 😡 klicken.

    Oder, wenn kein Text markiert ist, den Cursor an den Anfang vom Code setzen und auf den C-Button clicken (dann bekommt der einen 😉
    Am Ende vom Code machst du das Gleiche.



  • Ohhh Mann

    Asche auf mein Haupt und zwar ganz viel. Aber jetzt hab ich's... Danke



  • Da du den if-Zweig (die Gleichheit) ja gar nicht möchtest, ist es auch überflüssig ihn hinzuschreiben.

    Dann kannst du die Bedingung negieren und es steht nur noch das Nötige da:

    if (array1[i] != array2[i])                   //Wenn array1 ungleich array2
            {
                printf("Unterschied an Position %d\n", i);//dann gib die Position des Unterschiedes aus.
                break;
            }
    


  • Danke, nicht schlecht. Super Optimierung. Bei einem langen Quellcode spart so etwas echt Zeit, Arbeit und die ganze Sache ist schlanker. Habs direkt in mein Uebungsscript eingebaut...

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
    	int array1[10], array2[10];
    	int i;
    
    	for (int i = 0; i < 10; i++)
    	{
    		array1[i] = i;
    		array2[i] = i;
    	}
    	array2[9] = 30;
    
    	for (int i = 0; i < 10; i++)
    	{
    		if (array1[i] != array2[i])					  //Wenn array1 gleich array2
    		{
    			printf("Unterschied an Position %d\n", i);//dann gib die Position des Unterschiedes aus.
    			break;
    		}
    
    	}
    
    	return 0;
    }
    


  • Die Deklaration von i in Zeile 8 wird nicht benötigt, denn Du deklarierst (ein anderes) i lokaler in den for-Schleifen die das in Zeile 8 deklarierte i überdecken. Die in Zeile 8 vereinbarte Variable wird in Deinem Code also niemals verwendet.

    Guckst Du Joy of Programming: Scope, Lifetime and Visibility in C.


  • Mod

    Das sieht übrigens danach aus, als würde andy_f einen C++-Compiler für seinen C-Code benutzen. Was er lieber nicht tun sollte.



  • Seit hier nebst Reaktion hab' ich mir vorgenommen zu sowas nix mehr zu sagen. 🤡



  • andy_f schrieb:

    Super Optimierung. Bei einem langen Quellcode spart so etwas echt Zeit, Arbeit und die ganze Sache ist schlanker.

    Der Compiler kann das auch.
    Und noch besser.

    Im Endergebnis wirst du keinen Unterschied feststellen.

    Und warum dann das Ganze?
    Irgendwann liest irgendjemand (auch du) den Code und denkt sich "Was soll das?"

    So steht im Code genau das, was du erreichen möchtest: den Unterschied feststellen.



  • Swordfish Stimmt, die Deklaration des i kann ich löschen. Danke fuer den Hinweis. Wir direkt entfernt...


Log in to reply