Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » hier funzt nüscht;(

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
22.07.2004, 12:06 Uhr
~GanzArgAhnugslos
Gast


Jo hallo erstmal

also ich hab grad angefangen mit c++ und versuch nun kleine proggis zu schreibern aber irgentwie will das alles nicht so wie ich es will ^^

ich hab immo folgendes prob auf das ich keine lösung finde

ich will ein kleines billiges prog schreiben das alle zahlen die eingegeben werden verdoppelt,
für euch sicher nichts interressantes

also:
-----

C++:
#include <iostream>
using namespace std;
int rechenfunktion()  
{  
    cout << "tippen Sie nun eine Zahl ein" << endl;
    getchar();
    if getchar = char  cout << "ich sachte eine Zahl du Säck^^!" << endl;
    if getchar = dec   cout << dec*2 <<endl;
    else return 0;
    return 0;
}

    int main()
    {
        cout << "Willkommen bei meinem tollen verdopplungsproggi" << endl;
        cout << "Alle Zahlen die Sie hier eintippen werden verdoppelt" << endl;
        getchar();
        rechenfunktion();
        }


-------

Was hab ich da falsch gemacht? ich hab zwar (noch) nicht so die ahnung aba nach meinem logikempfinden sollte das eigentlich gehen oder hab ich nur was bei der syntax vergessen oder ist das kompletter schrott was ich da gemacht hab? wenn ich das kompelieren will sagt er mir das da 1 fehler drinn ist aba ka wo ich bin schon froh das da nur einer drinn sein soll :P

wenn mir jmd nen kurzen denkanstoß geben könnte würd ich mich freuen ^^


Bearbeitung von typecast:
cpp-Tags gesetzt

Dieser Post wurde am 22.07.2004 um 12:43 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.07.2004, 12:17 Uhr
Tommix



Hallo

Zitat:

if getchar = char ...
if getchar = dec ...


Eine derartige Typprüfung gibt es nicht. Darüberhinaus muss das Argument von if in Klammern und auf Gleichheit prüft man mit ==.
Evtl. willst Du eher so was:

C++:
#include <iostream>
using namespace std;

void rechenfunktion()
{
    int zahl;
    cin >> zahl;
    cout << "Verdoppelt: " << 2*zahl;
}

int main()
{
    cout << "Willkommen bei meinem tollen verdopplungsproggi" << endl;
    cout << "Alle Zahlen die Sie hier eintippen werden verdoppelt" << endl;
    rechenfunktion();
}



- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.07.2004, 12:46 Uhr
freshman



die Eingabeprüfung könnte dann nach dem cin so aussehen:

C++:
if( cin.fail() ){
  cerr << "ich sachte eine Zahl du Säck^^!" << endl;
}
else{
  cout << "Verdoppelt: " << 2*zahl << endl;
}

--
freshman.say("Wer nicht an Wunder glaubt ist kein Realist!\a");
while(1)freshman.ask(sillyQuestion);
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.07.2004, 12:48 Uhr
typecast
aka loddab
(Operator)


Um festzustellen, ob auch wirklich eine Zahl eingeben wurde, kann man nach dem einlesen der Zahl ueberprüfen, ob die Operation gut ging:


C++:
if (!(std::cin >> zahl)) {
   std::cout << "Es wurde keine Zahl eingeben" << std::endl;
   cin.clear();
}



Das ist übringes ANSI C++ deshalb ab ins ANSI Forum
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.07.2004, 12:48 Uhr
~ganzArgAhnugslos
Gast


danke für die hilfe

ich habs auch fast ^^

ich will aber das if und else mit drinn haben (nur damit ichs peile^^)

ich mit deiner hilfe jetzt das hier zu stande gebracht ^^

C++:
#include <iostream>
using namespace std;
int rechenfunktion()
{
cout << "tippen Sie nun eine Zahl ein" << endl;
int zahl;
cin >> zahl;
if (zahl==zahl)  cout << zahl*2 <<endl;
else (cout << "Ich sachte eine Zahl du Säck^^" << endl);
return 0;
}

int main()
{
cout << "Willkommen bei meinem tollen verdopplungsproggi" << endl;
cout << "Alle Zahlen die Sie hier eintippen werden verdoppelt" << endl;
getchar();
rechenfunktion();
}


funktioniert auch aba das "else" führt er nich aus d.h. wenn ich anstatt einer zahl ein paar buchstaben eingebe rechnet der das auch aus (warscheinlich in hexa) das war so aber nicht geplant

aber das krieg ich noch raus ^^

also thx 4 help


Bearbeitung von Pablo:

Benutze CPP Tags selber, danke


Dieser Post wurde am 22.07.2004 um 13:40 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.07.2004, 13:12 Uhr
Tommix



Bitte Quelltext beim posten mit [ cpp ] und [ /cpp ] (ohne Leerzeichen) umklammern, dann ist er besser lesbar.

Zitat:
zahl==zahl
ist natürlich immer wahr, zahl ist eine Variable, die den eingegebenen Wert enthält. Du musst schon eine der oben vorgeschlagenen Methoden verwenden. Wenn Du Buchstaben eingibst ist der Inhalt von Zahl undefiniert, sie enthält, was dort eben grad im Speicher stand.

- Tommix

Dieser Post wurde am 22.07.2004 um 13:13 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.07.2004, 13:21 Uhr
virtual
Sexiest Bit alive
(Operator)


Mal der Reihe nach:

C++:
int rechenfunktion()
{


beginnt die Funktion

C++:
cout << "tippen Sie nun eine Zahl ein" << endl;


Schreibt eine Eingabeaufforderung.


C++:
int zahl;


Definiert eine Variable, die meistens so 32 Bit lang ist (Hängt von der Platform ab, die Du benutzt). "zahl" ist also ein Name für einen Speicherbereich, in dem eine ganze Zahl mit 32 Bit reinpassen.


C++:
cin >> zahl;


Leist in den og. Speicherbereich ein Zahl ein. Wenn Du "123" eintippst, wird folglich die Zahl 123 oder eben das Bitmuster 00000000 00000000 00000000 01111011. Wenn Du jedoch "abc" eingibst, dann wird in cin vermerkt, daß sich die Eingabe nicht in eine Zahl verwandeln ließ und zahl bleibt unverändert.


C++:
if (zahl==zahl) cout << zahl*2 <<endl;
else (cout << "Ich sachte eine Zahl du Säck^^" << endl);


Ist einfach glewichzusetzen mit

C++:
cout << zahl*2 <<endl;


weil der Hinhalt einer variablen stets identisch mit sich selbst ist.


C++:
return 0;
}


Ende des dings.

Alternative (richtig):

C++:
int rechenfunktion()
{
cout << "tippen Sie nun eine Zahl ein" << endl;
int zahl;
cin >> zahl;
if (cin) cout << zahl*2 <<endl;
else { cin.clear(); /* Über cout den user beschimpfen */ }
return 0;
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.07.2004, 13:42 Uhr
~ganzArgAhnungslos
Gast


ok das hab ich jetzt gerafft

ich hab das jetzt so gemacht:


C++:
#include <iostream>
using namespace std;
int rechenfunktion()
{
cout << "tippen Sie nun eine Zahl ein" << endl;
int zahl;
cin >> zahl;
if( cin.fail() )
  cout << "eine Zahl bitte!" << endl;
else
  cout << "Verdoppelt: " << 2*zahl << endl;
}

int main()
{
cout << "Willkommen bei meinem tollen verdopplungsproggi" << endl;
cout << "Alle Zahlen die Sie hier eintippen werden verdoppelt" << endl;
getchar();
rechenfunktion();
}


ich hätte zwar jetzt noch 1000 fragen
zb warum du bei
C++:
else { cin.clear(); /* Über cout den user beschimpfen */ }
wieder "{" klammern gesetzt hast (dache das währ alles eine funktion) oder warum bei :
C++:
if( cin.fail()
ein "." zwischen cin und fail() muss aber ich schätze das würde nur eine endlose fragenkette auslösen

also hab ich nur noch eine frage
kann mir jmd nen link geben wo ich die "Komplette" c++ syntax herkriege (am besten noch kostenlos ^^) dann würde ich auch peilen was ich da eigentlich eintippe weil die tutorials durch die ich mich hier grade Prügle sind doch etwas mau an informationen

aber auf jedenfall schonmal ein dickes [B]Danke[/B] für die schnelle hilfe
hätte nicht geadcht das das board hier so gut besucht ist ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.07.2004, 14:11 Uhr
invalid_username



erstens : mach die funktion doch void .. ist doch käse ne int funktion zu machen wenn sie immer return 0; hat..
2. else { cin.clear(); ist nur ein tippfheler
natürlich heisst es


C++:
else cin.clear();

cin ist doch nur ein input-stream und clear eine methode des streams soweit ich weiss
und über den '.'-operator kanns du also über cin auf sein claer zugreifen

so wie getline wenn man cin.getline(char*,int ); nimmt

ps da man int main() nimmt MUSS man auch nen reuturn angeben also
bitt return 0, am ende der main
--
((void)*)0

Dieser Post wurde am 22.07.2004 um 14:12 Uhr von invalid_username editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.07.2004, 14:41 Uhr
Tommix



@invalid_username:
Bei 2. irrst Du mehrfach.
1. Ist ganz hinten in der Zeile die schließende Klammer.
2. Soll der Kommentar natürlich durch Code ersetzt werden.
3. Hat virtual das gepostet, weswegen es nicht falsch sein kann *schleim*.

@GanzArgAhnugslos:
Ohne die geschweiften Klammern gehört nur ein Befehl zu dem else-Zweig. Mit den Klammern fasst man mehrere Anweisungen zu einer sg. Verbundanweisung zusammen, d.h. der ganze Block wird nur ausgeführt, wenn die Bedingung bei if falsch ist.
Sieh mal im Forenheader unter Ebooks nach, ob Du etwas für Dich passendes findest (C++ in 21 Tagen z.B.).

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: