"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

C++ Erstes Programm

Lukas 23.04.2005 - 14:34 7678 33
Posts

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Hy! Das ist mein erstes programm...
Ist ein rechner der nach eingabe die Fläche oder den Umfang eines Körpers berechnet...

Code: PHP
#include <iostream.h>
#include <stdio.h>

//GeoRechner von Lukas v. 0.5
// inkludiert:
//
//Kreis
//Rechtwinkeliges Dreieck
//Parallelogramm
//Deltoid
//Rhombus
//Trapez

int main()
{
	int objekt;
	
	cout<<"Willkommen zu GeoRechner von Lukas! (vers. 0.5)"<<endl;
	cout<<"-----------------------------------------------"<<endl;
	cout<<"Mit diesem Rechner könne sie geometrische Objekte berechnen."<<endl; 
	cout<<"Drücken Sie bitte eine Taste!"<<endl;
	getchar(); 

	cout<<"Welches Objekt wollen Sie berechnen ?"<<endl; 
	cout<<"Drücken Sie:"<<endl; 
	cout<<"1=Kreis"<<endl;
	cout<<"2=Rechtwinkeliges Dreieck"<<endl; 
	cout<<"3=Parallelogramm"<<endl;
	cout<<"4=Deltoid"<<endl;
	cout<<"5=Rhombus"<<endl;
	cout<<"6=Trapez"<<endl;
	cout<<"und dann Enter."<<endl;
	cin>>objekt;
	//Kreis
	if(objekt==1)
		{
		int kreis;
		cout<<"Kreis: Was wollen Sie berechnen ? 1=Umfang durch Radius 2=Flächeninhalt durch Radius."<<endl;
		cin>>kreis;
		
		if(kreis==1)
			{
			float radius;
			cout<<"Bitte Radius eingeben."<<endl;
			cin>>radius;
			cout<<"Der Umfang beträgt:"<<2*3.14*radius<<endl;
			getchar();
			}
		 
		if(kreis==2)
			{
			float radius;
			cout<<"Bitte Radius eingeben."<<endl;
			cin>>radius;
			cout<<"Der Flächeninhalt beträgt:"<<radius*radius*3.14<<endl;
			getchar();
			}	
		}
	//Rechtwinkeliges Dreieck
	else if(objekt==2)
		{
		int dreieck;
		cout<<"Rechtwinkeliges Dreieck: Was wollen Sie berechnen ? 1= Flächeninhalt 2=Umkreisradius"<<endl;
		cin>>dreieck;
		
		if(dreieck==1)
			{
			float a;
			float b;
			
			cout<<"Bitte geben sie die Variable a ein."<<endl;
			cin>>a;
			cout<<"Bitte geben sie die Variable b ein."<<endl;
			cin>>b;
			
			cout<<"Der Flächeninhalt des Dreiecks beträgt: "<<a*b/2<<endl;	
			getchar();
			}		
		

		else if(dreieck==2)
			{
			float hypo;
			
			cout<<"Bitte geben sie die Länge der Hypothenuse ein."<<endl;
			cin>>hypo;
			cout<<"Der Umkreisradius beträgt: "<<hypo/2<<endl;
			getchar();
			}
		}
	//Parallelogramm
	else if(objekt==3)
		{
		int par;
		
		cout<<"Parallelogramm: Was möchten sie berechnen ? 1=Flächeninhalt 2=Umfang"<<endl;
		cin>>par;
		
		if(par==1)
			{
			float ab;
			float h;
			
			cout<<"Bitte geben Sie die Variable a oder b ein."<<endl;
			cin>>ab;
			cout<<"Bitte geben Sie die Höhe auf a/b ein."<<endl;
			cout<<"Achtung: Sie müssen die Höhe auf a eingeben wenn sie vorher die Variable a gewählt haben, b wenn sie b gewählt haben."<<endl;

			cin>>h;
			cout<<"Der Flächeninhalt beträgt: "<<ab*h<<endl;
			getchar();
			}
		else if(par==2)
			{
			float a;
			float b;
			
			cout<<"Bitte geben Sie die Variable a ein."<<endl;
			cin>>a;
			cout<<"Bitte geben Sie die Variable b ein."<<endl;
			cin>>b;
			cout<<"Der Umfang beträgt: "<<2*a+2*b<<endl;
			getchar();
			}
	else if(objekt==4) //Deltoid
		{
		int del;
		cout<<"Deltoid: Was möchten Sie berechnen ? 1=Flächeninhalt 2=Umfang"<<endl;
		cin>>par;
		
		if(par==1)
			{
			float e;
			float f;
			
			cout<<"Bitte geben Sie die Diagonale e ein."<<endl;
			cin>>e;
			cout<<"Bitte geben Sie die Diagonale f ein."<<endl;
			cin>>f;
			cout<<"Der Flächeninhalt beträgt: "<<e*f*0.5<<endl;
			}
		else if(par==2)
			{
			float a;
			float b;
			
			cout<<"Bitte geben Sie die Länge a ein."<<endl;
			cin>>a;
			cout<<"Bitte geben Sie die Länge b ein."<<endl;
			cout<<"Der Umfang beträgt: "<<(a+b)*2<<endl;
			}
		
		}
		
	else if(objekt==5) //Rhombus
		{
		int raute;
		
		cout<<"Rhombus: Was wollen Sie berechnen ? 1=Flächeninhalt 2=Umfang."<<endl;
		cid>>raute;
		
		if(raute==1)
			{
			int was;
			cout<<"Was haben Sie gegeben ? 1= a und h 2= e und f"<<endl;
			cid>>was;
			if(was==1)
				{
				float a;
				float h;
				cout<<"Wie groß ist a ?"<<endl;
				cid>>a;
				cout<<"Wie groß ist h ?"<<endl;
				cid>>h;
				cout<<"Der Flächeninhalt beträgt: "<<a*h<<endl;				
				}
			else if(was==2)
				{
				float e;
				float f;
				cout<<"Wie groß ist e ?"<<endl;
				cid>>e;
				cout<<"Wie groß ist f ?"<<endl;
				cid>>f;
				cout<<"Der Flächeninhalt beträgt: "<<1/2*e*f<<endl;	
				}
			}
		
		else if(raute==2)
			{
			float a;
			cout<<"Wie groß ist a ?"<<endl;
			cid>>a;
			cout<<"Der Umfang beträgt: "<<4*a<<endl;
			}
		}
		
	else if(objekt==6) //Trapez
		{
		int trap;
		
		cout<<"Trapez: Was wollen Sie berechnen ? 1=Flächeninhalt 2=Umfang 3=Die Länge m"<<endl;
		cid>>trap;
		
		if(trap==1)
			{
			int trap_A;
			
			cout<<"Was haben Sie gegeben ? 1=a,c,h 2=m,h"<<endl;
			cid>>trap_A;
			
			if(trap_A==1)
				{
				float a;
				float b;
				float h;
				
				cout<<"Bitte geben Sie a ein."<<endl;	
				cid>>a;
				cout<<"Bitte geben Sie b ein."<<endl;
				cid>>b;
				cout<<"Bitte geben Sie h ein"<<endl;
				cid>>h;
				cout<<"Der Flächeninhalt beträgt: "<<1/2*(a+b)*h<<endl;
				}
			
			else if(trap_A==2)
				{
				float m;
				float h;
				
				cout<<"Bitte geben Sie m ein."<<endl;
				cid>>m;
				cout<<"Bitte geben Sie h ein."<<endl;
				cid>>h;
				cout<<"Der Flächeninhalt beträgt: "<<m*h<<endl;
				}
					
			}	
			
		else if(trap==2)
			{
			float a;
			float b;
			float c;
 			float d;
			
			cout<<"Bitte geben Sie a ein."<<endl;
			cid>>a;
			cout<<"Bitte geben Sie b ein."<<endl;
			cid>>b;
			cout<<"Bitte geben Sie c ein."<<endl;
			cid>>c;
			cout<<"Bitte geben Sie d ein."<<endl;
			cid>>d;
			cout<<"Der Umfang ist: "<<a+b+c+d<<endl;
			}
		else if(trap==3)
			{
			float a;
			float b;
			
			cout<<"Bitte geben Sie a ein."<<endl;
			cid>>a;
			cout<<"Bitte geben Sie b ein."<<endl;
			cid>>b;
			cout<<"Die Linie m beträgt: "<<(a+b)/2<<endl;
			}
		}
	}
	cout<<""<<endl;
	cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl;
	cout<<"Danke dass sie GeoRechner verwendet haben. Auf Wiedersehen!"<<endl;		
	cout<<"Fragen und Anregungen an [email]unaimer@magicgfx.com[/email]."<<endl;
}

Hab jetz mehrere Fragen:
1. Er bricht beim kompilieren ab und sagt
Zitat
geo_rechner.cpp: In function `int main()':
geo_rechner.cpp:160: Fehler: `cid' undeclared (first use this function)
geo_rechner.cpp:160: Fehler: (Each undeclared identifier is reported only once for each function it appears in.)

wenn ich das ganze if für rhombus und trapez auskommentiere kompiliert er fertig und es funkt der rest des programms.
wo liegt dass problem ?

edit: zeile 160 is dass cid>>raute; bei Rhombus.

2. Wie lasse ich ihn dass alles immer wieder in einer schleife ausführen ? also damit meine ich wenn ein objekt berechnet wurde soll er wieder fragen was man berechnen will.Schließen sollte dann mit q oder so funktionieren.

mfG
tia
Lukas
Bearbeitet von watchout am 24.04.2005, 10:55

p44ever

Ed
Avatar
Registered: Apr 2002
Location: c
Posts: 1072
du hast statt cin .. cid geschrieben

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Danke!
omg ich bin so blöd :D

compilen: geht... :)

also wie kann ich jetz aber eine wiederholung ausführen ? welcher befehl und was muss ich beachten ?
Bearbeitet von Lukas am 23.04.2005, 14:42

xdfk

