Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Anfänger braucht Hilfe in C

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 <
000
15.06.2005, 21:41 Uhr
~Felix
Gast


Hi
Ich will einfach nur ein eingegebense Zeichen überprüfen ob es eine Zahl zwischen 1 und 10 ist. Dies wollte ich mit getchar machen und nicht mit scanf aber dies funktioniert nicht könnt ihr mir da Helfen ???
Vielen Dank


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

int main( void )
{

  int  a;
  
  
  printf("Gebsen sie eine Zeichen ein\n\n");
  a=getchar();
  if ((a>1)&&(a<10))
  printf("die zahl liegt im bereich");
  system("PAUSE");
   return 0;
}



mod edit: Benutze CPP Tags alleine

Dieser Post wurde am 15.06.2005 um 22:15 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.06.2005, 21:45 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


da du mit getchar 1. nur ein zeichen kriegst, kann es höchstens 1-9 ergeben und ansonsten ist das Zeichen 9 ungleich der Zahl 9, wenn dann müsstest du so vergleichen:

a > '0' && a < '9'

Ansonsten würde ich dir empfehlen einen String einzulesen und dann mit atoi bzw strtol den string in nen integer umzuwandeln
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.06.2005, 21:49 Uhr
Pler
Einer von Vielen
(Operator)


getchar() liefer bestimmt wie die funktion schon sagt ein char
wen man da dann drei eingibt, ist das nicht 3 sondern 51 oder so ( siehe ascii code )

und was ist system("PAUSE") ???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.06.2005, 21:50 Uhr
~felix
Gast


Vielen Dank für die Antwort
Könnte mir einer vielleicht zeigen wie das mit einem string geht ???
Oder gibt es noch eine leichtere Lösung??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.06.2005, 21:57 Uhr
Pler
Einer von Vielen
(Operator)


Ich würd sagen das von FloSoft ist schon die einfachste.


C++:
int main( void )
{
  int a;

  printf("Gebsen sie eine Zeichen ein\n\n");
  a=getchar();
  if ( ( a > '1' ) && ( a <= '9' ) )
      printf("die zahl liegt im bereich");
  
return 0;
}




Bearbeitung:

aber das problem mit zweistelligen zahle bleibt, und so gibt das alles eigentlich auch keinen sinn


Dieser Post wurde am 15.06.2005 um 21:58 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.06.2005, 22:41 Uhr
~felix
Gast


Vielen Dank für die Antwort
aber ich wollte dieses Programm noch erweitern das ich zwei Zahlen einlesen kann aber dies funktioniert bei mir leider nicht.



C++:
int main( void )
{
  int a,b;

  printf("Gebsen sie eine Zeichen ein\n\n");
  a=getchar();
  printf("Gebsen sie eine Zeichen ein\n\n");
  b=getchar();
  if ( ( a > '1' ) && ( a <= '9' )&& ( b > '1' ) && ( b <= '9' ))
      printf("die zahlen liegen im bereich");
  
return 0;
}




mod edit: benutze die CPP Tags selber

Dieser Post wurde am 15.06.2005 um 23:17 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.06.2005, 22:58 Uhr
Pler
Einer von Vielen
(Operator)


Ich nehme an, dass du nicht nach der zweiten zahl geragt wirst.
Du muss nach der eingabe der ersten noch ein fflush(stdin) machen, weil sonst das enter von der ersten noch gennommen wird.
alternativ könnte man auch zweimal getchar hinternander machen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.06.2005, 23:26 Uhr
CDW



fflush(stdin) ist leider nicht definiert , getchar liefert außerdem einen int *zunge rausstreck* , ansonsten finde ich das auch bei getchar unschön da es nicht wirklich zeichen für zeichen einliest. Hier ist eine Lösung(von vielen möglichen):

C++:
#include <stdio.h>
int main( void )
{
int zeichen;
int zahl;

printf("Gebsen sie eine Zahl ein\n\n");
zahl=0;
zeichen=getchar();

while ((zeichen>='0')&&(zeichen<='9'))
{
    zahl=zahl*10;
    zahl=zahl+(zeichen-48);
    zeichen=getchar();
}

printf("Sie haben %d eingegeben",zahl);


return 0;
}



mit der conio.h die leider windowsbezogen ist (man verzeihe mir dass es nicht ANSI ist ):

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

int main( void )
{
int zeichen;
int zahl;

printf("Gebsen sie eine Zahl ein\n\n");
zahl=0;

zeichen=getch();
putchar(zeichen);

while ((zeichen>='0')&&(zeichen<='9'))
{

    zahl=zahl*10;
    zahl=zahl+(zeichen-48);
    zeichen=getch();
    putchar(zeichen);
    fflush(stdout);
}

if (zeichen=='\n') printf("\n Sie haben %d eingegeben",zahl);
    else printf("\n Zeichen %c ungueltig",zeichen);

return 0;
}


Edit: versteh ich das jetzt richtig dass Du nur ein Zeichen einlesen möchtest? Dann ist meine Lösung wohl falsch.
--
EB FE

Dieser Post wurde am 15.06.2005 um 23:48 Uhr von CDW editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
15.06.2005, 23:31 Uhr
~Felix
Gast


Vielen Dank
Aber ich habe noch eine frage wie kann ich die zahlen die in dem erlaubten Bereich liegen in Integer umwandeln ??? Da ich sie später nemlich noch die Zahlen für eine Array(position) verwenden muss.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.06.2005, 00:45 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



C++:
char x = '9';
int y= x-'0';
printf("x: %c\ty: %d\n",x,y);


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: