• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

C++ Grundlagen

Status
Für weitere Antworten geschlossen.
Hi,

ich bin selber C++-Programmierer (hobbymäßig) und ich kann dir nur zur einem Buch raten: "C++ für Spieleprogrammierer" von Heiko Kalista.

Ich habe mir viele Bücher und Tutorials angesehen, aber keines gefunden, dass den Einstieg so schön und einfach macht.

Außerdem würde ich NICHT mit DevC++ arbeiten.

Es gibt VisualStudio 2005 Expressversion von Microdoft (kostenlos!!!): hochmodernund sehr komfortabel (und das ganze für umme, einfach nur geil!!!)!!! (http://www.microsoft.com/germany/msdn/vstudio/products/express/visualc/default.mspx).

Graphik: Am Anfang wirst du wie gesagt erst mal eine Zeit lang im Konsolenfenster bleiben, kannst dann aber recht bald (wird in Heikos Buch gemacht) auf einfache Graphikbibliotheken (z.B. SDL [google mal]) umsteigen und damit erste graphische Projekte umsetzen.

Viele C++ - Grüße - spacegaier
 
Ich hätte auch mal eine Frage. (gehört eigentlich nicht hier rein, aber ich finds sinnlos nen eigenen Thread zu öffnen)

Wenn ich folgendes Programm kompiliere meldet sich mein antivir zu Wort und behauptet es hätte einen Trojaner ( TR/shutdown.F) entdeckt. Wenn ich nun die "stdlib" rausnehme lässt sich das Programm wunderbar kompilieren und in der Konsole ausführen. Meine Frage: Kann ich Antivir einfach mal übersehen bzw. abschalten und dann einfach kompilieren, ohne irgendwelche bedenken zu haben, denn ich gehe mal schwer davon aus, das antivir nur auf die "stdlib" reagiert. (Ich hab übrigens auch DEV c++)

Code:
#include <stdio.h>[COLOR=Red]
#include <stdlib.h>[/COLOR]

int main([COLOR=Red]int argc, char *argv[][/COLOR])
{
  printf("Hello World!");
  [COLOR=Red]system("PAUSE");[/COLOR]    
  return 0;
}
Alles was rot makiert ist hab ich rausgenommen.

Es reicht eine einfache: Ja, du kannst antivir ignorieren, oder: Lass es lieber sein - Antwort

Danke.
 
Also php-Lerner, zwei Sachen:

1. Was du da programmierst ist nicht C++, sondern C.

In C++ sähe das ganze nämlich z.B. so aus:

Code:
#include <iostream>
 
int main()
{
std::cout << "Hello World" << std::endl;
 
std::cin.ignore(); //Hier könnte man auch das nehmen: system("PAUSE");
 
return(0);
}

2. Für dein kleines C-Programm brauchst du die stdlib.h gar nicht, sondern die stdio.h (*io = in- and output) reicht, denn mehr als eine Ausgabe machst du ja nicht.

Und ein Virus ist dies echt nicht (und wie gesagt nimm Visual Studio 2005 Express-Version, siehe Post von mir weiter oben).
 
Also php-Lerner, zwei Sachen:

1. Was du da programmierst ist nicht C++, sondern C.
Das weiß ich auch. Es ging mir eigentlich darum, dass ich es im Dev c++ geschrieben hab, da dieses Progeramm hier sehr oft angesprochen wurde.

(Ich hab schon ein wenig mehr gemacht, als nur ein "Hello World". In C und in C++ *multiplikation und Einlesen* :P )
2. Für dein kleines C-Programm brauchst du die stdlib.h gar nicht, sondern die stdio.h (*io = in- and output) reicht, denn mehr als eine Ausgabe machst du ja nicht.

Und ein Virus ist dies echt nicht (und wie gesagt nimm Visual Studio 2005 Express-Version, siehe Post von mir weiter oben).
die stdlib hat ich ja nur wegen dem "system("Pause") drinnen, damit ich mich nicht die ganze zeit mit der Eingabeaufforderung rumschlagen muss.

Naja. Problem ist ja gelöst. Danke.
 
Ich hab ja selber erst angefangen. Ich hab ein Buch vom Freund geschenkt bekommen, es heisst "Das 1x1 der C++Programmierung von Cuber Wenzel". Ist dieses Buch gut? Ich wollte mir eins kaufen, das beste :D Welches könnt ihr mir empfehlen?
 
ich find des recht amüsant, wie hier jeder für irgendwelche bücher wirbt... ;) leider kann ich von meinem nicht sagen, dass es sehr gut ist. ( C++ Objektorientiertes Programmieren von Anfang an - Helmut Erlenkötter ) Da wird zwar alles wunderschön beschrieben aber meiner Ansicht nach ist der Inhalt veraltet. Nicht programiertechnisch- da ändert sich ja nix, aber die sachen die da programmiert werden sind nicht so ansprechend. Ein duchschnittlicher Jugendlicher will keine Flächen von Baugrundstücken berechnen oder Buchhaltung praktizieren ...

aber ok =)


hab auch ne frage ;) :

weiss jemand, wie man in cpp wurzeln und potenzen rechnet. Also mein "taschen"rechner soll das auch noch können...also wurzeln und potenzen sollten schon in jeden TR rein ;)

lg,
n1ob

PS:
Wenn jemand [ Dev C++ Nutzer ] wissen will, wie grafische programme aussehen -> man kann sich über " Neu -> Projekt " ein Grundgerüst machen. OpenGL Sample usw. ist auch dabei. Aber ich kann nur empfehlen gar nicht erst versuchen sich duch den code zu steigen. Als anfänger blickt man eh nicht viel.
Ich habs "damals" geschafft zb die geschwindigkeit von einem Drehenden Dreieck zu verändern....
 
N10B schrieb:
weiss jemand, wie man in cpp wurzeln und potenzen rechnet. Also mein "taschen"rechner soll das auch noch können...also wurzeln und potenzen sollten schon in jeden TR rein

Header: math
Funktion: double pow(double base, double exp);

Wurzeln haben den exponenten 1/radikant.

Ich kann nur die her empfehlen:

>C/C++
> C++ von A bis Z (Mehr ein Nachschlage werk)
 
hmm...also bei folgender zeile :
Code:
if(op==5){
  cout <<"\n"<< z << " hoch "<<zz<<" = "<< double pow(double z, double zz);<<endl;
                                          }
( z = erste zahl, zz = zweite zahl -> werden vorher eingelesen )
kommen folgende fehler:
Code:
43 C:\Dokumente und Einstellungen\...\tr.cpp expected primary-expression before "double"

43 C:\Dokumente und Einstellungen\...\tr.cpp expected `;' before "double" 

43 C:\Dokumente und Einstellungen\...\tr.cpp expected primary-expression before '<<' token
darf ich jetzt einfach mal ein Fragezeichen in den Raum stellen?

lg,
n1ob
 
omg, :roll:.

Kannst du überhaupt die Grundlagen von C++?

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

int main()
{
    double basis;
    double exponent;
    
    basis    = 4;
    exponent = 2;
    
    std::cout << basis << "^" << exponent << "=" << pow(basis, exponent) << std::endl;
    std::cout << basis << "^(1/" << exponent << ")=" << pow(basis, 1/exponent) << std::endl;
    system("pause");
}

Das ist ein Beispiel, welches 4^2 und Wurzel aus 4 berechnet.
 
bitte was soll daran Grund für ein "omg" sein ???

ja, ich beherrsche die grundlagen dieser sprache. Falls du es nicht gemerkt haben solltest war das ein Codeschnipsel aus einem etwas ausführlicheren programm.

Aber troztdem danke für deinen Post - mein Problem ist jetzt gelöst.

lg,
N1oB
 
Der Grund für mein omg, war, dass du das, was Prophet gepostet hatte 1:1 übernommen hast. Mit den Variablen-Typen und dem Semikolon am Ende. Das fand ich sehr komisch.
 
ja...ich kann ja nicht riechen, dass man die typbezeichnung nicht nochmal vor den Wert (base, exponent) schreiben darf ;) ... is ja au wurscht.
kannst du C++ ?
ich hab grad ein wurzelproblem...mein TR ist etwas komisch aufgebaut :

1. man gibt eine erste zahl ein
2. man wählt ein rechenzeichen aus
3. man gibt die zweite zahl ein

und dann spuckt das programm das ergebnis aus.
so, wenn ich aber eine wurzel ziehe brauche ich keine zweite zahl. nur das weiss ja mein programm nicht. -> programm wird mit fehlermeldung beendet.

wie kann ich dafür sorgen, dass er nicht eine zweite zahl erwartet?
 
hmm ... tut immer noch nicht..

hier mal der code
Code:
    #include <iostream>
    #include <stdlib.h>
    #include <math.h>
    
    using namespace std;
    
    unsigned z;                    // Zahl 1
    unsigned zz;                   // Zahl 2
    unsigned op;                   // Rechenzeichen
    unsigned eq;                   // Ergebnis (wird noch nicht verwendet)
    
    int main(int argc, char*argv[])  {
                            // Choose Operation
                            
        printf ("\n\n -1- Addtion\n");                       // Addition  
        printf (" -2- Subtraktion\n");                       // Subtraction
        printf (" -3- Multiplikation\n");                    // Multiplication
        printf (" -4- Division\n");                          // Division
        printf (" -5- Potenz\n");                            // Potenz
        printf (" -6- Wurzel\n");
        printf ("\nAnleitung => op->z->zz\n\n");
        
               cin >> op;
               cout << " ";
               cin  >> z;
               cout << " ";
               if(op!=6){
                         cin >> zz;
                         cout << " ";
               }
  
               
        if(op==1){
                  cout << z <<" + "<<zz<<" = "<<z+zz <<endl;
                  }
        if(op==2){
                  cout << z <<" - "<<zz<<" = "<<z-zz<<endl;
                  }
        if(op==3){
                  cout << z <<" * "<<zz<<" = "<<z*zz<<endl;
                  }
        if(op==4){
                  cout <<"\n"<< z <<" : "<<zz<<" = "<<z/zz <<endl;
                  }
        if(op==5){
                  cout <<"\n"<< z <<" hoch "<<zz<<" = "<< pow(z, zz)<<endl;
                  }
        if(op==6){
                  cout <<"\n die Wurzel aus"<<z<<"ist"<< pow(z, 1/zz)<<endl;
                  }
                  system ("pause");
                  }

Edit:

Aber das ist ja ein wiederspruch. eine wurzel braucht keinen exponenten, deswegen will ich diesen auch ausschließen.
In dem Befehl pow braucht man ja (base, 1/exponent) ... kann mir das bitte jmd. verklickern..
 
Zuletzt bearbeitet:
Das was du unter wurzel verstehst ist eine wurzel mit dem exponenten 2. Das sowas häufig vorkommt wird in dem fall der exponent weggelassen. Du kannst auch die 3, 4 oder 5 wurzel ziehen...

ja...ich kann ja nicht riechen, dass man die typbezeichnung nicht nochmal vor den Wert (base, exponent) schreiben darf ... is ja au wurscht.
kannst du C++ ?
Wenn du C++ kannst schon. Ich habe den funktionsprototypen aufgeschrieben...

Noch ein tipp zu deinem code: Verwende switch anstatt einer endloss verketteten if abfrage.

Wenn ich header "math" schreibe dann ist das auch so gemeint. Alle header der standard bibliothek sind ohne .h zu schreiben sofern zu C++ verwendest. Nur wenn du auch die ehemaligen c header zugreifen willst musst du das .h anhängen. oder du setzt ein c vor den header namen.
 
@ Prophet:
Das ist mal ein hilfreicher post. Danke!

Das mit dem Exponent der Wurzel hatte ich vergessen .. :roll:

n1ob
 
Hallo,
sorry wegen dem Doppelpost ... aber ich finds schwachsinnig noch einen C++ Thread aufzumachen.
ich hab an meinem TR weitergecodet und jetzt speicher ich die letzten Ergebnisse in einer Logdatei.
Das Problem ist, dass wenn ich mit diesem Teil
Code:
if(op==5){
                  cout <<"\n"<< z <<" hoch "<<zz<<" = "<< pow(z, zz)<<endl;
                  [B]eq=pow(z,zz);[/B]
                  }
das ergebnis in dier variable "eq" packe bekomme ich diese fehlermeldung:
Code:
60 ..\\C++\tr.cpp [Warning] converting to `unsigned int' from `double'

Und die zweite Sache ist, ich habe eine Art Statusmeldung gemacht, also wenn die logdatei geschrieben wurde, sagt das mir dass es ok ist usw... wenn nicht, dann sagt es mir, dass es nicht ok ist und probiert es einige male.
Nun möchte ich aber testen, was passiert, wenn es nicht ok ist. wie kann ich da einen Fehler verursachen?

lg,
n1ob
 
Code:
60 ..\\C++\tr.cpp [Warning] converting to `unsigned int' from `double'
Wie dort ja steht ist das nur eine Warnung die dich auch einen Rechenfehler aufmerksam machen soll!
Ich vermute einfach mal das eq vom typ unsigned char ist. Wenn du nun pow verwendest gibt es dir einen double wert zurück (wegen größt möglicher präzision). Da aber unsigned char nur die werte von 0-255 enthaltne kan und doulbe zahlen im bereich von 4 mrd. und mehr aufnehmen kann führt das ganze zu einem enormen datenverlust aufgrund der typkonvertierung. Da sich der compiler denkt das dieser verlusst markant ist warnt er dich.

Und die zweite Sache ist, ich habe eine Art Statusmeldung gemacht, also wenn die logdatei geschrieben wurde, sagt das mir dass es ok ist usw... wenn nicht, dann sagt es mir, dass es nicht ok ist und probiert es einige male.
Nun möchte ich aber testen, was passiert, wenn es nicht ok ist. wie kann ich da einen Fehler verursachen?
Kommt drauf an wie du in die datei schreibst. Wahrscheinlich reicht es schon wenn du sagst das die datei nicht von diesem benutzer beschrieben werden darf.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben