Ein alter C-Versuch *lol*

Moartel

Erfahrenes Mitglied
Ich habe eben mal meine alten Files durchgekämmt und bin da auf meinen ersten (und einzigen) Versuch in der Sprache C gestoßen. Ich habe damals ein kleines Proggie zur Primzahlenberechnung (ich weiß dass das ne Kinderei ist, aber zum C++-lernen ganz nett) geschrieben und wollte es nach C übersetzen. Dann hab ich das ganze durch so nen alten Borland C-Compiler gejagt und rausgekommen ist das hier.
Ausführung auf eigene Gefahr. Nur mal das man sieht was alles komisches rauskommen kann wenn man null Ahnung davon aht was man tut.
 

Anhänge

  • prim.zip
    4,9 KB · Aufrufe: 108

Thomas Kuse

Erfahrenes Mitglied
das is doch nich wirklich ne primzahlen berechnung..

was arbeitest du denn da im speicher rum?? er printet da irgendwelche exe-dateien aus.
 

Moartel

Erfahrenes Mitglied
Original geschrieben von .:jOki:.
das is doch nich wirklich ne primzahlen berechnung..

was arbeitest du denn da im speicher rum?? er printet da irgendwelche exe-dateien aus.
Ich weiß selber dass das ne wirklich Promzahlenberechnung ist. Sollte es aber werden.
Was ich da angestellt habe weiß ich selber nicht. Ich wüsste es aber sehr gerne. Ich weiß nur dass der Rechner ziemlich oft piept wenn man das Programm startet. Wie dieser Unfall zustande gekommen ist weiß ich selbst nicht. Ich habe den Code damals aber mehrmals hintereinander kompiliert um sicherzugehen dass das kein Zufallsprodukt ist.
 

Xeragon

Erfahrenes Mitglied
IIRC ist ein bestimmtes ASCII-Zeichen als ein Piepsen implementiert. Ich tippe mal drauf dass du irgendwo in nicht initialisiertem Speicher rumliest (z.b. überschrittene Array-Boundary).
Hast du den Source-Code vielleicht noch?
 

Moartel

Erfahrenes Mitglied
Jo, ich glaube ich hab den gefunden. Kann aber ned garantieren dass er es 100%ig ist. Ich habe den Turbo C-Compiler genommen den es bei Borland kostenlos im "Museum" gibt.
Source hänge ich einfach mal an.
 

Anhänge

  • source.zip
    311 Bytes · Aufrufe: 72

Xeragon

Erfahrenes Mitglied
Abgesehen vom Stil (kein einrücken *g*) ist der Code nicht mal so falsch. Du hast nur printf(i) anstatt printf("%8d", i) verwendet ;)
 

Moartel

Erfahrenes Mitglied
Original geschrieben von Xeragon
Abgesehen vom Stil (kein einrücken *g*) ist der Code nicht mal so falsch. Du hast nur printf(i) anstatt printf("%8d", i) verwendet ;)
Nix gegen meinen Stil, ok? :)
Ich weiß dass der mies ist. Bin dabei mir einen besseren anzugewöhnen.
 

Xeragon

Erfahrenes Mitglied
Hehe, üb mal brav weiter ;). Und weil mir so fad ist, hab ich auch gleich noch eine hoffentlich schönere und garantiert schnellere Variante geschrieben:

Code:
#define MAX_PRIME 25000

void ShowPrimes(void);

int main()
{
	ShowPrimes();
	std::cin.get();
	return 0;
}

void ShowPrimes(void)
{
	// Primzahlenerkennung mit Hilfe des Sieb des Eratosthenes
	std::bitset<MAX_PRIME+1> fPrime;
	fPrime.set();
	fPrime.set(1, false);

	for(unsigned int i=2; i < fPrime.size(); ++i)
	{
		if(fPrime[i])
		{
			for(unsigned int j=i; j < fPrime.size(); j+=i)
				fPrime.set(j, false);
			std::cout.width(8);
			std::cout << i;
		}
	}
}
 

Moartel

Erfahrenes Mitglied
Danke, bei Gelegenheit werd ich das mal ausprobieren.
Bin aber nimmer so auf C. Will eher mal richtig C++ lernen, oder mich intensiv mit Java beschäftigen, wenn da nur nicht die Schule wäre....