pädagogisch wertvoll
Avatar
Registered: Sep 2000
Location: Graz
Posts: 6441
tret den code in die tonne und fang nochmal von vorne an. is ja grausig was du das fabrizierst!

mach lieber mal einen ordentlichen C kurs ;)
siehe: funktionales programmieren.

danach schau an was objektorientiert bedeutet
(is fuer das beispiel eigentlich nicht wirklich notwendig)

ad wiederholung: siehe kapitel schleifen
Bearbeitet von xdfk am 23.04.2005, 15:22

HeuJi

OC Addicted
Avatar
Registered: Jul 2001
Location: Vienna
Posts: 7379
Würd statt lauter ifs, switch Anweisungen machen, ist besser geeignet für soche Auswahlanweisungen.

samuel

.:: unnahbar ::.
Avatar
Registered: Jul 2000
Location: hagenberg
Posts: 2680
Zitat von HeuJi
Würd statt lauter ifs, switch Anweisungen machen, ist besser geeignet für soche Auswahlanweisungen.

ich wuerde es als erste uebung sehen und wie bereits oben erwaehnt anschauen, was es noch so fuer moeglichkeiten gibt in der programmierung und dann ueberlegen, wo du deinen code verbessern kannst. (funktionen zB)

sam

EG

thinking with portals
Avatar
Registered: May 2004
Location: 11**
Posts: 3918
holy shit...
wenn ich sowas abgeb in der schule bin ich geliefert
erstens ists n kinderbeispiel aber zu beginn fängt man nunmal so an!

aber der stil ist lustig O.o
das war dein erstes mal das du ein programm geschrieben hast oder?

muss xdfk zustimmen n kurs in funktionaler programmierung wär ned schlecht!
wir hatten 1 monat theorie in der schule bevor die uns an einen pc ließen...3 stunden / woche

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
@xdfk und EvilGohan: Was versteht ihr unter "funktionaler Programmierung", vor allem wie das im Zusammenhang mit C/C++ stehen soll?

samuel

.:: unnahbar ::.
Avatar
Registered: Jul 2000
Location: hagenberg
Posts: 2680
Zitat von that
@xdfk und EvilGohan: Was versteht ihr unter "funktionaler Programmierung", vor allem wie das im Zusammenhang mit C/C++ stehen soll?

ich nehme an sie meinen prozedurales programmieren ;)

sam

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Zitat von EvilGohan
holy shit...
wenn ich sowas abgeb in der schule bin ich geliefert
erstens ists n kinderbeispiel aber zu beginn fängt man nunmal so an!

aber der stil ist lustig O.o
das war dein erstes mal das du ein programm geschrieben hast oder?

muss xdfk zustimmen n kurs in funktionaler programmierung wär ned schlecht!
wir hatten 1 monat theorie in der schule bevor die uns an einen pc ließen...3 stunden / woche

1. erstes programm...

2. ich mach das als hobby ;)

aber ich wills wenn gscheid lernen.. hast einen guten link?
ich hab bis jetz amal ein kleines anfänger tut gemacht dass einmal die grundfunktionen erklärt. Ihr dürft euch da net viel erwarten... hab ma halt eine kleine überlegung gemacht und ganz einfach ein kleines ziel gesteckt. :o

aber ich bin für alles offen... ich hab bis jetz nur solche tuts (aus google) zur hilfe gezogen. Klick

edit:hab da noch dieses hier begonnen zu lesen aber aus zeitgründen noch net sehr weit.
Bearbeitet von Lukas am 23.04.2005, 15:57

xdfk

pädagogisch wertvoll
Avatar
Registered: Sep 2000
Location: Graz
Posts: 6441
Zitat von that
@xdfk und EvilGohan: Was versteht ihr unter "funktionaler Programmierung", vor allem wie das im Zusammenhang mit C/C++ stehen soll?

ich bin etwas SML verseucht. sorry mein natuerlich was anderes.

also unterteile den code in einzelne funktionen, gliedere das ganze in mehreren files, schau dir an wie man makefiles schreibt.
verstehe was der unterschied zwischen compilen und linken ist.

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Zitat von xdfk
ich bin etwas SML verseucht. sorry mein natuerlich was anderes.

also unterteile den code in einzelne funktionen, gliedere das ganze in mehreren files, schau dir an wie man makefiles schreibt.
verstehe was der unterschied zwischen compilen und linken ist.

gut ich werd mir mal dieses Buch durchelesen.. (zerst mal die Theorie) und dann werd ich auf deine Tipps eingehen.

moidaschl

Vollzeit-Hackler
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
i würd die syntax verwenden:

Code:
if(Bedingung) {
    hans;
}

einrückung 4 leerzeichen (bei guten editoren kannst du die tab-länge einstellen)

dann wirds auch mit der struktur was ;)

xdfk

pädagogisch wertvoll
Avatar
Registered: Sep 2000
Location: Graz
Posts: 6441
Zitat von moidaschl
i würd die syntax verwenden:

Code:
if(Bedingung) {
    hans;
}

einrückung 4 leerzeichen (bei guten editoren kannst du die tab-länge einstellen)

dann wirds auch mit der struktur was ;)

wuerd ich nicht machen (du java nutte ;))

Code:
if (Bedingung) 
{
    hans;
}

tab width auf 4 stellen bzw die tabs durch leerzeichen ersetzen lassen.

zum thema coding style gibts aber genug im inet

samuel

.:: unnahbar ::.
Avatar
Registered: Jul 2000
Location: hagenberg
Posts: 2680
also ueber die anzahl von blanks fuer die einrueckung diskutieren, halt ich fuer recht sinnlos. wichtig ist nur, dass man es sauber und einheitlich macht.

sam

ps.: ausserdem weiss doch eh jeder, dass mit 2 blanks einruecken am besten ist ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz