Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » absoluter anfänger!! wo it der fehler???

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
04.01.2004, 19:20 Uhr
axomento



Habe jetzt einfach mal das lesen der schweren Kost aufgehört und probiert mir ein kleines Programm zu machen.

Es soll mich abfragen ob wie das deutsche Wort auf Französisch heißt und danach richtig oder falsch ausgeben. Wenn das hier erstmal funzt will ich dann versuchen das er bei "Falsch" wieder von vorne anfängt.

Code:


C++:
#include <stdio.h>
#include <iostream.h>

int main()  
{
char i = 148;  // ü
char k[10]="test";
char j[10];



  cout<<"Franz"<<i<<"sisch Vokabeltrainer 0.1" <<endl<<endl;
  cout<<"Aufgabe:1"<<"          "<<"Fahrrad"<<endl<<endl;

cin>>j;

   if (k == j)
        cout<<"Richtig";

        else
        cout << "Falsch";


        getchar();
        getchar();
   cin.get();
   cin.get();


  return 0;
}



Wäre nett wenn ihr mir bei diesem eigentlich verdammt einfachen Problem helfen könntet!!

Gruß axo

Bearbeitung von 0xdeadbeef:

Tags muss man nur einmal schließen...


Dieser Post wurde am 04.01.2004 um 19:27 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.01.2004, 19:25 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


dein problem liegt bei k==j

da vergleichst du adressen und nicht die strings....
Lösung ist entweder std::string (der schützt dich auch besser vor bufferoverflows) statt char-array zu nehmen weil da der ==-operator so implementiert ist wie du dir das vorstellst oder du verwendest die funktion strcmp....

C++:
if(!strcmp(k,j))....




hier mal beide varianten wobei die 2. vorzuziehen ist...


C++:
#include <iostream>
#include <string>
using namespace std;
int main(){
char i = 148;  // ö
char k[10]="test";
char j[10];

cout<<"Franz"<<i<<"sisch Vokabeltrainer 0.1" <<endl<<endl;
cout<<"Aufgabe:1"<<"          "<<"Fahrrad"<<endl<<endl;
cin>>j;
  if (!strcmp(k,j)) cout<<"Richtig";
  else cout << "Falsch";
  return 0;
}

int main(){
char i = 148;  // ö
string j,k="test";

cout<<"Franz"<<i<<"sisch Vokabeltrainer 0.1" <<endl<<endl;
cout<<"Aufgabe:1"<<"          "<<"Fahrrad"<<endl<<endl;
cin>>j;
if (k==j) cout<<"Richtig";
else cout << "Falsch";
return 0;
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 04.01.2004 um 19:33 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.01.2004, 19:37 Uhr
0xdeadbeef
Gott
(Operator)


Oh, oh, du mischst da C und C++ ganz schön durcheinander. Das sind wir sonst nur von Windalf gewöhnt

Ich würde mich auf einen Stil einigen, das macht die ganze Sache nachher einfacher und übersichtlicher. In C zum Beispiel würdest du das so machen:

C++:
#include <stdio.h>
#include <string.h>

int main()  
{
  char k[10]="test";
  char j[10];

  printf("Französisch Vokabeltrainer 0.1\n\n");
  printf("Aufgabe:1          Fahrrad\n\n");

  fgets(j, 10, stdin); /* In j eine Zeile, aber weniger als 10 zeichen aus der Standardeingabe lesen */

  if (strcmp(j, k) == 0)  /* strcmp gibt 0 zurück, wenn j und k das gleiche enthalten */
        printf("Richtig\n"); /* wenn j im Alphabet vor k kommt, eine negative Zahl, sonst eine positive */
  else
    printf("Falsch\n");

  getchar();
  return 0;
}


In C++ sinnvollerweise so:

C++:
#include <iostream> //iostream.h ist veraltet
#include <string>

int main() {
  std::string j, k = "test"; // std ist der Namespace, in dem alle Bezeichner der STL liegen.

  std::cout << "Französisch Vokabeltrainer 0.1" << std::endl << std::endl
            << "Aufgabe 1: Fahrrad" << std::endl << std::endl;

  std::cin >> j;

  if(j == k) // std::string definiert einen ==-Operator, der den Vergleich übernimmt.
    std::cout << "Richtig" << std::endl;
  else
    std::cout << "Falsch" << std::endl;

  std::cin.get();

  return 0;
}


Ich bin sicher, dass dieser Code neue Fragen aufwirft, aber dafür sind wir ja hier :wink;
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 04.01.2004 um 19:38 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.01.2004, 19:39 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Oh, oh, du mischst da C und C++ ganz schön durcheinander. Das sind wir sonst nur von Windalf gewöhnt


Ich nehm das jetzt mal als Kompliment
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.01.2004, 19:41 Uhr
0xdeadbeef
Gott
(Operator)


Eigentlich war das aber...ach egal.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.01.2004, 19:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
Hat dir meine Friedenspfeife nicht geschmeckt...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.01.2004, 19:49 Uhr
0xdeadbeef
Gott
(Operator)


Hatten wir Krieg?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.01.2004, 19:53 Uhr
(un)wissender
Niveauwart



Auf welcher Seite darf ich mitmachen?

--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.01.2004, 19:57 Uhr
0xdeadbeef
Gott
(Operator)


Wenn du das (un) aus deinem Namen streichst, nehm ich dich gerne. Wenn du nur die Klammern wegnimmst, bist du bei Windalf besser aufgehoben

Ah, ja. Selbstvertrauen ist alles...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 04.01.2004 um 19:57 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
04.01.2004, 19:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
nein du hastest in diesem Thread eben zu erst gestichelt....

@(un)wissender
du solltest dringend ne runde CS spielen...
--
...fleißig wie zwei Weißbrote
 
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: