You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Monday, November 13th 2006, 5:43pm

Kleine Frage (wahrscheinlich nur ein kleiner Fehler)wichtig!

Ich bin noch Schüler und habe erst seit 3 Wochen angefangen mim Coden...
Morgen muss ich für den Technik unterricht ein kleines Programm abgeben.
Hier der Code

C 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
#include <iostream.h>
#include <iomanip.h>
 
 
int main ()
{
	float Stundenanzahl, Stundenlohn, Ueberstundengehalt;
 
	cout.setf(ios::fixed);
	cout.precision(2);
 
	cout <<"Gearbeite Stunden:  ";
	cin >>Stundenanzahl;
 
	cout <<"Stundenlohn:  ";
	cin >>Stundenlohn;
 
	float Angestellt, Monatslohn;
	cout <<"\nFuer Auszubildender die 0, Fuer Angestellter die 1 : "<<endl;
	cin >>Angestellt;
 
	if (Angestellt == 1)
	{	float Fahrkostenpauschale;
		Fahrkostenpauschale = 200;}
	else
	{	float Fahrkostenpauschale = 150;	}
 
	if (Stundenanzahl > 160)
	{
		float Ueberstunden = Stundenanzahl - 160;
		float Ueberstundengehalt = Ueberstunden * Stundenlohn / 2;
		float Monatslohn = Stundenlohn * 160 + Ueberstundengehalt;
	}
	else
	{
		float Monatslohn = Stundenlohn * Stundenanzahl;
		float Ueberstundengehalt = 0;
	}
	float Endgeld = Monatslohn + Fahrkostenpauschale;
	cout <<"Monatslohn"<<setw(24)<<"Ueberstundengehalt"<<setw(24)<<"Fahrkostenpauschale"<<endl;
	cout <<Monatslohn<<setw(24)<<Ueberstundengehalt<<setw(24)<<Fahrkostenpauschale<<endl;
	cout <<"**********************************************************"<<endl;
	cout <<"Der Monatsverdiest beträgt "<<Endgeld<<" Euro";
	cout <<"\n\n";
	return 0;}



Wenn ich compilen will kommt der error:
H:\non musik\TW\msvcpp\Arbeitslohn\main.cpp(47) : error C2065: 'Fahrkostenpauschale' : nichtdeklarierter Bezeichner

Also ein Problem mit der Variable, ich hab die halt nur in der If schleife definiert, aber anders gehts nicht.

Das Program soll den Monatsgehalt erechnen, aus der anzhal der Arbeitsstunden und dem Stundenlohn. Außerden sollen die Überstunden (ab 160 Stunden sinds Überstunden) mal der hälfte des Stundenlohns zum Monatsgehalt dazugerechnet werden. Außerdem sollen wir noch die Fahrkostenpauschale einbauen, für Azubis 160€ für Angestellte 200€.

wäre nett wenn mir jemand schnell sagen kann was genau ich falsch gemacht habe

edit:
benutzte MS Visual C++ 6.0 Pro

mfg Micha

2

Monday, November 13th 2006, 5:54pm

füge die Fahrkostenpauschale doch einfach zu Stundenanzahl, Stundenlohn und Ueberstundengehalt hinzu.

variablen deklariert man immer am anfang (beim guten, alten ANSI C war das noch pflicht)

3

Monday, November 13th 2006, 5:55pm

warum sollte das nicht anders gehen? du musst die Variable oben einem Datentyp zuweisen...

4

Monday, November 13th 2006, 7:58pm

ok habs irgendwie hinbekommen...
habe alle Variablen am Anfang definiert.
Dann habe ich das float vor den andren Definitionen weggenommen (wusste garnet das das geht)
und dann gings ^^
*freu*

damit hat sich die Sache erledigt.

thx!

5

Monday, November 13th 2006, 8:11pm

ohne mir deinen code im detail anzuschauen oder gar den compiler anzuwerfen, hab ich einfach mal alle floats nach oben gezogen

C 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
int main ()
{
        float Stundenanzahl, Stundenlohn, Ueberstundengehalt, Fahrkostenpauschale, Ueberstunden, Ueberstundengehalt, Monatslohn, Angestellt, Endgeld;
 
        cout.setf(ios::fixed);
        cout.precision(2);
 
        cout <<"Gearbeite Stunden:  ";
        cin >> Stundenanzahl;
 
        cout <<"Stundenlohn:  ";
        cin >> Stundenlohn;
 
        cout <<"\nFuer Auszubildender die 0, Fuer Angestellter die 1 : "<<endl;
        cin >> Angestellt;
 
        if (Angestellt == 1) {
                Fahrkostenpauschale = 200;
        } else {
                Fahrkostenpauschale = 150;       
        }
 
        if (Stundenanzahl > 160) {
                Ueberstunden = Stundenanzahl - 160;
                Ueberstundengehalt = Ueberstunden * Stundenlohn / 2;
                Monatslohn = Stundenlohn * 160 + Ueberstundengehalt;
        } else {
                Monatslohn = Stundenlohn * Stundenanzahl;
                Ueberstundengehalt = 0;
        }
 
        Endgeld = Monatslohn + Fahrkostenpauschale;
        cout <<"Monatslohn"<<setw(24)<<"Ueberstundengehalt"<<setw(24)<<"Fahrkostenpauschale"<<endl;
        cout << Monatslohn <<setw(24)<< Ueberstundengehalt<< setw(24)<< Fahrkostenpauschale<< endl;
        cout <<"**********************************************************"<<endl;
        cout <<"Der Monatsverdiest beträgt "<<Endgeld<<" Euro";
        cout <<"\n\n";
        return 0;
}

6

Monday, November 13th 2006, 8:16pm

Hi,
für Angestellt solltest du den Datentyp int anstelle von float nehmen.
Vergleiche mit Gleitkommazahlen sind,aufgrund ihrer internen Darstellung, problematisch.

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
if (Stundenanzahl > 160)
        {
                float Ueberstunden = Stundenanzahl - 160;
                float Ueberstundengehalt = Ueberstunden * Stundenlohn / 2;
                float Monatslohn = Stundenlohn * 160 + Ueberstundengehalt;
        }
        else
        {
                float Monatslohn = Stundenlohn * Stundenanzahl;
                float Ueberstundengehalt = 0;
        }

Hier legst du innerhalb der Blöcke lokale Variablen Überstundengehalt und Monatslohn an.Diese überdecken die Sichtbarkeit der Variablen die du weiter oben deklariert hast.Beim Verlassen des Blocks sind die lokalen Variablen mitsamt deinen Berechnungsergebnissen Geschichte. Nimm die floats davor weg damit die Werte deiner Berechnung den richtigen Variablen zugewiesen werden.

Gruß void

7

Monday, November 13th 2006, 8:24pm

@d0nUt:
Ich setze auch meist die Variablendeklarationen an den Anfang von Funktionen.
Allerdings nur die,die ich auch wirklich in dem kompletten Scope brauche.
Alles was nur lokal benötigt wird,wird auch lokal deklariert.
Im aktuellen Fall z.B. Ueberstunden.
Es gibt keinen Grund warum die Lebensdauer von Ueberstunden sich über die ganze main ziehen sollte.Ist ja nur nen lokal benötigtes Zwischenergebnis.
Streng genommen bräuchte man Überstunden natürlich garnicht ist aber für die Lesbarkeit imho vorteilhaft.

Gruß void

8

Monday, November 13th 2006, 9:09pm

omg ...
mein system ist einfahc mal so abgestürtzt.. egal jetzt hab ichs fertig:

C 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
//**************************************************
//************** Programm: main.cpp ****************
//************ Aufgabe: Preisberechnung ************
//****** Autor, Datum: Micha, Welter 13.11.06 ******
//**************************************************
 
 
#include <iostream.h>
#include <iomanip.h>
 
 
int main ()
{
	float Stundenanzahl, Stundenlohn, Endgeld, Ueberstundenlohn, Ueberstunden, Ueberstundengehalt, Fahrkostenpauschale, Monatslohn; 
	int Angestellt;				//Definition aller Variablen
 
	cout.setf(ios::fixed);
	cout.precision(2);			//2 Nachkommastellen anzeigen
 
	cout <<"Gearbeite Stunden:  ";
	cin >>Stundenanzahl;		//Eingabe der gearbeiteten Stunden
 
	cout <<"Stundenlohn:  ";
	cin >>Stundenlohn;			//Eingabe des Stundenlohns
 
	cout <<"\nF\201r Auszubildender die 0, F\201r Angestellter die 1 : "<<endl;
	cin >>Angestellt;			//Abfrage, ob Angestellter oder Azubi
 
	if (Angestellt == 1)
	{	Fahrkostenpauschale = 200;	}	
	else
	{		
			if (Angestellt == 0)
			{	Fahrkostenpauschale = 150;	}
			else
			{	cout <<"Falsche Eingabe, starten Sie das Programm erneut.";	
			return 0;	}
	}										//Deklaration des Fahrpreises
 
 
	if (Stundenanzahl > 160)
	{	Ueberstunden = Stundenanzahl - 160;
		Ueberstundenlohn = Stundenlohn / 2;
		Ueberstundengehalt = Ueberstunden * Ueberstundenlohn;
		Monatslohn = Stundenlohn * 160 + Ueberstundengehalt;	}	//Berechnung des Monatslohns inklusive des Überstundengehalts
	else
	{	Monatslohn = Stundenlohn * Stundenanzahl;
		Ueberstundengehalt = 0;
		Ueberstundenlohn = 0; }										//Berechnung des Monatslohns
 
	Endgeld = Monatslohn + Fahrkostenpauschale;						//Berechnung des Endgelds
 
	cout <<"\n\nMonatslohn:"<<setw(28)<<Monatslohn<<" Euro"<<endl;
	cout <<"Davon \232berstundengehalt:"<<setw(15)<<Ueberstundengehalt<<" Euro"<<endl;
	cout <<"Fahrkostenpauschale:"<<setw(19)<<Fahrkostenpauschale<<" Euro"<<endl;
	cout <<"********************************************"<<endl;
	cout <<"Das Endgehalt betr\204gt"<<setw(18)<<Endgeld<<" Euro";	//Ausgabe der Beträge
	cout <<"\n\n";
	return 0;}



vielen Dank für Eure Hilfe

MFG Micha

Similar threads

Social bookmarks