AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

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
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
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#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
5.219 Beiträge
 
Delphi 10.2 Tokyo 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
5.219 Beiträge
 
Delphi 10.2 Tokyo 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 Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

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 Online, Zydis GitHub)

Geändert von Zacherl (14. Nov 2017 um 17:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz