AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Mein Array will sich nicht befüllen lassen

Ein Thema von Zyvex · begonnen am 14. Nov 2017 · letzter Beitrag vom 14. Nov 2017
Antwort Antwort
Seite 1 von 2  1 2   
Zyvex

Registriert seit: 14. Nov 2017
5 Beiträge
 
#1

Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 16:18
Hallo erstmal.

Ich habe eine Aufgabe zu erledigen, in der es heisst ich solle Primzahlen bis zu einer gewissen obergrenze berechnen und die Anzahl der errechneten Primzahlen ausgeben. Alles kein problem und läuft auch. Allerdings ist die Aufgabenstellung, dass ich alle errechneten Primzahlen in ein entsprechendes array einspeicher und sie darüber ausgebe, wie auch die Menge der errechneten Zahlen über die Größe des arrays.

Funktioniert:
Code:
    //oS steht für obere Schranke und wird weiter oben im code von der Tastatur eingelesen
    int count = 0;
    int i;
    for(i=2; i<=oS; i++){ 
    int teiler = 2;
        while(i % teiler != 0){ 
            teiler++;
        }
        if(teiler == i){ 
            count++;
            printf("%d\n", i);
        }
    }

    printf("Es wurden insgesamt %d Primzahlen berechnet", count);
return 0;
soviel zum Primzahlenrechner.
Hier ist mein verzweifelter Versuch das alles über ein array auszugeben:

