Scheitere bei leichter aufgabe

Diskutiere Scheitere bei leichter aufgabe im Developer Network Forum im Bereich Hardware & Software Forum; Hi , hab mir mal überlegt das ich mir mal einen kleinen rechner zusammen bastle der plus und minus rechnen kann. #include <iostream.h> //...
  • Scheitere bei leichter aufgabe Beitrag #1
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Hi ,

hab mir mal überlegt das ich mir mal einen kleinen rechner zusammen bastle der plus und minus rechnen kann.

Code:
#include <iostream.h>   // Wenn ich <iostream> eingebe ( ohne h ) kommen 6 Fehler statt wie jetzt 2

int main()
{
    
    int zahl1;
    int zahl2;
    int wahl;
    int Ergebnis;
    
    cout <<"Geb die erste zahl ein\n";
    cin >> zahl1;
    cout <<"Geb die zweite zahl ein\n";
    cin >> zahl2;
    
        Ergebnis = zahl1 + zahl2;
        
    cout <<"Möchtest du plus(1) oder minus(2) rechnen?\n";
    cin >> wahl;
    
    if (wahl == 1 )
    {
      cout <<zahl1<< " plus " <<zahl2<< " gleich " <<Ergebnis<<;
    }
    if (wahl == 2 )
    {
      cout <<zahl1<< " plus " <<zahl2<< " gleich " <<Ergebnis<<;
    } 
      return 0;
}

Ich benutzte Dev-C++
 
  • Scheitere bei leichter aufgabe Beitrag #2
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
Code:
#include <iostream>
using namespace std;
int main() {
    
    int zahl1;
    int zahl2;
    int wahl;
    int Ergebnis;
    
    cout << "Gib die erste zahl ein" << endl;
    cin >> zahl1;
    cout << "Gib die zweite zahl ein" << endl;
    cin >> zahl2;
        
    cout <<"Moechtest du plus(1) oder minus(2) rechnen?" << endl;
    cin >> wahl;
    
    switch(wahl) {
        case 1:    Ergebnis = zahl1 + zahl2;
                   cout << zahl1 << " plus " << zahl2 << " gleich " << Ergebnis << endl;
                   break;
        case 2:    Ergebnis = zahl1 - zahl2;
                   cout << zahl1 << " minus " << zahl2 << " gleich " << Ergebnis << endl;
                   break;
        default:   cout << "Falsche eingabe" << endl;
                   break;
    } 
    
    system("pause");
    return 0;
}
 
  • Scheitere bei leichter aufgabe Beitrag #3
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

Du gibts grundsätzlich das Ergbnis von "zahl1+zahl2" aus, unabhängig davon, ob der Nutzer "+" oder "-" rechnen möchte.

Nic
 
  • Scheitere bei leichter aufgabe Beitrag #4
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
  • Scheitere bei leichter aufgabe Beitrag #5
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
eine frage noch : Wie lautet der code damit man den namen oben im titel sieht ?
 
  • Scheitere bei leichter aufgabe Beitrag #6
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
Code:
#include <windows.h>
using namespace std;
 
int main() {
    SetConsoleTitle("Der Titel");
    system("pause");
    return 0;
}

SetConsoleTitle setzt den Titel des Konsolenfensters auf den übergebenen String.
vergiss nicht die windows.h zu includen

lg,
patrick
 
  • Scheitere bei leichter aufgabe Beitrag #7
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
so...hoffentlich die letzte frage ^^

ich hab das programm jetzt auf weitere möglichkeiten geschrieben ( addition,subraktion,multiplikation und division)
Code:
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    int zahl1;
    int zahl2;
    int wahl;
    int ergebnis;
    
    SetConsoleTitle("Dennis Taschenrechner");
    cout << "Gib die erste zahl ein" << endl;
    cin >> zahl1;
    cout << "Gib die zweite zahl ein" << endl;
    cin >> zahl2;
    
    cout <<"Moechtest du plus(1), minus(2), mal(3) oder geteil(4) rechnen?" << endl;
    cin >> wahl;
    
    switch (wahl)
    {
           case 1:    ergebnis = zahl1 + zahl2;
            cout << zahl1 << " plus " << zahl2 << " gleich " << ergebnis << endl;
            break;
           case 2: ergebnis = zahl1 - zahl2;
            cout << zahl1 << " minus " << zahl2 << " gleich " << ergebnis << endl;
            break;
           case 3: ergebnis = zahl1 * zahl2;
            cout << zahl1 << " mal " << zahl2 << " gleich " << ergebnis << endl;
            break;
           case 4: ergebnis = zahl1 / zahl2;
            cout << zahl1 << " geteilt " << zahl2 << " gleich " << ergebnis << endl;
            break;
            default : cout << "Falsche Eingabe ! "<< endl;
            break;
       }
        system("pause");
        return 0;
}

Alles so weit so gut ...nur wenn geteilt rechnen will rechnet der was völlig falsches ( ausser graden zahlen ).Muss ich statt int , float benutzten ( fliesskommer zahlen ) ?wenn ja , wie genau muss dieses aussehen da ich ja mit "case" geschrieben hab und float nirgend deklaieren kann.
 
  • Scheitere bei leichter aufgabe Beitrag #8
S

Stefan

Guest
Genau, du deklarierst die Variablen als int, dann ist es nicht verwunderlich, wenn auch nur Integer als Ergebnis herauskommen. Ändere die Definition in float ab, dann kommt ein besseres Ergebnis heraus:
Code:
[B]float [/B]zahl1;
[B]float [/B]zahl2;
int wahl;
[B]float [/B]ergebnis;
 
  • Scheitere bei leichter aufgabe Beitrag #9
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
ok auch hingekrieg , lol noch eine frage ^^

wenn man den taschenrechner einmal benutzt , dan beendet sich dieser automatisch , wie kann mans ändern ? Ich glaub ich hab mal was über return gehört das man da was machen sollte .

Ich hoffe ich nerve nich mit den Fragen aber ich lerne halt dazu . :)
 
  • Scheitere bei leichter aufgabe Beitrag #10
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
Code:
#include <iostream>
#include <windows.h>
using namespace std;
int main() {
    float zahl1;
    float zahl2;
    int wahl;
    float ergebnis;
    bool weiter = true;
    
    SetConsoleTitle("Dennis Taschenrechner");
    
    while(weiter) {
        cout << "Gib die erste zahl ein" << endl;
        cin >> zahl1;
        cout << "Gib die zweite zahl ein" << endl;
        cin >> zahl2;
        
        cout <<"Moechtest du plus(1), minus(2), mal(3) oder geteil(4) rechnen? (5 fuer Beenden)" << endl;
        cin >> wahl;
        
        switch (wahl) {
            case 1:    ergebnis = zahl1 + zahl2;
                       cout << zahl1 << " plus " << zahl2 << " gleich " << ergebnis << endl;
                       break;
            case 2:    ergebnis = zahl1 - zahl2;
                       cout << zahl1 << " minus " << zahl2 << " gleich " << ergebnis << endl;
                       break;
            case 3:    ergebnis = zahl1 * zahl2;
                       cout << zahl1 << " mal " << zahl2 << " gleich " << ergebnis << endl;
                       break;
            case 4:    ergebnis = zahl1 / zahl2;
                       cout << zahl1 << " geteilt " << zahl2 << " gleich " << ergebnis << endl;
                       break;
            case 5:    weiter = false;
                       break;
            default:   cout << "Falsche Eingabe ! "<< endl;
                       break;
        }
        system("pause");
    }
    return 0;
}

frag ruhig :)

nur so lernt man was !

zum obigen: bis jemand 5 drückt ist weiter gleich true, somit bleibt man in der schleife, sonst beendet man das programm.

anm: die abfrage zum beenden sollte man besser extra einbauen und nicht nachdem man schon zahlen eingeben musste. sry, aber ich war dafür grad zu faul *schäm*

lg,
patrick
 
  • Scheitere bei leichter aufgabe Beitrag #11
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Hab mir jetzt noch überlegt wie ich den taschenrechner erweitern soll :
-Man darf auswählen wieviele zahlen gerechnet werden( Ist das zu schwer nacher weil man das mit klammern setzten muss ? Plus vor strichrechnung zb)
-Ist es möglich statt win32 konsolen auch mit etwas anderem zu starten ?
-Wie kann man die farbe ändern (farbe der schrift und der hintergrund )?
 
  • Scheitere bei leichter aufgabe Beitrag #12
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
*punkt vor strichrechnung meinte ich ( konnte nich editieren)

Falls irgentjemand eines der dinge weiss bitte schreiben :)
 
  • Scheitere bei leichter aufgabe Beitrag #13
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
-Man darf auswählen wieviele zahlen gerechnet werden( Ist das zu schwer nacher weil man das mit klammern setzten muss ? Plus vor strichrechnung zb)
-Ist es möglich statt win32 konsolen auch mit etwas anderem zu starten ?
-Wie kann man die farbe ändern (farbe der schrift und der hintergrund )?

ad 1)

