Jump to content
Melde dich an, um diesem Inhalt zu folgen  

Zufällige Arrays in formatierter Ausgabe

Empfohlene Beiträge

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

Diesen Beitrag teilen


Link zum Beitrag
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

 

Diesen Beitrag teilen


Link zum Beitrag
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);

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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

Diesen Beitrag teilen


Link zum Beitrag
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..

 

 

 

 

 

Diesen Beitrag teilen


Link zum Beitrag
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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Nimm an der Diskussion teil

Du kannst jetzt hier posten und Dich später registrieren. Wenn Du bereits über eine Konto verfügst, melde Dich jetzt an, um mit Deinem Konto zu posten.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

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

Melde dich an, um diesem Inhalt zu folgen  

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

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

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung