Webdesign neben C++ machen

Kurze Frage hier zu JS:
Code:
var greeting = function (name) {
    console.log("Great to see you," + " " + name);
};

wenn ich greeting(name) (für name was einsetzen) mache, soll diese Nachricht + der name angezeigt werden. Hab alles probiert, aber bei mir klappts net. Weiß wer ne Musterlösung?
 
Dein Code schreibt die Nachricht auf die Entwickler-Konsole deines Browsers, oder eben die Konsole deines OS wenn es eine Konsolen-Anwendung sein soll.

Wenn du die Ausgabe auf einer Webseite machen willst, musst du natürlich den DOM manipulieren.
 
mit greeting(gustav) würdest Du die Funktion aufrufen und die Variable gustav übergeben. Du willst aber ja die Zeichenkette (= String) "gustav" übergeben, daher muss das in Anführungszeichen. Man könnte jetzt noch etwas weiter ausholen, aber das wird sicher noch im Laufe des Tutorials geklärt.

=> greeting("gustav");

EDIT: Gerade auch mal getestet. Wenn Du nur gustav übergibst, dann bekommst Du ja rechts oben den "ReferenceError", der besagt, dass diese Variable gustav nicht definiert/bekannt ist.

Du bekommst aber auch gleich einen Tipp unten: "Oops, try again! It looks like you didn't put quotes around the name you gave the greeting function!"
 
Komisch, habs total übersehen. Danke für den Hinweis, jetzt funzt wieder alles :)
btw:
Ist es normal, dass C++ am Anfang so unglaublich öde ist, oder liegt das am Buch?
Wofür brauche ich denn irgendwelche manipulationen an formatierungen im konsolenfenster?
 
Was meinst du denn mit Formatierungen? Escape-Sequenzen? Die sind sehr wichtig, ja. Irgendwelche Farbspielereien hingegen nicht. Sowas kannst du überspringen und später nachschlagen für den unwahrscheinlichen Fall, dass du es jemals benötigen wirst.
 
Nein, Escape-Sequenzen habe ich schon hinter mir. Ich meine einfach sowas wie:
Code:
#include <iostream>
using namespace std;
int main()
{
double x = 12.0;
cout.precision(2); // Genauigkeit 2
cout << " Standard: " << x << endl;
cout << " showpoint: " << showpoint << x << endl;
cout << " fixed: " << fixed << x << endl;
cout << " scientific: " << scientific << x << endl;
return 0;
}

bzw. vll. ist das ja noch halbwegs sinnvoll, Zahlen richtig umformen zu können.
Das Fenster schließt sich übrigens bei mir (immer noch) direkt nach dem ausführen. cin.get() und Strg F5 bringt beides nix...

Warum kann man es nicht einfach wie http://www.codecademy.com/ erklären?

Da wird so schön mit VS 12 angepriesen, aber eig. ist das wie jedes andere Fachbuch. Dazu, dass sich das Konsolenfenster ständig schließt wird auch nichts erzählt. Mein Anfänge in JS habe ich in 30min gemacht, für das gleiche in C++ habe ich drei Tage gebraucht, mit diesem Buch .....
Was haltet ihr denn von dem Buch hier? http://eu.wiley.com/WileyCDA/WileyTitle/productCd-EHEP001657.html
Habe ich mir irgendwann mal gezogen...
 
Zuletzt bearbeitet:
Öffne halt selbst eine Konsole und starte dein Programm von da. Wenn es beendet wird, landest du wieder an der Kommandozeile.
 
cin.get hat das Problem, dass wenn möglicherweise noch Leerzeichen/\n in cin drin sind, dass es dann nicht funktioniert.
Einfach aber (wirklich) hässlich ist ein system("PAUSE");, die normale Lösung ist ein cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n' );cin.get();cin.get();. Ich persönlich setzt meist einfach einen Breakpoint ans Ende des Programms, dann geht es mit STRG+F5, da muss ich dann ne Taste drücken oder im Debugger hält der dann an, was auch oft hilfreich ist.

Warum C++ deutlich länger dauert, hängt immer davon ab, was du machen willst. Für kleine Beispielaufgaben ist halt JS schneller, da die Ausgabe einfacher ist, bei C++ geht dafür der Zugriff auf das OS einfacher.
Ich hab nie nach Büchern gelernt, sondern mir ein Ziel gesetzt und darauf dann hin gearbeitet.
 
@ice-breaker: Hihi gute Antwort :) Ich hab genau so ein Buch in einer OpenDoc-Version letztens mal abgelesen .. sehr spannend.
 
Mir ist da grad so eine gute Idee gekommen, wenn die Aufgaben aus dem Buch so öde sind, mach ich doch einfach selbst was:
Code:
#include <iostream>
#include <iomanip>
#include <cmath>

int main()
{
	double a, b, c, alpha1, beta1, gamma1;
	cout << "Gib die Stücke deines Dreiecks in der Reihenfolge a -> b -> c -> alpha -> beta -> gamma an!";
	cin >> a >> b >> c >> alpha1 >> beta1 >> gamma1;
	a=sqrt( pow(b, b) + pow(c, c)  - 2*b*c*cos(alpha1));
	b=sqrt( pow(a, a) + pow(c, c) - 2*a*c*cos(beta1));
	c=sqrt( pow(b, b) + pow(a, a) - 2*a*b*cos(gamma1));
	alpha1 = (sin(beta1) / b) * a;
	beta1 = (sin(gamma1) / c) * b;
	gamma1 = (sin(alpha1) / a) * c;

	cout << "a = " << a << "b = " << b << "c = " << c "alpha= " << alpha1 << "beta= " beta1 << "gamma= " << gamma1;
	return 0;
}

2 Fragen:
1. Funktioniert das?
2. Wo ist der Fehler?
Ich glaube nämlich, ich habe es mir ein bisschen zu einfach gemacht...

Angezeigt wird das hier:
Code:
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(8): error C2065: 'cout': nichtdeklarierter Bezeichner
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(9): error C2065: 'cin': nichtdeklarierter Bezeichner
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(17): error C2065: 'cout': nichtdeklarierter Bezeichner
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(17): error C2143: Syntaxfehler: Es fehlt ';' vor 'Zeichenfolge'
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(17): error C2296: '<<': Ungültig, da der linke Operand vom Typ 'const char [8]' ist
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(17): error C2297: '<<': Ungültig, da der rechte Operand vom Typ 'double' ist
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(17): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'beta1'
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(17): error C2296: '<<': Ungültig, da der linke Operand vom Typ 'double' ist
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(17): error C2297: '<<': Ungültig, da der rechte Operand vom Typ 'const char [8]' ist
 
Zuletzt bearbeitet:
Ich bin so ein genie ...
Bleibt aber immer noch:
Code:
c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(18): error C2143: Syntaxfehler: Es fehlt ';' vor 'Zeichenfolge'
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(18): error C2296: '<<': Ungültig, da der linke Operand vom Typ 'const char [8]' ist
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(18): error C2297: '<<': Ungültig, da der rechte Operand vom Typ 'double' ist
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(18): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'beta1'
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(18): error C2296: '<<': Ungültig, da der linke Operand vom Typ 'double' ist
1>c:\users\jalan\desktop\c++\projekte\projekt11\projekt11\quelle.cpp(18): error C2297: '<<': Ungültig, da der rechte Operand vom Typ 'const char [8]' ist

habs mal so geschrieben.

Code:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
	double a, b, c, alpha1, beta1, gamma1;
	cout << "Gib die Stücke deines Dreiecks in der Reihenfolge a -> b -> c -> alpha -> beta -> gamma an!";
	cin >> a >> b >> c >> alpha1 >> beta1 >> gamma1;
	a=sqrt( pow(b, b) + pow(c, c)  - 2*b*c*cos(alpha1));
	b=sqrt( pow(a, a) + pow(c, c) - 2*a*c*cos(beta1));
	c=sqrt( pow(b, b) + pow(a, a) - 2*a*b*cos(gamma1));
	alpha1 = (sin(beta1) / b) * a;
	beta1 = (sin(gamma1) / c) * b;
	gamma1 = (sin(alpha1) / a) * c;

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;
	cout << "Alpha = " << alpha1; << endl;
	cout << "Beta = " << beta1; << endl;
	cout << "Gamma = " << gamma1; << endl;
	return 0;
}

Und hier nochmal JS ...
Code:
// Write your function below. 
// Don't forget to call your function!

var creditCheck = function(number)
{
    var income = number;

    if (income >= 100);
    {
        console.log("You earn a lot of money! You qualify for a credit card.");
    } 
    else
    {
        console.log("Alas you do not qualify for a credit card. Capitalism is cruel like that.");
    }
};


creditCheck(75);

Ich hab' das mit dem return noch nicht so ganz bei strings gepeilt...
 
Zuletzt bearbeitet:
Bei deinem Code Post #52 hast du statt
Code:
c<<" alpha1="
Code:
c "alpha1"="
geschrieben.

in Post #54 hast du hinter die Winkel bei der Ausgabe ein ; gemacht, das ist da falsch.

Mit der JS-Funktion, wie die in C++ aussehen würde?
Code:
//Gibt es in der Konsole aus
void creditCheck(int number){
if(number>=100)
cout<<"Good\n";
else
cout<<"Not good\n";
}
//gibt es als string zurück
#include <string>
std::string creditCheck2(int number){
if(number>=100)
return "Good";
else
return "Not good";
}
 
Wtf, was mach ich für Fehler heute o.O Ich sollte mal echt schlafen gehen..
Eigentlich wollte ich jetzt nur wissen, wie es in JavaScript richtig war, aber habs jetzt auch so hinbekommen. Schon komisch wie ähnlich sich die beiden Sprachen erstmal sind.
Danke Danke nochmal.
Nur nochmal kurz für meinen Source-Code des Dreieckrechners:
Wo setzte ich jetzt am besten die Befehle, damit das Programm sich nicht sofort schließt?
Und wie kann ich das am Ende kompilieren, dass das auch jmd. anders als ich ausführen kann?
 
Am besten kommt der Befehl fürs Tastendrucken ans Ende^^. Also am Ende der main-Funktion.
Wenn du es ausführst, wird es im Hintergrund schon kompiliert, guck mal in deinem Projektordner in den Debug bzw. Release-Ordner.
Andere werden es wahrscheinlich* ausführen können.

* Du kompilierst sicherlich mit der DLL-C++-Runtime, das führt dazu, dass der Ausführende die Visual-C++-Runtime-Redistributable für dein Visual-Studio installieren muss.
Das kannst du vermeiden, wenn du unter Projekt-><Projektname>-Eigenschaften->Konfigurationseigenschaften->C/C++->Codegenerierung->Laufzeitbibliothek auf Multithreaded (/MT) stellst.
Achte drauf, dass du dabei die richtige Konfiguration ausgewählt hast (also /MT für Release und /MTd für Debug).
 
Ähm, kannst du vll. nochmal in Code schreiben, was ich am Ende am besten mache?
cin.get() mag mich nicht, was anderes anwenden hab ich noch nicht gelernt.
 
Mach es doch vernünftig, wie ich gesagt habe. Konsole öffnen und darin ausführen. Extracode um normales und gewünschtes Verhalten zu verhindern ist doch blödsinnig.
 
Gut, ich öffne es jetzt immer mit der Konsole.
Wie kann ich eig. eine Eingabe "weglassen"
z.B. sind nur a, c und beta geben. Wenn ich sowas wie 3 4 5 / / / mache kommt da nur so'n 50, #INT ... blub raus.
Der Code ist nicht gerade der beste, Verbesserungsvorschläge?
 
Zurück
Oben