# C+/C++/C#



## erdal93 (26. April 2013)

Hallo Leute,

muss mir für die Schule einen Code erarbeiten mit folgenden Kriterien:

Eingabe einer Zahln
Berechnen von 2 hoch n
Ausgabe des Ergebnisses an den Benutzer
Frage an Benutzer, ob eine erneute Berechnung gewünscht ist
Programm beenden oder neuen Ablauf starten

Leider habe ich nicht mit C oder ähnliches gearbeitet und versteh auch nichts, was im Internet steht. Wär echt cool, falls jemand sich schnell die Mühe macht, und den Code aufschreibt 

Danke!


----------



## DarkMo (26. April 2013)

ich denke mal, du sollst das machen, um was zu lernen  also ein wenig selbstaufopferungsbereitschaft wäre schon schön  so schwer ist das eigentlich nicht. die grundlagen für c (c+ gibts nich ^^) usw reichen da völlig aus (schleifen, variablen/typen, text ein/ausgabe).


----------



## Ahab (26. April 2013)

Sehe ich genauso. Aber was soll es denn jetzt sein? C++, C oder C#? Das sind drei verschiedene Sprachen die sich teils sehr stark unterscheiden.


----------



## Leandros (26. April 2013)

Code könnte ich dir easy schreiben, aber du sollst ja was dabei lernen und nicht uns Arbeiten lassen. 

Falls es sich um C++ handelt würde ich dir zum Anfang das Tutorial auf http://cplusplus.com empfehlen. 



PS: Was ist denn C+?


----------



## erdal93 (26. April 2013)

Ja, es ist nur nicht relevant. Jeder hat ein Thema bekommen mit mehreren Leitfragen. Ich habe schon alle beantwortet, weiß aber nicht wie ich den Code schreiben soll. Es kommt weder in der Klassenarbeit, noch in der Abschlussprüfung vor deswegen mache ich mir nicht so ein Kopf drum  .. Und wie gesagt ich hab damit auch noch nie gearbeitet und versteh deshalb auch die ganzen Informationen nicht wirklich..

PS. Sry meinte natürlich C nicht C+  .. Welche es denn sein soll ist egal, hat mein Lehrer gesagt.


----------



## Crysis nerd (26. April 2013)

erdal93 schrieb:


> Ja, es ist nur nicht relevant. Jeder hat ein Thema bekommen mit mehreren Leitfragen. Ich habe schon alle beantwortet, weiß aber nicht wie ich den Code schreiben soll. Es kommt weder in der Klassenarbeit, noch in der Abschlussprüfung vor deswegen mache ich mir nicht so ein Kopf drum  .. Und wie gesagt ich hab damit auch noch nie gearbeitet und versteh deshalb auch die ganzen Informationen nicht wirklich..


 
Aber selbst wenn du das wissen später nie wieder brauchen solltest, du kannst doch nicht erwarten, dass wir für dich einfach Hausaufgaben machen 
Klar für die meisten in diesem Forum nimmt das 1 bis 2 Minuten in Anspruch, aber wir sind hier um Leuten zu helfen, die Programmieren lernen wollen und nicht um Hausaufgaben von Leuten zu machen, die das nicht interessiert 

Da musst du jetzt wohl selber mal dich ransetzen.


----------



## Crysis nerd (26. April 2013)

Dopplepost: Bitte löschen.


----------



## Hänschen (26. April 2013)

Muss es Windows basiert sein ?

Weil das Einbinden von C,C++ etc. in die API erfordert einiges Hirnschmalz und Zeit.

Aber wenn du guckst findest du im Netz eine fertige Vorlage mit einer Hauptschleife, wo du deinen Code reinmogeln kannst.

Oder du nimmst das einfache "Hello World" Programm und setzt deinen Rechencode samt Variablen etc. vor die Ausgabe - vorausgesetzt das hello-world-Beispiel läuft überhaupt auf deinem Windows.

Und einen funktionierenden Compiler brauchste auch noch.

Da ich das letzte mal vor einem Jahrzehnt gecodet habe, weiss ich nicht welcher noch aktuell ist


----------



## Leandros (26. April 2013)

Hänschen schrieb:


> Muss es Windows basiert sein ?
> 
> Weil das Einbinden von C,C++ etc. in die API erfordert einiges Hirnschmalz und Zeit.


 
Für die Aufgabe brauchst du nur iostream und math.h, das sind Standard libs in c++ und auf allen Plattformen verfügbar.


----------



## DarkMo (26. April 2013)

richtig. ein simples konsolen programm is völlig ausreichend. wie schon mehrfach erwähnt: das schwerste hieran is noch der verbratene hirnschmalz in die 2hochN funktion... wenn er selber mit code anfängt oder fragen zu codeschnipseln hat, dann helf ich ja auch gerne mit, aber einfach so für andere die arbeit machen... gut, fürn fuffy...


----------



## erdal93 (26. April 2013)

Mich interessiert eher Java nicht C. Aber mit Java werde ich noch später anfangen (wenig Zeit wegen Klausuren, Schule, Ausbildung etc.) 
Ich hab ja auch gegooglet und versucht den Code mir zusammen zu basteln, in dem ich mehrere angeguckt habe. Aber leider versteh ich wirklich nichts, was da alles steht und wir haben heute damit angefangen und sollen es spätestens heute Nacht um 0 Uhr im Netz hochladen. Wenn mehr Zeit wäre, würde ich mich natürlich reinlesen. Die Zeit ist dafür aber ziemlich knapp deswegen wollte ich hier nachfragen. Abgesehen davon HELFT ihr mir ja in der Hinsicht genau so wie ihr den anderen Leuten helfen würdet .

Wie gesagt, wäre euch sehr dankbar, wenn mir das jemand schnell abtippen kann. Der Programmiersprache Java werde ich mich noch widmen, dann kann ich ja darum um hilfe bitten


----------



## Anubis12334 (26. April 2013)

Poste doch einfach mal was du hast.


----------



## DarkMo (26. April 2013)

java und C sind doch in den grundlagen eh das selbe  lernst du erstmal C, is das für deine java ambitionen nichmal abträglich. is ja nu nich so, dass man ne whileschleife in c anders macht wie in java 

grundlegender aufbau in "pseudeo"-code:
starte eine while(true) schleife. die endet nie, die läuft und läuft und läuft. mit dem befehl break; kann man solche schleifen aber abbrechen. liest man nun bspw ein Q wie quit ein (auf was man sich da festlegt, is ja völlig latte), kann man darauf reagieren und das break auslösen. if(eingabe = "Q") break; - brauchst du also noch die eingabe. der einfachheit halber würde ich hier zu c++ raten, einfach ein cin << eingabe; und fertig. die schleife wäre damit schonmal funktionstüchtig. das if würde ich dann noch mit einem else-teil beglücken, in dem ich aus der eingabe (ein string, eine zeichenkette) versuche eine zahl zu machen, diese bei erfolg an meine 2hochN funktion schicke und das ergebnis ausgeben. sollte es keine zahl sein, die eingegeben wurde, gibt man das eben aus.


----------



## Leandros (26. April 2013)

Was bietest du, das ich es dir code?


----------



## Wendigo (26. April 2013)

DarkMo schrieb:


> java und C sind doch in den grundlagen eh das selbe  lernst du erstmal C, is das für deine java ambitionen nichmal abträglich. is ja nu nich so, dass man ne whileschleife in c anders macht wie in java
> 
> grundlegender aufbau in "pseudeo"-code:
> starte eine while(true) schleife. die endet nie, die läuft und läuft und läuft. mit dem befehl break; kann man solche schleifen aber abbrechen. liest man nun bspw ein Q wie quit ein (auf was man sich da festlegt, is ja völlig latte), kann man darauf reagieren und das break auslösen. if(eingabe = "Q") break; - brauchst du also noch die eingabe. der einfachheit halber würde ich hier zu c++ raten, einfach ein cin << eingabe; und fertig. die schleife wäre damit schonmal funktionstüchtig. das if würde ich dann noch mit einem else-teil beglücken, in dem ich aus der eingabe (ein string, eine zeichenkette) versuche eine zahl zu machen, diese bei erfolg an meine 2hochN funktion schicke und das ergebnis ausgeben. sollte es keine zahl sein, die eingegeben wurde, gibt man das eben aus.


 
100%ig richtig sind deine Anweisungen aber nicht.


----------



## DarkMo (26. April 2013)

soll ja auch nur nen grober leitfaden sein ^^ ausserdem war das nur als übung für ihn gedacht. szs ein "finde die 5 fehler" spiel *hust*


----------



## ryzen1 (26. April 2013)

Nur mal zur Hilfe im groben die Berechnung von dem ganzen. (C++)

eingeben:
cin >> x

berechnen:
pow(2,x) // => 2^n

ergebnis ausgeben:
cout << ergebnis


----------



## Coldhardt (26. April 2013)

Ich würd das ganze einfach mit Excel/VBA realisieren 

Oder muss es mit C/C++/C# sein?


----------



## Leandros (26. April 2013)

Excel / VBA? Oh gott. Das ist komplizierter als mit C / C++.


----------



## Coldhardt (26. April 2013)

Leandros schrieb:
			
		

> Excel / VBA? Oh gott. Das ist komplizierter als mit C / C++.



Echt? Mir kommt da grad relativ einfach vor. Aber ich kenne C ja auch noch nicht


----------



## Leandros (26. April 2013)

Ja, dann ist das natürlich unvorteilhaft, das sind in C / C++ maximal so um die 20 - 25 Zeilen an Code, ganz simpel.


----------



## Coldhardt (26. April 2013)

In Excel wären das eine Userform und ein bisschen Code mit Zellbezügen, denke ich


----------



## Wendigo (26. April 2013)

Er könnte es ja auch in G schreiben


----------



## Leandros (26. April 2013)

Oder Assembler? Ne, warte, ich find Brainfuck eigentlich am besten, sollte man darin schreiben. 


@TE: Ich habe es mal in 1 Minute eben abgetippt. Auch wenn ich es dir ungerne so präsentiere, weil damit hätte ich dann ja deine Hausaufgaben gemacht hätte.


----------



## ryzen1 (26. April 2013)

Ich hab mir jetzt spaßeshalber mal das in VBA angesehn 
Das ist eigentlich genauso einfach ^^


----------



## Z3rno (26. April 2013)

Anscheind hast du ja noch garnicht aufgepasst , denn das hier ist eigentlich aller unterste Schiene, vor allem weil die zu nutzende Berechnung schon angegeben wird.
Kannst dir ja jetzt besonders viel Mühe geben und das mit visual studio realisieren, so schön mit knöpfen


----------



## Leandros (26. April 2013)

Ihr immer mit euren Pseudo Programmiersprachen / IDEs  VBA oder Visual Studio 

Dafür reicht doch locker ein Programm in der Konsole aus, oder wenn es mit GUI willst, dann QT oder GTK+.


----------



## erdal93 (26. April 2013)

Jaa darf nur C/C++/C# sein .. Ihr könnt mir glauben das ich mich damit beschäftigen werde. Heute wird das aber wirklich zu knapp. Sonst hätte ich ja nicht extra ein Thread dafür erstellt. 
Ihr sagt alle es ist so einfach und alles, wieso schreibt es denn keiner kurz auf :s solant wie hier diskutiert wurde könntet ihr es 100 Mal denk ich abtippen..
Ihr würdet mir echt einen gefallen damit tun..


----------



## Leandros (26. April 2013)

Grade ingame, nachher gerne.


----------



## erdal93 (26. April 2013)

Oke  . Wann wäre das so ca. ?


----------



## DarkMo (26. April 2013)

und was machst du den ganzen tag so? langweilst dich beim warten auf neue posts mit dem code? keiner verlangt hier ne perfekte steilvorlage von dir, aber nen bissl eigeninitiative und engagement währen schon nich verkehrt  zumal du mittlerweile doch genug tipps haben dürftest um die paar zeilen zusammen zu kleistern. besorgst dir erstmal irgendeine ide (entwicklungsumgebung) für c... (visual gabs doch auch free oder) damit du nen unkomplizierten compiler hast. dann suchtse mal nach nem hello world tutorial dafür, dass du weisst, wie man ein neues projekt anlegt und ausführt bla und dann kannste auch schon versuchen, mal den code umzusetzen. hier wurden genug code-schnipsel und abläufe genannt. einfach bissl rumgooglen, was zusammenschustern (was warscheinlich ned geht) und das dann hier mal posten. dann kann man dir anhand dessen deine fehler aufzeigen, was dazu erklären und dir spezielle tipps geben.


----------



## Leandros (26. April 2013)

Recht hat DarkMo, ich habe eine Lustige Idee. Ich werde einfach eine Ausgabe draus machen, das er sich das selber erarbeitet.


----------



## Leandros (26. April 2013)

Das Gründgerüst für ein C++ Programm: 


```
int main()
{
    // Dein Code hier

    // Am Ende muss immer etwas zurückgegeben werden
    return 1;
}
```


Du benötigst:

Eingaben
Ausgaben
Berechnung von Potenzen

Dafür sind so genannte "libraries" nötig, diese muss man vorher deklarieren, um dir das abzunehmen, dies sind die genutzen:


```
#include <iostream>
#include <string>
#include <cmath>
```

Um nicht dauernd std:: vor jeden Befehl schreiben zu müssen, nutzen wir diesen namespace im gesamten Dokument:


```
using namespace std;
```


Nun zum eigentlichen Code:

Das *Deklarieren von Variablen* ist ganz simpel, es geht mit "typ name = wert;", zum Beispiel:


```
int ergebnis;
```

oder 


```
string ja = "y";
```


Für *Ausgaben* nutzt man "cout" (bzw std::cout).
Eine einfache Ausgabe kann so aussehen:


```
cout << "Hallo Welt!" << endl;
```

"endl" (steht für endline) beendet immer die Zeile.


Eine einfach *Eingaben* kann mit "cin" so geschehen:


```
string text;
cin >> text;
```

Wenn man text nun Ausgeben würde, dann würde deine Eingabe ausgegeben werden. Logisch, oder? 



Um Programmcode immer wieder hintereinander auszuführen, kann man *"while"* nutzen, eine *loop*: 


```
while (true) {
    // Diese wird nun immer wieder hintereinander ausgeführt, weil "true" immer wahr ist. Um die Schleife abzubrechen muss man "break;" callen
}
```


Um die Potenz zu Berechnen, nutzen wir "pow", das ist ganz simpel:


```
// 3^2
cout << pow(3, 2) << endl;
```


Jetzt solltest du alles Wissen, bei Fragen einfach Fragen oder Google bzw cplusplus.com befragen.



PS: Das hätte alles auch im Internet gestanden ...


----------



## DarkMo (26. April 2013)

Leandros schrieb:


> "endl" (steht für endline) beendet *immer* die Zeile.


 naja ^^ endl bewirkt schlicht einen zeilenumbruch. will nich behaupten du hättest es nich gewusst, aber so klingts halt seltsam 

für den TE zur verdeutlichung:

cout << "ausgabe"; sieht in der konsole so aus:
ausgabe_

cout << "ausgabe" << endl; sieht in der konsole so aus:
ausgabe
_

wenn man ein- und ausgaben hat, ist ein endl von vorteil, da das sonst blöde aussieht:
string text;
cout << "text eingeben";
cin >> text;
wird zu (sofern man hallo eingibt):
text eingebenhallo
_
(der zeilenumbruch erfolgt hier durchs bestätigen mit enter)


----------



## Leandros (26. April 2013)

DarkMo schrieb:


> naja ^^ endl bewirkt schlicht einen zeilenumbruch. will nich behaupten du hättest es nich gewusst, aber so klingts halt seltsam )


 
Mein ich doch. 

Gibt zu endl übrigens auch eine alternative (die ich meist nutze) nämlich "\n". Bewirkt das selbe, ist nur unix only (bzw die unix codierung für ein Zeilenumbruch).


----------



## DarkMo (26. April 2013)

jo, det kenn ich auch - ich oller windows fanatiker ^^


----------



## erdal93 (26. April 2013)

Nein. Hätte ich den ganzen Tag frei,  würde ich mir den ganzen Tag das angucken. Allerdings hatte ich keine Zeit weshalb ich euch um Hilfe gebeten habe .. ich danke euch.. für eure Unterstützung! Auch wenn ihr mir nich glaubt, dass ich eigentlich ganz fleißig bin )


----------



## Leandros (26. April 2013)

Bis wann muss die Lösung abgegeben werden? Ich kanns dir theoretisch noch schicken.


----------



## Crymes (28. April 2013)

Eigentlich kann man dass doch auch ohne math.h mit einer einfachen for-Schleife regeln, oder?


----------



## Leandros (28. April 2013)

Natürlich, aber warum umständlich wenn es auch einfach geht?


----------



## xEbo (28. April 2013)

Leandros schrieb:


> Natürlich, aber warum umständlich wenn es auch einfach geht?



Damit man weiß wie man Potenzen berechnen könnte, mit Bordmitteln . Außerdem ist es eine gute Übung


----------



## Leandros (28. April 2013)

Wenn du so denkst, solltest du nur den iostream include nutzen und alle anderen APIs ignorieren. Multiplikationen machst du dann mit Bit twiddling. 

Tl;dr: APIs sind dafür da genutzt zu werden und nicht um sie zu ignorieren.


----------



## xEbo (28. April 2013)

Leandros schrieb:


> Wenn du so denkst, solltest du nur den iostream include nutzen und alle anderen APIs ignorieren. Multiplikationen machst du dann mit Bit twiddling.
> 
> Tl;dr: APIs sind dafür da genutzt zu werden und nicht um sie zu ignorieren.


 
Vollkommen richtig . In der Anfangsphase der Programmierung habe ich mir aber gerne auch eigene Funktionen geschrieben für die es schon APIs gibt. Klar sind die bei weitem nicht so weit optimiert wie zB die Standart Bibliotheken aber man lernt einfach dazu. 
Man lernt dazu noch die Grundfunktionen besser kennen. Ob man dann jeden Code selber schreiben will oder sich nur theoretisch mit den Alghorithmen beschäftigt ist dann zweitrangig. Mir würde es bspw. niemals einfallen irgendeine Grafikbib selber zu schreiben oder irgendwelche Fenster Initialisierungen. Würde man es aber einfach mal machen wäre die Lernkurve sehr viel steiler und dazu noch wertvoller .


----------



## Crymes (29. April 2013)

Wenn wir schon mal Oftopic sind: Was hat es eigentlich mit solchen Gebilde wie 0x000005c oder 0x3af auf sich? Sind das auch Zahlen?


----------



## killer196 (29. April 2013)

Das sieht so aus wie der fehlercode im bluescreen


----------



## Leandros (29. April 2013)

Natürlich sind das Zahlen. 
0x ist der Indikator für eine Hexadezimale Zahl. 

Die erste ist 92 und die zweite 943.


----------



## Skysnake (8. Mai 2013)

Crymes schrieb:


> Wenn wir schon mal Oftopic sind: Was hat es eigentlich mit solchen Gebilde wie 0x000005c oder 0x3af auf sich? Sind das auch Zahlen?


 Das sind einfach nur hexzahlen, wie Leandros schon richtig sagt.

Adressen werden meist als Hex ausgegeben. Der Inhalt von Registern allerdings auch oft. Das macht es nicht immer ganz einfach zu unterscheiden, was jetzt eine Adresse und was ein Wert eines Registers ist


----------

