Der Gästezugriff auf dieses Forum wurde limitiert. Insgesamt gibt es 8 Beiträge in diesem Thema.
Um sie alle lesen zu können müssen Sie sich vorher registrieren.

1

Samstag, 24. Juli 2004, 19:02

kann hier irgendwer was mit c++ anfangen

Hi leutz,

versteht einer was von der materie? :winker:

Ich wollte nen kleines rechenprogramm machen, komm aber nicht so richtig weiter.

Wenn einer lust hat mir zu helfen, poste ich meine fragen hier rein. :rundherum: :wiejetzt:

mm2

DragonX

Foren Kaiser

Beiträge: 936

Registrierungsdatum: 3. September 2002

Wohnort: Schwanstetten

Beruf: Fachinformatiker

  • Nachricht senden

2

Samstag, 24. Juli 2004, 19:06

hier wird dir sicher geholfen, also poste mal dein prog bzw. problem
ich selber kann bisschen c/c++ (naja, grundlagen mehr oder weniger :D)
Pinguine können nicht fliegen,
dafür stürzen sie auch nicht ab

3

Samstag, 24. Juli 2004, 19:16

Hi,

dann wollen wir mal ;)

Hab das auch schon in nem c++ forum gepostet aber die konnten/wollten mir nich weiterhelfen :kopfstoss: Is wohl zu simpel und stendig diese fragen von den noobs würden mich auch irgendwann nerven ;)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// 12345.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <iostream.h>
#include <fstream.h>


int main(int argc, char* argv[])
{
	unsigned long long int l_endzahl;
	unsigned long long int l_checkzahl = 2;
	unsigned long long int l_i;

	cout << "Bitte letzte zu testende Zahl eingeben: ";
	cin >> l_endzahl;


	//datei öffnen
	ofstream ausgabe_datei("trash.txt", ios::app); //steht hier statt in der schleifen, damit der befehl nicht immer wiederholtwerden muss

	while(l_checkzahl < l_endzahl) //Anweisungen so lange ausführen bis l_checkzahl grösser als l_endzahl
	{
		//
		//Hier muss überprüft werden ob l_checkzahl schon in der trash.txt steht
		//Ich denke mal eine IF-Anweisung kommt dafür in frage, aber ich weiß nicht wie ich das machen soll
		//(öffne trash.txt, vergleiche zahlen die schon drinstehen mit l_checkzahl.
		//Wenn sie schon drinsteht mach mit der nächsten zahl weiter wenn nicht schreibe checkzahl
		//in ok.txt und teste die nächste zahl)
		//
		//
		//
	l_i = l_checkzahl*2;

	if (! ausgabe_datei) 
  { 
    cout <<"trash.txt kann zum schreiben nicht geöffnet werden";
  } 

	//daten reinschreiben
	ausgabe_datei << l_i << endl;  	//l_i wieder in die trash.txt schreiben
	//cout << l_i <<"\n";  //ausgabe am bildschirm, um zu kontrollieren ob richtig gerechnet wurde

	l_i = l_checkzahl*3;
	ausgabe_datei << l_i << endl;  	//l_i wieder in die trash.txt schreiben
	//cout << l_i <<"\n"; //kontrollausgabe

	l_i = l_checkzahl*4;
	ausgabe_datei << l_i << endl;  	//l_i wieder in die trash.txt schreiben
	//cout << l_i <<"\n"; //kontrollausgabe

	l_i = l_checkzahl*5;
	ausgabe_datei << l_i << endl;  	//l_i wieder in die trash.txt schreiben
	//cout << l_i <<"\n"; //kontrollausgabe

	//l_checkzahl um eins erhöhen
	l_checkzahl++;
	} // ende while-schleife

	return 0;
}


Die nächste aufgabe die beim erstellen des programms ansteht hab ich hinter die while schleife geschrieben (kommentar)

Das programm soll follgendes können:
(ich kopiers der einfachheit halber aus dem c++ forum, man möge mir vergeben :raucher: )

----------------
checkzahl = 1

jetzt wird gerechnet:
"checkzahl" x 2
"checkzahl" x 3
"checkzahl" x 4
"checkzahl" x 5

Die ergebnisse sollen in die datei "trash.txt" geschrieben werden.

Als nächstes soll folgendes passieren:
checkzahl++ (ist ja noch = 1 soll um eins erhöht werden)

Jetzt soll überprüft ob die neue "checkzahl" (2) schon in der datei "trash.txt" steht.

Wenn sie drinne steht soll das programm die nächste ziffer überprüfen bis die "checkzahl" so groß ist das sie nicht mehr in der "trash.txt" steht (in diesem beispiel wäre das die zahl 6, da 5 schon drinne steht.

Die 6 soll in die datei "ok.txt" geschrieben werden und
es soll weiter gerechnet werden:
("checkzahl" ist in diesem falle 6)
"checkzahl" x 2
"checkzahl" x 3
"checkzahl" x 4
"checkzahl" x 5

Die ergebnisse sollen nun wieder in die datei "trash.txt" geschrieben werden.

Ab hier wird wieder der punkt "checkzahl++" ausgeführt und es wiederholen sich die schritte.

Was noch ganz nett wär, wär eine stop funktion bei einer bestimmten zahl, damit das programm nicht ewig läuft
Z. b. so:
Am anfang gibt man bei dem befehl "cin" die stopzahl ein. z.b. 100, wenn die checkzahl jetzt hundert ist wird der programablauf gestopt und man kann das programm beenden.

Für dieses beispiel habe ich kleine zahlen genommen, wenn die sache funktioniert möchte ich es aber auch mal mit grossen zahlen versuchen (10000000 x 1000000), da gibs doch sicher einen spezielen datentyp für oder? evtl. "long" oder so?

#c/p/p/oo-awi+86

Foren Kaiser

Beiträge: 1 095

Registrierungsdatum: 31. Juli 2003

Wohnort: Achim bei Bremen

Beruf: Zivi

  • Nachricht senden

4

Samstag, 24. Juli 2004, 23:45

long long ist sehr groß, nämlich 64 Bit breit, damit dürften Platzprobleme erstmal nicht vorkommen. long ist hingegen nur 32 Bit breit.
Bei einer sehr großen Endzahl entstehen dann natürlich sehr viele Dateizugriffe mit der ein und derselben Aufgabe. Deshalb sollte man am Anfang ein Vektor mit den alten Werten aus der Datei füllen und diesen dann immer nur den durchlaufen und nicht erneut die Datei. Jedenfalls muss die Datei dann einmalig zeilenweise ausgelesen werden, die einzelnen Zeilen müssen dann in eine Dezimal-Variable umgewandelt werden und dann an den Vektor angehängt werden. Da lässt sich noch einiges an der Laufzeit rumpfeilen, aber das wär zuviel für den Anfang.

Bevor ich hier anfange, die ganze Anwendung zu schreiben, wäre es schön, wenn du sagst, wo dein Problem ist: Bei dem Konzept oder nur der Code selber, wie man z.B. eine Datei ausliest und was genau davon.

5

Sonntag, 25. Juli 2004, 00:13

Ja hast recht. Bin noch am tüfteln, bin aber auch schon ne ecke weiter. Wenns ne spezielle frage gibt meld ich mich hier. :daumen:

Der Gästezugriff auf dieses Forum wurde limitiert. Insgesamt gibt es 8 Beiträge in diesem Thema.
Um sie alle lesen zu können müssen Sie sich vorher registrieren.