Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 12:57

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

Advertisement



statement Übung, bin verwirrt.

Discussion on statement Übung, bin verwirrt. within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elemeNt_123's Avatar
 
elite*gold: 0
Join Date: Jul 2016
Posts: 96
Received Thanks: 6
statement Übung, bin verwirrt.

Hallo,

ich habe mir ein Guide zu den ganzen Keywörtern wie : If, do, for usw. angeschaut und auch ein Beispiel abgeschrieben. Jedoch wollte ich das Beispiel etwas erweitern, damit ich noch etwas mehr lerne. Ich poste erstmal den Code und sage dann, wo der Haken ist.

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

using namespace std;

void hochfahren()
{
    do {
        int x++;

    }
        while (x !=10);
}
int main()
{
 char buchstabe;
 int x;
 cout << "Fahrstuhl Countdown !";
  for (x = 10; x > 0; x--){
        cout << x << ", ";

    }
    cout << "Ende" << endl << endl;
    cout << "Wollen Sie wieder nach oben ?" << endl << "Antworte mit y/n ";
    cin >> buchstabe;
    if (buchstabe == 'y')
    {
     hochfahren();
     cout << x;
    }
    else if (buchstabe == 'n') cout << "danke" << endl;

    system("PAUSE");
    return 0;
}
Beim Fahrstuhl Countdown, wo es von 10 bis 1 geht, läuft alles wunderbar (sollte es auch, da ich es abgeschrieben hab ). Das mit dem Hochfahren hab ich hinzugefügt und zurzeit wird mir ein Syntax Error bei der Void Funktion angezeigt.

Jedoch bin ich mir auch nicht mal sicher, ob das Programm überhaupt richtig laufen würde, wenn ich den Syntax Fehler behebe. Ich hab mir das so gedacht :
Falls man "y" eintippt, so soll zur Funktion hochfahren gewechselt werden. In dieser Funktion soll mit "do" x erhöht werden, solang x noch nicht 10 ist.

edit : Zum Syntax error

Mit initializer wird doch so was wie int gemeint, oder nicht ? Gerade weil ich int vor x geschrieben habe, bin ich etwas verwirrt. ^^
elemeNt_123 is offline  
Old 08/01/2016, 06:22   #2

 
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
Deine Funktion müsste so aussehen:

Code:
void hochfahren()
{
    int x = 0;
    do {
        x++;
    } while(x != 10);
}
In dem Moment, indem du diese Variable hochzählen willst, wird sie erst erstellt, und da erwartet der Compiler eine Initialisierung, deswegen der Fehler.
BladeTiger12 is offline  
Thanks
2 Users
Old 08/01/2016, 11:43   #3
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Quote:
Originally Posted by BladeTiger12 View Post
Deine Funktion müsste so aussehen:

Code:
void hochfahren()
{
    int x = 0;
    do {
        x++;
    } while(x != 10);
}
In dem Moment, indem du diese Variable hochzählen willst, wird sie erst erstellt, und da erwartet der Compiler eine Initialisierung, deswegen der Fehler.
Das was du da tust könnte aber eher unerwartet sein. Du hast damit 2 unterschiedliche Variablen x. Es wird in dem Fall zwar das gleiche ausgegeben, aber falls z.B. der Fahrstuhl auf Ebene 3 angehalten werden soll, tut der Code nichtmehr das richtige.

Die richtige Version wäre entweder eine globale Variable x zu erstellen, oder der Funktion hochfahren x als Referenz zu übergeben.

Code:
int x = 10;

void hochfahren(){x++; /*...*/}

void main(){x-- /*...*/}
Wenn du so auf x zugreifst, greifen beide Funktionen auf das gleiche x zu. Da globale Variablen manchmal als unschön angesehen werden könntest du x auch als Referenz übergeben:

Code:
void hochfahren(int& x){x++;}

void main(){
    int x = 10;
    hochfahren(x);
}
Dadurch ist x nicht lokal, aber hochfahren kann das x aus main trotzdem noch ändern. Pointer würde genauso gut gehen, ist aber als schlechter Stil angesehen (da du theoretisch nen nullptr übergeben könntest und dann in hochfahren darauf prüfen müsstest).
th0rex is offline  
Thanks
2 Users
Old 08/01/2016, 15:20   #4
 
elemeNt_123's Avatar
 
elite*gold: 0
Join Date: Jul 2016
Posts: 96
Received Thanks: 6
Hat mit einer globalen Variable geklappt, danke !
elemeNt_123 is offline  
Old 08/01/2016, 18:22   #5
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Quote:
Originally Posted by .Scy View Post
globale variablen kannst du hier auch ganz einfach umgehen, was man immer tun sollte.

anstelle von
Code:
void hochfahren()
sollte die funktion so aussehen:
Code:
int hochfahren(int x){
return ++x;
}
das gleiche halt mit -- fürs herunterfahren.
Für nen einzeiler brauche ich keine Funktion lol. Und wenn er halt keine globalen Variablen will, dann Referenzen wie ich ja schon geschrieben habe.
th0rex is offline  
Old 08/01/2016, 22:00   #6
 
C_O_R_E's Avatar
 
elite*gold: 0
Join Date: Jul 2014
Posts: 264
Received Thanks: 54
Da du dich noch neu mit der Programmiersprache befasst, reicht es erstmal zu wissen, dass das mit der Globalen Variablen Deklaration funktioniert hat.Im weiteren Laufe wirst du neue "Tools" (genauer Sprachelemente) kennen lernen mit denen du effizientere Lösungswege findest. Eine dieser Lösungswege wäre die Übergabe über die Referenz (Call by reference). Mach dir also keinen Stress, wenn du erstmal keine Kenntnis über Referenzen hast, dass wird im Laufe des Lernens noch begegnen.
C_O_R_E is offline  
Reply


Similar Threads Similar Threads
Ich bin verwirrt.
06/26/2013 - Off Topic - 21 Replies
Hey Leute, Zuerst einmal: NEIN ES HAT NICHTS MIT HAUSAUFGABEN ZU TUN! Ich bin verwirrt mit den folgenden drei Begriffen: Antithese Paradoxon
Verwirrt !!!
11/08/2011 - Last Chaos - 22 Replies
Ähm dumme frage, aber geht überhaupt ein Server ( ausser OFFI ) Keine lust alle Threads durchzulesen ! * EDIT : Deutschsprachige Danke
Verwirrt :S
03/08/2008 - Metin2 - 5 Replies
hi, bin zZ ein Sura lvl 27 und ja der braucht ewig zum Lvln ich benutz zZ nur Attackspeed halt. Ich würd gerne mal wissen welchen Cheat ihr benutzt, denn es gibt hier so viele da weiß ich garnet welches das beste ist. Was auch sehr nett wäre welches Angelcheat ihr benutzt :), denn ich bin so pleite ich muss doch irgendwie Geld bekommen da denk ich mal das Angelcheat das sinnvollste ist oda? mfg haihappen1337
Verwirrt
04/05/2007 - WoW Private Server - 3 Replies
könntet ihr mir bitte hier rein Posten was ich dlen muss um WoW BC Emu zu haben und dann einen Link zu einer Anleitung Deustch oder Englisch das egal. Habe jetzt viele Threads gelesen und bin verwirrt und kA was ich alles dlen muss.



All times are GMT +1. The time now is 12:58.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

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