Zum Inhalt springen

Zufällige Arrays in formatierter Ausgabe


Gast MarcoPasta

Empfohlene Beiträge

Gast MarcoPasta

Bildschirmfoto-2019-04-23-um-16-02-04.pn

 

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 von MarcoPasta
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 47 Minuten schrieb MarcoPasta:

Bildschirmfoto-2019-04-23-um-16-02-04.pn

 

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

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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);

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast MarcoPasta

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. :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

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..

 

 

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...