obs zu schwer is, kann ich dir nicht sagen. - versuchs und schau wie weit du kommst. machbar is alles. auch das ;)
und wenns allein nicht geht helfen wir wieder :ja:

ad 2)

ja, ist es... bleib aber für den anfang dabei. ist leichter für die grundlagen.

ad 3)

für schrift und hintergrund gibts den befehl: system("color xx");
wobei die beiden x für hexadezimale werte für vorder/hintergrundfarbe stehen (also schrift und hintergrund). mit diesem befehl verändert man immer die farbe der GESAMTEN konsole.

einzelne buchstaben und deren hintergrund kann man mit SetConsoleTextAttribute(HANDLE console, int farbe); verändern.

Beispiel:
Code:
HANDLE  hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, 75);

die integer werte musste ausprobieren was welche farbkombi wird.

//TIP: wenn du die beiden möglichkeiten verbindest kannst du dir ne doch recht brauchbare prozedur schreiben ;)
 
  • Scheitere bei leichter aufgabe Beitrag #14
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Code:
#include <iostream>
#include <windows.h>
using namespace std;
int main() {
    float zahl1;
    float zahl2;
    float zahl3;
    int wahl1;
    int wahl2;
    float ergebnis;
    bool weiter = true;
   
    SetConsoleTitle("Dennis Taschenrechner");
   
    while(weiter)
    {
     cout <<"Willst du 2 Zahlen rechnen gib 1 ein\n";
     cout <<"Wenn du aber mit 3 Zahlen rechnen willst gib 2 ein\n";
     
     if ( wahl1 == 1)
     {
     cout <<"Moechtest du plus(1), minus(2), mal(3) oder geteil(4) rechnen? (5 fuer Beenden)" << endl;
        cin >> wahl1;
         cout << "Gib die erste zahl ein" << endl;
        cin >> zahl1;
         cout << "Gib die zweite zahl ein" << endl;
        cin >> zahl2;
       
       
        switch (wahl1) {
            case 1:    ergebnis = zahl1 + zahl2;
                       cout << zahl1 << " plus " << zahl2 << " gleich " << ergebnis << endl;
                       break;
            case 2:    ergebnis = zahl1 - zahl2;
                       cout << zahl1 << " minus " << zahl2 << " gleich " << ergebnis << endl;
                       break;
            case 3:    ergebnis = zahl1 * zahl2;
                       cout << zahl1 << " mal " << zahl2 << " gleich " << ergebnis << endl;
                       break;
            case 4:    ergebnis = zahl1 / zahl2;
                       cout << zahl1 << " geteilt " << zahl2 << " gleich " << ergebnis << endl;
                       break;
            case 5:    weiter = false;
                       break;
            default:   cout << "Falsche Eingabe ! "<< endl;
                       break;
     
     }
     if ( wahl2 == 2)
     {
         cout <<"Moechtest du plus(1), minus(2), mal(3) oder geteil(4) rechnen? (5 fuer Beenden)" << endl;
        cin >> wahl1;
         cout << "Gib die erste zahl ein" << endl;
        cin >> zahl1;
         cout << "Gib die zweite zahl ein" << endl;
        cin >> zahl2;
         cout << "Gib die dritte zahl ein" << endl;
        cin >> zahl3;
       
       
        switch (wahl2) {
            case 1:    ergebnis = zahl1 + zahl2;
                       cout << zahl1 << " plus " << zahl2 << " plus " << zahl3 << " gleich " << ergebnis << endl;
                       break;
            case 2:    ergebnis = zahl1 - zahl2;
                       cout << zahl1 << " minus " << zahl2 << " minus " << zahl3 << "gleich " << ergebnis << endl;
                       break;
            case 3:    ergebnis = zahl1 * zahl2;
                       cout << zahl1 << " mal " << zahl2 << " mal " << zahl3 << "gleich " << ergebnis << endl;
                       break;
            case 4:    ergebnis = zahl1 / zahl2;
                       cout << zahl1 << " geteilt durch " << zahl2 << "und geteil " << zahl3 << " gleich " << ergebnis << endl;
                       break;
            case 5:    weiter = false;
                       break;
            default:   cout << "Falsche Eingabe ! "<< endl;
                       break;
          }
        }
        system("pause");
    return 0;
} // <-- DER EINZIGSTE FEHLER , NUR WAS ?
als einzigste fehlermeldung steht :

expected `}' at end of input
 
  • Scheitere bei leichter aufgabe Beitrag #15
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

Code:
} // <-- DER EINZIGSTE FEHLER , NUR WAS ?
als einzigste fehlermeldung steht :

expected `}' at end of input

Du benötigst immer eine identische Anzahl an öffnenden und schliessenden Klammern. In Deinem Fall fehlt also (mindestens) eine schliessende Klammer im Code.

Nic
 
  • Scheitere bei leichter aufgabe Beitrag #16
WhiskeyCola16

WhiskeyCola16

Bekanntes Mitglied
Dabei seit
22.12.2001
Beiträge
971
Reaktionspunkte
1
Ort
Österreich
es fehlen sogar 2 ;)

Tip: Achte auf die einrückung deines codes. bei der ungarischen notation,
Code:
if(irgendeine prüfung)
{
    anweisungen
    .
    .
    .
}
welche du bevorzugt verwendest, sollte die schließende klammer genau unter der öffnenden sein (-->Übersichtlichkeit)
So vermeidest du es fehlende klammern zu übersehen.

weiters solltest du dir deine logik nochmal genau anschauen (Tip: Endlosschleife)

ich würde das problem mit der anzahl der zahlen so lösen:
anfangs fragst du mit wievielen zahlen gerechnet werden soll. dann erzeugst du ein float array in dieser größe welches du dann durch abfrage der zahlen belegst. (was du dann auch einfach als schleife machen kannst)
 
Zuletzt bearbeitet:
  • Scheitere bei leichter aufgabe Beitrag #17
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
Noch eine Frage ( die hab ich nich mal in google gefunden , kam immer was falsches )

Wie kann man daten mittels einer .exe erstellen ? Möchte .txt und/oder .cfg's erstellen.
 
  • Scheitere bei leichter aufgabe Beitrag #18
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

dafür benötigst Du die Bibliotheksfunktionen für die Dateiverarbeitung, also beispielsweise fopen(), fclose(), fread() und fwrite().

Nic
 
  • Scheitere bei leichter aufgabe Beitrag #19
Ultimate Construct

Ultimate Construct

Bekanntes Mitglied
Dabei seit
19.06.2006
Beiträge
4.137
Reaktionspunkte
0
ich hab dabei gegooglet und ein paar versuche gestartet , aber irgentwie klappt es nie .
Mein projekt : Ich wollte ein Teamspeak programm machen was den benutzter fragt wie die IP lautet , danach den Namen.Diese soll er dann in eine Textdatei speichern ( vllt noch das er diese txt datei abruft und in der win32 konsole anzeigt , aber nacher).

Code:
#include <stdio.h>
int main ()
{
    int ip;
    int name;
  FILE * test;
  test = fopen ("TS2save.txt","wt");
  if (test!=NULL)
  {
    fputs ("TS2 Saver by XGolDenX",test);
    cout <<"\nWie ist die IP ? Und gib am Ende den Namen ein\n"<< endl;
    cout <<"Beispiel:127.0.0.1:20100  <-- TS2 Test IP"<< endl;
    cin >> ip;
    cin >> name;
    fputs (<<ip<< <<name<<,test);
    fclose (test);
  }
  return 0;
}

Ich hab dabei wenig ahnung da ich zb über diese fopen() sachen nie was gelesen hab .
 
  • Scheitere bei leichter aufgabe Beitrag #20
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

Code:
#include <stdio.h>
int main ()
{
    int ip;
    int name;
  FILE * test;
  test = fopen ("TS2save.txt","wt");
  if (test!=NULL)
  {
    fputs ("TS2 Saver by XGolDenX",test);
    cout <<"\nWie ist die IP ? Und gib am Ende den Namen ein\n"<< endl;
    cout <<"Beispiel:127.0.0.1:20100  <-- TS2 Test IP"<< endl;
    cin >> ip;
    cin >> name;
    fputs (<<ip<< <<name<<,test);
    fclose (test);
  }
  return 0;
}
Ich hab dabei wenig ahnung da ich zb über diese fopen() sachen nie was gelesen hab .
Da Du C++ verwendest/verwenden möchtest, solltest Du auch mit den C++ Klassen und Methoden arbeiten. Aktuell ist das eher ein C/C++ Mischmasch. Weiterhin kannst Du weder die IP-Adresse noch den Namen als "int" deklarieren.

Probiers mal damit:
Code:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;


int main ()
{
  string ip;
  string name;
  ofstream test;
  test.open ("TS2save.txt");
  if (test!=NULL)
  {
    test << "TS2 Saver by XGolDenX" << endl;
    cout <<"\nWie ist die IP ?" << endl;
    cin >> ip;
    cout << "\nWie ist der Name ?" << endl;
    cin >> name;
    test << ip << endl;
    test << name << endl;
    test.close();
  }
  return 0;
}

Nic
 
Thema:

Scheitere bei leichter aufgabe

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben