Gast MarcoPasta Geschrieben 23. April 2019 Teilen Geschrieben 23. April 2019 (bearbeitet) Code: #include <stdio.h> #include <stdlib.h> #include <time.h> void init(int intArr [], int arrSize){ int i; srand(time(NULL)); for (i = 0; i < arrSize; i++) { intArr[i] = rand() % 10000; } } void ausgabe(int intArr, int arrSize){ int i; for (i = 0; i < arrSize; i++) { printf("%5i\t", intArr); if (i == (i % 10 == 0)) printf("\n"); } } int main() { int myarray[1000] = {10, 20, 30, 44, 55, 100, 111, 1000}; init(myarray[1000], 100); ausgabe(myarray[1000], 100); return 0; } Hab die Vorlesung heute wegen ner miesen Krankheit verpasst und natürlich kommt alles neu dran, kann mir da jemand bei meinem Code helfen? Bearbeitet 23. April 2019 von MarcoPasta Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Xyl Geschrieben 23. April 2019 Teilen Geschrieben 23. April 2019 vor 47 Minuten schrieb MarcoPasta: Code: #include <stdio.h> #include <stdlib.h> #include <time.h> void init(int intArr [], int arrSize){ int i; srand(time(NULL)); for (i = 0; i < arrSize; i++) { intArr[i] = rand() % 10000; } } void ausgabe(int intArr, int arrSize){ int i; for (i = 0; i < arrSize; i++) { printf("%5i\t", intArr); if (i == (i % 10 == 0)) printf("\n"); } } int main() { int myarray[1000] = {10, 20, 30, 44, 55, 100, 111, 1000}; init(myarray[1000], 100); ausgabe(myarray[1000], 100); return 0; } Hab die Vorlesung heute wegen ner miesen Krankheit verpasst und natürlich kommt alles neu dran, kann mir da jemand bei meinem Code helfen? Es wäre hilfreich wenn du deine Wunschhilfe etwas eingränzt... Ich meine es ist ja schließlich eine Aufgabe damit du was lernst außerdem kleiner Tipp von meiner Seite... ich glaube das dein Array nur deklariert werden soll, nicht initialisiert, die initalisierung machst du dann in der init(...) funktion. Hier nochmal ein tipp die Aufgabe besteht darin, das Array mit zahlen zw. 1 und 10000 zu füllen. Versuch vorher bitte selbst auf die Lösung zu kommen bevor du den Spoiler aufklappst, danke und viel Glück!! Spoiler rand() % 10000 + 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whiz-zarD Geschrieben 24. April 2019 Teilen Geschrieben 24. April 2019 Hast du deinen Code schon mal ausgeführt? Der Compiler gibt dir schon Hinweise, was mit deinem Code nicht in Ordnung ist, da dieser sich nicht kompilieren lässt. Schaue dir dazu mal die Eingangsparameter der Prozeduren an. void init(int intArr [], int arrSize) { ... } void ausgabe(int intArr, int arrSize) { ... } Mal erwartest du ein Array und mal ein Integer aber in beiden Fällen schmeißt du ein Integer rein: init(myarray[1000], 100); ausgabe(myarray[1000], 100); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast MarcoPasta Geschrieben 26. April 2019 Teilen Geschrieben 26. April 2019 Hatte den Fehler gefunden gehabt, dass mit den Integer war nicht einmal das Problem, dass Problem war das ich mein Parameter init(myarray[1000], 100); eigentlich so hätte weitergeben müssen init(myarray, 100); Am 23.4.2019 um 17:26 schrieb Xyl: Es wäre hilfreich wenn du deine Wunschhilfe etwas eingränzt... Ich meine es ist ja schließlich eine Aufgabe damit du was lernst außerdem kleiner Tipp von meiner Seite... ich glaube das dein Array nur deklariert werden soll, nicht initialisiert, die initalisierung machst du dann in der init(...) funktion. Hier nochmal ein tipp die Aufgabe besteht darin, das Array mit zahlen zw. 1 und 10000 zu füllen. Versuch vorher bitte selbst auf die Lösung zu kommen bevor du den Spoiler aufklappst, danke und viel Glück!! Unsichtbaren Inhalt anzeigen rand() % 10000 + 1 Den Spoiler hatte ich auch nach Erfolgreichem kompilieren nicht geöffnet, bis mir irgendwann aufgefallen ist das direkt nach der ersten Ausgabe eine leerzeile erfolgt, habe dann den Spoiler geöffnet und habs sofort gecheckt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
RipperFox Geschrieben 28. April 2019 Teilen Geschrieben 28. April 2019 Mein C ist sehr sehr eingerostet, aber: 1. Tipp: Versuchs mal zuerst mit einem Array der Größe 10 und Initialisiere fix und gib's nur mal aus - dann kannst Du testen, ob der Rest funktioniert: int main() { int myarray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //init(myarray, 10); ausgabe(myarray, 10); return 0; } Ein Debugger wäre ggf. auch hilfreich.. 2. Du wirst merken, dass Deine Ausgabe schon nicht passt - versuche mal, zwei Zahlen auszugeben und danach einen Zeilenumbruch - hint: if (i == (i % 10 == 0)) ist zu kompliziert gedacht und macht nicht das, was Du möchtest.. Auch: So gibt man nicht Elemente des Arrays aus: for (i = 0; i < arrSize; i++) { printf("%5i\t", intArr); Du greift nämlich nicht auf den Inhalt eines Elements des Arrays zu - da fehlt was hinterm intArr.. Außerdem macht "%5i\t" evtl. nicht ganz das gewünschte - aber da müsste man den Aufgabensteller fragen, was er gerne gehabt hätte, z.B. "% 5i " oder "%05i ".. 3. Die Aufgabenstellung fordert, dass den Funktionen "init" und "ausgabe" eine Referenz auf das zu initialisierende Array mitgegeben wird - siehe z.B. http://www.lerneprogrammieren.com/blog/praxis/call-value-und-call-reference-bei-der-parameteruebergabe und https://stackoverflow.com/questions/1106957/passing-an-array-by-reference-in-c Hth.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Xyl Geschrieben 2. Mai 2019 Teilen Geschrieben 2. Mai 2019 Am 28.4.2019 um 08:03 schrieb RipperFox: Mein C ist sehr sehr eingerostet, aber: 1. Tipp: Versuchs mal zuerst mit einem Array der Größe 10 und Initialisiere fix und gib's nur mal aus - dann kannst Du testen, ob der Rest funktioniert: int main() { int myarray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //init(myarray, 10); ausgabe(myarray, 10); return 0; } Ein Debugger wäre ggf. auch hilfreich.. 2. Du wirst merken, dass Deine Ausgabe schon nicht passt - versuche mal, zwei Zahlen auszugeben und danach einen Zeilenumbruch - hint: if (i == (i % 10 == 0)) ist zu kompliziert gedacht und macht nicht das, was Du möchtest.. Auch: So gibt man nicht Elemente des Arrays aus: for (i = 0; i < arrSize; i++) { printf("%5i\t", intArr); Du greift nämlich nicht auf den Inhalt eines Elements des Arrays zu - da fehlt was hinterm intArr.. Außerdem macht "%5i\t" evtl. nicht ganz das gewünschte - aber da müsste man den Aufgabensteller fragen, was er gerne gehabt hätte, z.B. "% 5i " oder "%05i ".. 3. Die Aufgabenstellung fordert, dass den Funktionen "init" und "ausgabe" eine Referenz auf das zu initialisierende Array mitgegeben wird - siehe z.B. http://www.lerneprogrammieren.com/blog/praxis/call-value-und-call-reference-bei-der-parameteruebergabe und https://stackoverflow.com/questions/1106957/passing-an-array-by-reference-in-c Hth.. hehe, bei so dingen wie array groessen etc. wuerde ich ja immer am liebsten direkt eine constexpr unsigned verwenden, aber da das hier c ist direkt ein macro. e.G. //C++ int main() { constexpr unsigned arraySize = 10u; //... int myArray[arraySize] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; //Am liebsten mit std::array ersetzen :) ausgabe(myArray, arraySize); } //C #define ARRAY_SIZE 10 int main() { int myArray[ARRAY_SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; ausgabe(myArray, ARRAY_SIZE); } das schoene an dieser loesung mit makros / constexpr ist halt, dass man nur 1x die value aendern muss und man somit nicht auf unnoetig Fehler stossen kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.