Code:
    //oS steht für obere Schranke und wird weiter oben im code von der Tastatur eingelesen
    int Primzahlen[oS];
    int count = 0;
    int i;
    for(i=2; i<=oS; i++){ 
    int teiler = 2;
        while(i % teiler != 0){ 
            teiler++;
        }
        if(teiler == i){ 
            Primzahlen[count] = i;
            printf("%d\n", Primzahlen[count]);
            count++;
        }
    }

    printf("Es wurden insgesamt %d Primzahlen berechnet", sizeof(Primzahlen[count]/sizeof(int));
return 0;
Die Idee war, die jeweils errechnete Zahl in der stelle "count" im array einzuspeichern und nachdem jegliche Arbeit in einem loop mit diesem array vollbracht ist, count um 1 zu erhöhen. Das Programm gibt zwar alle Primzahlen wie gewünscht aus, für die Größe des Arrays jedoch IMMER als 1... und ich weiß nicht wieso.

Würde mich über viele hilfreiche tipps freuen
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
1.334 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 16:58
Wie ist es denn so:

(sizeof(Primzahlen)/sizeof(*Primzahlen))
  Mit Zitat antworten Zitat
Zyvex

Registriert seit: 14. Nov 2017
5 Beiträge
 
#3

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 17:05
Wie ist es denn so:

(sizeof(Primzahlen)/sizeof(*Primzahlen))
da das array auf eine maximalgröße von der oberen Schranke definiert ist, gibt das programm mit dieser Schreibweise die vom nutzer eingegebene Schranke aus. wenn ich das array wiederrum auf die größe von count definier, hat es nie mehr als 8 stellen. der algorythmus soll primzahlen bis zu einer obergrenze von über 100.000 berechnen und ausgeben können, also kann das nicht die lösung sein
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.590 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 17:05
Du machst es dir unnötig schwer:
Code:
printf("Es wurden insgesamt %d Primzahlen berechnet", count);
Und ich lese die Aufgabenstellung NICHt so dass die Anzahl der generierten Zahlen am Array berechnet werden sollen.
Was wahrscheinlich gemeint ist, ist dass du erst die Primzahlen generierst und in einem Array speicherst.

Im 2. Schritt durchläufst du das Array bis count und gibst die Zahlen aus.
So lese ich das zumindest.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (14. Nov 2017 um 17:09 Uhr)
  Mit Zitat antworten Zitat
Zyvex

Registriert seit: 14. Nov 2017
5 Beiträge
 
#5

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 17:08
Du machst es dir unnötig schwer:
Code:
printf("Es wurden insgesamt %d Primzahlen berechnet", count);
Edit: Ignorieren! Bin den Post grad nochmal am lesen.
genau das ist das problem... ich wär ja schon längst fertig, wenn die aufgabenstellung es nicht über ein array verlangen würde

edit: meinst du mit einer extra for-Schleife zur Ausgabe des arrays bis count? so:

Code:
    int j;
    for(j=0; j<count; j++){
        printf("%d\n", Primzahlen[j]);
    }

Geändert von Zyvex (14. Nov 2017 um 17:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.590 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 17:16
edit: meinst du mit einer extra for-Schleife zur Ausgabe des arrays bis count? so:

Code:
    int j;
    for(j=0; j<count; j++){
        printf("%d\n", Primzahlen[j]);
    }
So verstehe ICH die Aufgabenstellung.
Ich bin mir ziemlich sicher, dass man nicht die Anzahl der wirklichen Einträge eines Arrays berechnen kann.
Das Mitzählen mit der count-Variable ist das einzig wirklich sinnvolle.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Zyvex

Registriert seit: 14. Nov 2017
5 Beiträge
 
#7

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 17:20
edit: meinst du mit einer extra for-Schleife zur Ausgabe des arrays bis count? so:

Code:
    int j;
    for(j=0; j<count; j++){
        printf("%d\n", Primzahlen[j]);
    }
So verstehe ICH die Aufgabenstellung.
Ich bin mir ziemlich sicher, dass man nicht die Anzahl der wirklichen Einträge eines Arrays berechnen kann.
Das Mitzählen mit der count-Variable ist das einzig wirklich sinnvolle.
also um fair zu sein, die aufgabenstellungen meiner uni waren bisher alle unnötig kompliziert. fast jeder code wurde beinahe doppelt so lang wie er sein musste aus schulungszwecken. ich werde deine variante im laufe der woche mal einem tutor vorlegen und gucken wie er sich dazu rechtfertigt
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
4.590 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 17:20
Kannst du vielleicht mal die original Aufgabenstellung hier posten?

PS: Du hast dich ja scheinbar hier für dieses Problem angemeldet.
Wie kamst du darauf dich in einem Delphi Forum anzumelden um eine C-Frage zu stellen?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Zyvex

Registriert seit: 14. Nov 2017
5 Beiträge
 
#9

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 17:28
Kannst du vielleicht mal die original Aufgabenstellung hier posten?

PS: Du hast dich ja scheinbar hier für dieses Problem angemeldet.
Wie kamst du darauf dich in einem Delphi Forum anzumelden um eine C-Frage zu stellen?
verzweiflung. und es war das erste forum das ich gefunden habe Hier die Aufgabenstellung:

Aufgabe 2.3: Berechnung verschiedener Primzahlen
Abgabe am 13.12.2017 um 14 Uhr

Erstellen Sie ein Programm, dass alle Primzahlen bis zur einer vorgegebenen Schranke
berechnet, speichert und ausgibt. Gehen Sie dafür wie folgt vor:
•Einlesen einer Zahl die als obere Schranke dienen soll.
•Berechnung aller Primzahlen die kleiner gleich der oberen Schranke sind.
•Abspeichern der gefundenen Primzahlen in dem int-Array primzahlen[...]


Sind alle Primzahlen abgespeichert:
◦Ausgabe aller Primzahlen und deren Anzahl.
◦Ausgabe der benötigten Zeit in Millisekunden zur Berechnung aller Primzahlen.

Die Zeit in Millisekunden habe ich bereits im code integriert, aber erstmal für dieses problem nicht mit reinkopiert. Mich stört wirklich nur dass ich das ganze mit nem array ausgeben muss.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.254 Beiträge
 
Delphi 10.1 Berlin Starter
 
#10

AW: Mein Array will sich nicht befüllen lassen

  Alt 14. Nov 2017, 17:33
es war das erste forum das ich gefunden habe
Und direkt das Beste erwischt

Code:
int Primzahlen[oS]
Diese Zeile stört mich schon direkt. Das ist maximal seit C++ 2017 im Standard möglich. Ich denke mal hier sollst du eher ein dynamisches Array verwenden, statt ein Statisches.
Edit:
Nvm, geht doch. Nur MSVC kann es scheinbar bisher nicht.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine (Zydis)

Geändert von Zacherl (14. Nov 2017 um 17:40 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf