AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C++] Problem bei Stringverleich

Ein Thema von 3_of_8 · begonnen am 8. Feb 2006 · letzter Beitrag vom 8. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#1

[C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 19:59
Morgen.

Ich hab einen char op; und will den mit Stringkonstanten vergleichen.

Der Compiler meckert aber dort:

Code:
if(op=="+"||op=="-"||op=="*"||op=="/") break;
Die Fehlermeldung: ISO C++ forbids comparison between pointer and integer

Wenn ich statt char op; char op[1]; schreibe (ist ja maximal ein Zeichen lang) dann ist die Bedingung immer false.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:03
In C unterscheidet sich ein Char von einem string auch in der schreibweise:
Code:
//String:
"Dies ist ein String"
//Char
'c'
Ein einfaches Hochkomma verwenden dürfte also helfen

Zitat von 3_of_8:
Wenn ich statt char op; char op[1]; schreibe (ist ja maximal ein Zeichen lang) dann ist die Bedingung immer false.
Das liegt daran, dass C hier konsistent ist und auch Strings 0-Indiziert, d.h. um ans erste element zu kommen: op[0] verwenden

greetz
Mike


Edit:
Zitat von Chakotay1308:
[edit]Och Mist... -.- Der blöde Info-1-Student aus München war schneller und richtiger als ich. [/edit]
Tja, entweder man hats, oder man hats nicht
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:04
Klammern.
Code:
if( (op=="+") || (op=="-") || (op=="*") || (op=="/") ) break;
Von Java weiß ich zwar, dass == stärker bindet als ||, allerdings weiß ich nicht, wie das bei C++ ist. Also würde ich mal davon ausgehen, dass C++ hier eine korrekte Klammerung erfordert.

Chris

[edit]Och Mist... -.- Der blöde Info-1-Student aus München war schneller und richtiger als ich. [/edit]
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:12
OK, hier mal mein ganzer Code, funzt nämlich immer noch nicht. Und == hat Vorrang vor ||.

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

int main(void){
 char op[1];
 int oprnd1, oprnd2, result;
 while(true){
  cout<<"Bitte geben sie einen arithmetischen Operator ein: ";
  cin>>op;
  if(op=='+'||op=='-'||op=='*'||op=='/') break;
  cout<<"Ungültiger Operator: "<<op<<"\n";
 }
 cout<<"Bitte geben sie den ersten Operanden ein: ";
 cin>>oprnd1;
 cout<<"Bitte geben sie den zweiten Operanden ein: ";
 cin>>oprnd2;
 if(op=="+") cout<<oprnd1<<"+"<<oprnd2<<"="<<oprnd1+oprnd2;
 if(op=="-") cout<<oprnd1<<"-"<<oprnd2<<"="<<oprnd1-oprnd2;
 if(op=="*") cout<<oprnd1<<"*"<<oprnd2<<"="<<oprnd1*oprnd2;
 if(op=="/") cout<<oprnd1<<"/"<<oprnd2<<"="<<oprnd1/oprnd2;
 getchar();
}
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:16
Code:
while(eingabe)
{
  cout<<"Bitte geben sie einen arithmetischen Operator ein: ";
  cin>>op;
  switch(op)
  {
  case '+':
  case '-':
  case '*':
  case '/':
  eingabe = false;
  break;

  default:
  cout<<"Ungültiger Operator: "<<op<< endl;
  break;

  }
}
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#6

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:16
dann machs halt mit strcmp( OP, "+" )
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:18
Teste ich wann anderes mal, heute habe ich irgendwie keine Lust mehr...
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#8

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:25
char op; und nich char op[1];
zweites dekalriert einen Zeiger auf char also char*
Gruß, Jan
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:32
Aha. Ich checke das zwar immer noch ned so ganz, aber egal.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#10

Re: [C++] Problem bei Stringverleich

  Alt 8. Feb 2006, 20:36
Naja C/C++ ist zum Teil nich ganz easy, wenn man Delphi gewohnt ist

Also etwa so:

Code:
int main(void)
{
  char op;
  int oprnd1, oprnd2;
  while(true)
  {
    cout << "Bitte geben sie einen arithmetischen Operator ein: ";
    cin >> op;
    if(op == '+' || op == '-' || op== '*' || op == '/')
      break;
    cout << "Ungültiger Operator: " << op << "\n";
  }
  cout << "Bitte geben sie den ersten Operanden ein: ";
  cin >> oprnd1;
  cout << "Bitte geben sie den zweiten Operanden ein: ";
  cin >> oprnd2;
  switch(op)
  {
    case '+':
      cout << oprnd1 << "+" << oprnd2 << "=" << (oprnd1 + oprnd2);
      break;
    case '-':
      cout << oprnd1 << "-" << oprnd2 << "=" << (oprnd1 - oprnd2);
      break;
    case '*':
      cout << oprnd1 << "*" << oprnd2 << "=" << (oprnd1 * oprnd2);
      break;
    case '/':
      cout << oprnd1 << "/" << oprnd2 << "=" << (oprnd1 / oprnd2);
      break;
  }
  getchar();
}

Wobei noch zu erwähnen wäre, das du bei "/" wohl die Operanten nach double casten mußt, sonst gibts keine exakten Ergebnisse..
Gruß, Jan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz