+ Antworten
Ergebnis 1 bis 15 von 15

C++ problem

Eine Diskussion über C++ problem im Forum Technik Ecke. Teil des Off Topic-Bereichs; ich hab ein kleines programm geschrieben DEV C++ zeigt mir fehler an aber ich weiß net was falsch ist kann ...

  1. #1
    vi Britannia
    Avatar von SgtMcPwnage
    Registriert seit
    26.03.2010
    Ort
    Area 10
    Alter
    22
    Beiträge
    4.098
    Nick
    SgtMcPwnage
    Clans
    G.I.N

    C++ problem

    ich hab ein kleines programm geschrieben DEV C++ zeigt mir fehler an aber ich weiß net was falsch ist kann sich das mal jemand anschauen
    vielen dank
    Mfg SgtMcPwnage

    // Aykut Gür Programm Pin Abfrage
    # include <iostream.h>


    int Geheim=1234;


    cout << "Enter Pin";
    cin >> Geheim;

    if ( Geheim == 1234 );

    cout >> "Starting System";
    Else
    cout << "Wrong Pin";
    cout << "Enter Pin";
    cin >> Geheim;

    if ( Geheim == 1234 );

    cout >> "Starting System";
    Else
    cout << "Wrong Pin";
    cout << "Enter Pin";
    cin >> Geheim;

    if ( Geheim == 1234 );

    cout >> "Starting System";
    Else
    cout << "Wrong Pin";
    cout << "Enter PUK";
    Getcha
    }
    Geändert von SgtMcPwnage (23.11.2010 um 19:41 Uhr)
    http://www.united-forum.de/signaturepics/sigpic32127_15.gif

  2. #2
    Hier gibt's ne Codefunktion mit der das Ganze schön strukturiert dargestellt wird. Was für ein Fehler angezeigt wird wäre auch nicht schlecht zu wissen. Noch nie was mit C++ gemacht, aber soweit ich weiß kommt nach einem if eine geschwungene Klammer. Wäre dann also:

    1. // pincode.cpp : Defines the entry point for the console application.
    2. //
    3.  
    4. #include "stdafx.h"
    5. #include <iostream>
    6. using namespace std;
    7.  
    8.  
    9. int _tmain(int argc, _TCHAR* argv[])
    10. {
    11. int Geheim=1234;
    12.  
    13.  
    14. cout << "Enter Pin";
    15. cin >> Geheim;
    16.  
    17. if ( Geheim == 1234 )
    18. {
    19. cout << "Starting System";
    20. }
    21.  
    22. else
    23. {
    24. cout << "Wrong Pin";
    25. cout << "Enter Pin";
    26. cin >> Geheim;
    27. }
    28.  
    29. if ( Geheim == 1234 )
    30. {
    31. cout << "Starting System";
    32. }
    33.  
    34. else
    35. {
    36. cout << "Wrong Pin";
    37. cout << "Enter Pin";
    38. cin >> Geheim;
    39. }
    40.  
    41. if ( Geheim == 1234 )
    42. {
    43. cout << "Starting System";
    44. }
    45.  
    46. else
    47. {
    48. cout << "Wrong Pin";
    49. cout << "Enter PUK";
    50. }
    51. return 0;
    52. }
    53.  
    54.  

    E: Hab's jetzt mal selbst versucht. Deine Fehler waren, dass du #include <iostream> nicht angegeben hast (Ist eine Klassenbibliothek die es dir ermöglich Befehle wie "cout" zu verwenden soweit ich weiß), den namespace vergessen hast, nach einem if oder einem else kommt eine geschwungene Klammer kein Strichpunkt (Strichpunkte beenden Befehle) und du hast bei cout falsche Pfeile gemacht. (Du hast teilweise cout >> geschrieben. Richtig ist cout <<) Programm funktioniert, das Formatieren damit es in der Console halbwegs aussieht überlass' ich mal dir.
    Geändert von El Duderino (23.11.2010 um 20:32 Uhr)

  3. #3
    vi Britannia
    Avatar von SgtMcPwnage
    Registriert seit
    26.03.2010
    Ort
    Area 10
    Alter
    22
    Beiträge
    4.098
    Nick
    SgtMcPwnage
    Clans
    G.I.N
    Mit klammer wäre es so ....

    // Aykut Gür Programm Pin Abfrage
    # include <iostream.h>


    int Geheim=1234;

    {
    cout << "Enter Pin";
    cin >> Geheim;
    }
    if ( Geheim == 1234 );
    {
    cout >> "Starting System";
    }
    Else
    {
    cout << "Wrong Pin";
    cout << "Enter Pin";
    cin >> Geheim;
    }
    if ( Geheim == 1234 );
    {
    cout >> "Starting System";
    }
    Else
    {
    cout << "Wrong Pin";
    cout << "Enter Pin";
    cin >> Geheim;
    }
    if ( Geheim == 1234 );
    {
    cout >> "Starting System";
    }
    Else
    {
    cout << "Wrong Pin";
    cout << "Enter PUK";
    Getcha
    }


    aber klappt immernoch net
    http://www.united-forum.de/signaturepics/sigpic32127_15.gif

  4. #4
    Hab's oben editiert. Klappt jetzt wunderbar. Habt ihr eigentlich schon Schleifen gemacht?
    Geändert von El Duderino (23.11.2010 um 20:39 Uhr)

  5. #5
    Ehrenmember

    Registriert seit
    05.07.2002
    Beiträge
    4.803
    Code:
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    void _tmain(int argc, _TCHAR* argv[])
    {	
    	int Geheim=1234; 
    	
    
    cout << "Enter Pin";
    cin >> Geheim;
    
    if ( Geheim == 1234 )
    {cout << "Starting System";}
    else {
    	cout << "Wrong Pin";
    	cout << "Enter Pin";
    	cin >> Geheim;}
    
    if ( Geheim == 1234 ){
    	cout << "Starting System";}
    else {
    	cout << "Wrong Pin";
    	cout << "Enter Pin";
    	cin >> Geheim;}
    
    if ( Geheim == 1234 ){
    	cout << "Starting System";}
    else{ 
    	cout << "Wrong Pin";
    	cout << "Enter PUK"; 
    	Getcha}
    }
    dito, #include <stdio> <- ohne .h, keine main methode, bei den ifs die {} vergessen, else muss ich kleinschreiben, 3-4 >> sollten << sein,

  6. #6
    vi Britannia
    Avatar von SgtMcPwnage
    Registriert seit
    26.03.2010
    Ort
    Area 10
    Alter
    22
    Beiträge
    4.098
    Nick
    SgtMcPwnage
    Clans
    G.I.N
    Bei mir klappt immernoch net
    http://www.united-forum.de/signaturepics/sigpic32127_15.gif

  7. #7
    "Getcha" löschen.

  8. #8
    vi Britannia
    Avatar von SgtMcPwnage
    Registriert seit
    26.03.2010
    Ort
    Area 10
    Alter
    22
    Beiträge
    4.098
    Nick
    SgtMcPwnage
    Clans
    G.I.N
    Zitat Zitat von Wandfliese Beitrag anzeigen
    "Getcha" löschen.
    der gleiche fehler taucht trotzdem auf
    http://www.united-forum.de/signaturepics/sigpic32127_15.gif

  9. #9
    (:
    Avatar von Liontiger
    Registriert seit
    09.07.2004
    Ort
    Siegen
    Alter
    29
    Beiträge
    1.038
    Name
    Tim
    Nick
    Liontiger
    Clans
    ToC
    Dass das Programm ein paar Unfeinheiten hat, was den Ablauf angeht lass ich mal außen vor, aber das kompilieren klappt so bei mir:
    könnte mir vorstellen das du z.B. noch die header Datei für TCHAR einbinden müsstest etc., hab's aber jetzt mal auf Standarddatentypen reduziert - das argv Array nutzt du ja eh nicht.

    1.  
    2. #include "stdafx.h"
    3. #include <iostream>
    4. using namespace std;
    5.  
    6. void main(int argc, char* argv[]){
    7. int Geheim=1234;
    8.  
    9. cout << "Enter Pin";
    10. cin >> Geheim;
    11.  
    12. if ( Geheim == 1234 ){
    13. cout << "Starting System";
    14. } else {
    15. cout << "Wrong Pin";
    16. cout << "Enter Pin";
    17. cin >> Geheim;
    18. }
    19. if ( Geheim == 1234 ){
    20. cout << "Starting System";
    21. } else {
    22. cout << "Wrong Pin";
    23. cout << "Enter Pin";
    24. cin >> Geheim;
    25. }
    26. if ( Geheim == 1234 ){
    27. cout << "Starting System";
    28. } else {
    29. cout << "Wrong Pin";
    30. cout << "Enter PUK";
    31. }
    32. }
    33.  

  10. #10
    vi Britannia
    Avatar von SgtMcPwnage
    Registriert seit
    26.03.2010
    Ort
    Area 10
    Alter
    22
    Beiträge
    4.098
    Nick
    SgtMcPwnage
    Clans
    G.I.N
    klappt immernoch nicht......vielleicht liegst an Dev ++
    http://www.united-forum.de/signaturepics/sigpic32127_15.gif

  11. #11
    Wofür brauchst du "stdafx.h" ? Ich habe es mal entfernt.

    Ich habe Geheim in pin umbenannt und die Ausgaben etwas zusammengefasst, bzw. zusätzliche Endlines hinzugefüg.

    Des Weiteren habe ich aus "void main" "Int main" gemacht, um "EXIT_SUCCESS" zurückgeben zu können.
    Und zu guter Letzt habe ich "using namespace std;" entfernt, da ich es zur Vermeidung von Fehlern besser finde explizit "std::" anzugeben.

    1.  
    2. #include <iostream>
    3.  
    4. int main()
    5. {
    6. int pin;
    7.  
    8. std::cout << "Enter Pin:" << std::endl;
    9. std::cin >> pin;
    10.  
    11. if (pin == 1234)
    12. {
    13. std::cout << "Starting System.";
    14. }
    15. else
    16. {
    17. std::cout << "Wrong Pin." << std::endl << "Enter Pin:" << std::endl;
    18. std::cin >> pin;
    19. }
    20.  
    21. if (pin == 1234)
    22. {
    23. std::cout << "Starting System.";
    24. }
    25. else
    26. {
    27. std::cout << "Wrong Pin." << std::endl << "Enter Pin:" << std::endl;
    28. std::cin >> pin;
    29. }
    30.  
    31. if (pin == 1234)
    32. {
    33. std::cout << "Starting System.";
    34. }
    35. else
    36. {
    37. std::cout << "Wrong Pin." << std::endl << "Enter PUK:" << std::endl;
    38. }
    39.  
    40. return EXIT_SUCCESS;
    41. }

  12. #12
    vi Britannia
    Avatar von SgtMcPwnage
    Registriert seit
    26.03.2010
    Ort
    Area 10
    Alter
    22
    Beiträge
    4.098
    Nick
    SgtMcPwnage
    Clans
    G.I.N
    vielen dank so klappts aber ....Das is ja jetzt für die schule und ich sollte es eigentlich mit den mitteln machen die wir auch gelernt haben.....
    könntest du mir erklären was das "std::" bedeutet dann hätte ich ne begründung
    http://www.united-forum.de/signaturepics/sigpic32127_15.gif

  13. #13
    Am besten erkläre ich erstmal was ein Namensraum (engl. Namespace) ist und wozu er dient.
    Ein Namensraum erweitert die Definition einer Funktion oder einer Variablen (innerhalb des jeweiligen Namensraum) und die Zugehörigkeit zum Namensraum.

    Dies bedeutet faktisch, dass zwei Funktionen mit dem gleichen Namen existieren können, sofern sie zu unterschiedlichen Namensräumen gehören und somit Konflikte durch unterschiedliche Bibliotheken ausgeschlossen werden können, wenn beide eine Funktion mit dem gleichen Namen definieren. Da ein Entwickler nicht alle möglichen C++-Bibliotheken kennt und somit nicht alle möglichen schon verwendeten Namen von Funktionen etc. würde dies sonst sehr häufig zu Konflikten führen.

    Der Namensraum der Standard-Bibliotheken von C++ hat den Namen std (Standard).

    Einen Namensraum definiert man über:
    1.  
    2. namespace osbesNamespace
    3. {
    4. double mul(float a, float b)
    5. {
    6. return a * b;
    7. }
    8.  
    9. double add(float a, float b)
    10. {
    11. return a + b;
    12. }
    13. }
    14.  
    Somit gibt es im Namensraum osbesNamespace die Funktionen mul und add.

    Möchte man nun diesem Namensraum weitere Funktion in einer anderen Datei hinzufügen, so ändert sich an der schreibweise garnix.
    1.  
    2. namespace osbesNamespace
    3. {
    4. double sub(float a, float b)
    5. {
    6. return a - b;
    7. }
    8. }
    9.  
    Somit würde der Namensraum osbesNamespace nun die Funktionen mul, add und sub beinhalten.

    Um diesen Namensraum nun zu nutzen schreibt man:
    1.  
    2. #include "Datei_wo_add_und_mul_definiert_ist.h"
    3. #include "Datei_wo_sub_definiert_ist.h"
    4.  
    5. int main()
    6. {
    7. osbesNamespace::add(1, 2);
    8. osbesNamespace::mul(1, 2);
    9. osbesNamespace::sub(1, 2);
    10. }
    11.  

    Nun kann man sich natürlich vorstellen, dass es teilweise sehr lästig werden kann jedesmal "osbesNamespace::" zu schreiben, nur um etwas aus diesem Namensraum zu nutzen, gerade wenn man es ständig benötigt. Hier kommt using namespace ins Spiel.

    Äquivalent wäre somit zu obigem Programm auch:
    1.  
    2. #include "Datei_wo_add_und_mul_definiert_ist.h"
    3. #include "Datei_wo_sub_definiert_ist.h"
    4.  
    5. using namespace osbesNamespace;
    6.  
    7. int main()
    8. {
    9. add(1, 2);
    10. mul(1, 2);
    11. sub(1, 2);
    12. }
    13.  
    Der Nachteil ist jedoch, dass dadurch sowohl für andere Programmierer bei größeren Projekten nicht mehr geklärt ist welcher Namensraum nun wo gemeint ist und es zu unabsichtlichen Fehlern kommen kann, wenn man eigentlich einen anderen Namensraum nutzen wollte.

    Ich hoffe dies klärt die Frage und würde dich sonst an Google (Stichwort: Namensraum C++) und Wikipedia (Ist oben verlinkt) verweisen.

  14. #14
    vi Britannia
    Avatar von SgtMcPwnage
    Registriert seit
    26.03.2010
    Ort
    Area 10
    Alter
    22
    Beiträge
    4.098
    Nick
    SgtMcPwnage
    Clans
    G.I.N
    ok vielen dank
    http://www.united-forum.de/signaturepics/sigpic32127_15.gif

  15. #15
    Feldwebel
    Avatar von Gonzo
    Registriert seit
    13.07.2004
    Ort
    Berlin
    Alter
    46
    Beiträge
    1.669
    Zitat Zitat von Osbes Beitrag anzeigen
    Der Nachteil ist jedoch, dass dadurch sowohl für andere Programmierer bei größeren Projekten nicht mehr geklärt ist welcher Namensraum nun wo gemeint ist und es zu unabsichtlichen Fehlern kommen kann, wenn man eigentlich einen anderen Namensraum nutzen wollte.
    Schöne Erklärung, sollten aber 2 Funktionen mit dem selbem Namen in unterschiedlichen Namensräumen existieren, so definiert sich deren Gebrauch über die übergebenen Parameter, bzw. dem vorrangestelltem Object.
    Ist dir Klasse statisch und die Parameter identisch, müsste spätestens der Linker ne Fehlermeldung auschmeissen.
    Da ich mich mit dem objektorientierten Gedösel aber nicht so gerne beschäftige bin ich da dann auch nicht zu 100% sicher, alles andere wäre aber Wahnsinn

    MfG
    Gonzo

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •