Register for your free account! | Forgot your password?

Go Back   elitepvpers › Coders Den › C/C++
You last visited: Today at 01:23

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C++ Hausaufgaben

Discussion on C++ Hausaufgaben within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2008
Posts: 73
Received Thanks: 21
C++ Hausaufgaben

Halli Hallo ihr lieben,

da mir zurzeit etwas langweilig ist wollte ich gerne mal ein bisschen C++ lernen. Hatte mich schon mal an VB herangewagt. Dort fiel mir das Programmieren aber nicht so leicht. Liegt warscheinlich daran das ich vor Jahren mal länger mit PHP gearbeitet habe und dadurch einfach Syntax Probleme hatte.
Naja was solls die C++ Syntax gefällt mir da doch viel eher.

So nun zum eigentlichen Thema. Da ich stupides Bücherlesen bzw daraus zu lernen für absolut schwachsinnig halte, wollte ich gerne das ihr mir ein paar Hausaufgaben stellt.

Was ihr mir für Hausaufgaben stellt ist mir relativ egal. Sie sollten allerdings anfängerfreundlich sein.

Gleichzeitig wollte ich noch eure Meinung zu meinem ersten Programm wissen.

Dieses rechnet die x Werte einer Quadratischen Funktion aus.

Code:
#include <iostream.h>
#include <conio.h>
#include <math.h>

int beenden = 1;

int main(void){
while(beenden >= 1){    
    float p,q,x1,x2;
                 
    cout << "Wert p: ";
     cin >> p;
    cout << "Wert q: ";
     cin >> q;
 
    x1 = -(p/2)+sqrt(((p/2)*(p/2))-q);
    x2 = -(p/2)-sqrt(((p/2)*(p/2))-q);
    cout << "--------------------------------------" << endl    
         << "Wert x1: " << x1 << endl
         << "Wert x2: " << x2 << endl
         << "--------------------------------------" << endl
         << "F\x81r Beenden 0. F\x81r Neue Rechnung 1." << endl;
    cout << "Auswahl: ";
     cin >> beenden;
    system("cls");
}
}
THAFELIX is offline  
Old   #2
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Hey,
da fang ich doch gleich mal oben an!

Code:
#include <iostream.h> //C++ Standardheader bindet man ohne die Endung .h ein
#include <conio.h>  //Nicht Teil des Standards + das brauchst du hier gar nicht
#include <math.h> //Brauchst du nicht, bindet iostream intern bereits ein und das ist ein alter C-Header. In C++ solltest du cmath nutzen
Code:
int beenden = 1;
Warum ist diese Variable global? Das ist unnötig und unschön.
Abgesehen davon halte ich int nicht gerade für den richtigen Datentypen, um den User wählen zu lassen, ob das Programm weiterlaufen soll oder nicht.

Code:
int main(void){
while(beenden >= 1){
Einrücken ist wichtig, vorallem wenn du { ans Ende der Zeile packst!

Code:
cout << "Wert p: ";
All deine Ein- und Ausgaben werden nicht funktionieren, da weder cout, noch cin bekannt sind! Was du vor hattest ist std::cout, bzw. das Zeug über using bekannt zu machen.

Code:
  cin >> p;
cin ist nicht Idiotensicher! Wenn der User hier z.B. a123b-1 eingibt, dann ist dein Eingabestream nicht mehr so, wie du ihn zum arbeiten nutzt und das Programm landet in einer Endlosschleife.
Klüger wäre es, die gesamte eingegebene Zeile zu lesen und aus dieser dann die Daten zu extrahieren.

Code:
 x1 = -(p/2)+sqrt(((p/2)*(p/2))-q);
Auch wenn es sich hierbei lediglich um die p-q-Formel handelt, dieser Ausdruck ist viel zu komplex für eine Zeile! Du solltest ihn aufbrechen und aufteilen, das macht ihn und zukünftige Algorithmen lesbarer. Außerdem solltest du dir sauberes spaceing angewöhnen. Nach, bzw. vor jedem Operatoren kommt ein Leerzeichen, das hilft dem Auge ungemein!

Abgesehen davon würde ich das Ganze noch in eine eigene Funktion packen, somit kannst du das später nochmal benutzen. Zusätzlich wären ein paar Abfragen, ob die eingegebenen Werte überhaupt gültig sind, nicht falsch.

Ich würde es also spontan so machen:
Code:
#include <iostream>
#include <string>
#include <sstream>

//was den Namen der Funktion betrifft bin ich mir noch 
//nicht so sicher. Spontan fällt mir aber nichts besseres ein.
void pq(float p, float q, float& x1, float& x2)
{
	auto pHalf = p/2;
	auto root = sqrt(pHalf * pHalf - q);
	x1 = -pHalf + root;
	x2 = -pHalf - root;
}


int main(void)
{
	std::string userInput;
	const std::string yes = "ja";
	do
	{    
		float p = 0, q = 0, x1 = 0, x2 = 0;
                 
		std::cout << "Bitte geben sie die Werte in dem Format 'p <LEER> q' ein: ";

		std::getline(std::cin, userInput);
		
		//Hier könnte man vorher noch prüfen, ob das Format überhaupt richtig ist
		std::stringstream sstream;
		sstream << userInput;
		sstream >> p;
		sstream >> q;

		pq(p, q, x1, x2);

		std::cout << "--------------------------------------" << std::endl    
			 << "Wert x1: " << x1 << std::endl
			 << "Wert x2: " << x2 << std::endl
			 << "--------------------------------------" << std::endl

			 << "Nochmal (ja/nein)?" << std::endl;

		std::getline(std::cin, userInput);
		system("cls");
	} while(userInput == yes);
}

Falls du das ganze jetzt noch objektorientiert angehen willst:
Code:
#include <iostream>
#include <string>
#include <sstream>

struct MonicPolynom
{
	float p;
	float q;

	float x1;
	float x2;

	void solve()
	{
		auto pHalf = p/2;
		auto root = sqrt(pHalf * pHalf - q);
		x1 = -pHalf + root;
		x2 = -pHalf - root;
	}
};

std::istream& operator >>(std::istream& in, MonicPolynom& monicPoly)
{
	std::string userInput;
	std::getline(in, userInput);
	
	std::stringstream ss;
	ss << userInput;
	ss >> monicPoly.p;
	ss >> monicPoly.q;

	return in;
}

int main(void)
{
	std::string userInput;
	const std::string yes = "ja";

	do
	{
		MonicPolynom polynom;
                 
		std::cout << "Bitte geben sie die Werte in dem Format 'p <LEER> q' ein: ";
		std::cin >> polynom;

		polynom.solve();

		std::cout << "--------------------------------------" << std::endl    
			 << "Wert x1: " << polynom.x1 << std::endl
			 << "Wert x2: " << polynom.x2 << std::endl
			 << "--------------------------------------" << std::endl

			 << "Nochmal (ja/nein)?" << std::endl;

		std::getline(std::cin, userInput);
		system("cls");
	} while(std::cin.good());
}
Somit lässt sich das ganze dann auch noch relativ einfach erweitern. Als einfache Übung dazu kannst du den User die gesamte Funktion eingeben lassen!

Code:
Eingabe der Funktion f(x)=ax²+bx+c (a b c): 2 4 -16
X1: 2
X2: -4
Danach kannst du dann gleich einen ganzen Taschenrechner programmieren. Das ist eine gute Anfängerübung!
Nightblizard is offline  
Old   #3
 
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
Was ist wenn (p/2)*(p/2) < q ist? Müsste noch abgefangen werden, wenn ich mich nicht irre.
qkuh is offline  
Reply


Similar Threads Similar Threads
Hilfe bei Hausaufgaben :D
10/09/2011 - Main - 5 Replies
Sorry leute das ich störe, aber wer kann mir helfen. ich habe dieses gedicht ausgewählt und muss jetz erklären wieso es aus der romantik kommt. kann mir da jemand helfen? einfach mal hier reinschreiben paar fakten oder so. ps brauche 1/3 a4 seite also wer hilft bekommt natürlich ein thanks für die mühe :D hier ist der link zum gedicht
{VK} Hausaufgaben-Dienst
05/03/2011 - elite*gold Trading - 16 Replies
Hey erstmal. Ich hab nun ein paar Tage schulfrei, und wollte mir ein bisschen Elite*gold verdienen. Hört sich lächerlich an, dass ich die Hausaufgaben mache, aber naja.. Ich mache nur von klasse 6-10, und kein Mathe, weil das nur meine Kopf f*ckt PM für MSN =).
[B] Hausaufgaben Dienst
11/28/2010 - elite*gold Trading - 11 Replies
Moin Com ! Da ich mich einfach nur absolut langweile und ich weiß, dass einige Member hier im Forum noch zu Schule gehen, habe ich gedacht, ich biete mal an Hausaufgaben zu erledigen^^ "Hää? Warum?" - Ich habe langeweile, seiddem ich letztes Jahr mein Abi fertig gemacht habe "Welche machstn du?" - Mathe und Englisch
Hausaufgaben :D
03/01/2010 - Main - 8 Replies
So ich muss Berufe aufschreiben zu diesen Themen: Mit Planzen arbeiten oder Tieren umgehen: Mit Menshen zu tun haben: Gestalterisch arbeiten: Im Freien arbeiten: Körperlich tätig sein: Handerklich arbeiten: Verkaufen,kaufen: Produktionsanlagen überwachen:



All times are GMT +2. The time now is 01:23.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.