Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

13.11.2011, 20:23

Du hast sogar mehrere Antworten darauf bekommen! Ich sehe mindestens 3 gültige.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Lyb

Frischling

  • »Lyb« ist der Autor dieses Themas
  • Private Nachricht senden

12

13.11.2011, 20:36

Du hast sogar mehrere Antworten darauf bekommen! Ich sehe mindestens 3 gültige.

Ich sollte wohl nochmal den Code posten um den es geht ;)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
/************************************************************************/
int main(void)
{
   int i, n, init, temp;

   do
   {
        printf("Geben Sie eine Zahl groesser 0 ein: ");
        scanf("%u", &init);     
        if (init < 0) 
        {
            printf("Falsche Eingabe!\n");
        }
    } while (init < 0);
    
    srand ( time(NULL) );               /* Sonst ist die gesuchte Zahl immer gleich ;)*/
    n = rand() % init;
    i = 0;
    
    do
    {
        printf("Raten Sie, welche Zahl gesucht wird!\n");
        printf("Geben Sie eine Zahl zwischen 0 und %d ein: ", init);
        scanf("%u", &temp);
        if (temp < 0) 
        {
            printf("Falsche Eingabe!\n");
            continue;
        }
        i++;
        if (temp < n)
        {
            printf("Die gesuchte Zahl ist groesser!\n");
        } 
        else if (temp > n)
        {
            printf("Die gesuchte Zahl ist kleiner!\n");
        }
    } while (temp != n);
    
    printf("Korrekt, Sie haben die gesuchte Zahl nach %d zuegen gefunden!\n", i);
    
    system("PAUSE");
    
    exit(0);
}

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

13.11.2011, 20:39

Ja, da ändert sich an der Korrektheit der Antworten nichts. Vielleicht solltest Du speziell nochmal die Antworten von Mark, .:!Batzer!:. und mir lesen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Lyb

Frischling

  • »Lyb« ist der Autor dieses Themas
  • Private Nachricht senden

14

13.11.2011, 21:02

Mark schrieb das scanf die Anzahl an erfolgreich eingelesenen Zeichen zurückgibt, das gleiche also was du gepostet hast.
Das bringt mir nichts, weil erstens brauche ich das garnicht und zweitens teste ich das auch nichtmal ab.

Batzer schrieb ich müsse init testen, tu ich das nicht in meinem code?

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

15

13.11.2011, 21:11

Wie wärs mit (ich bin einfach mal so freundlich und poste dir die Lösung):

C-/C++-Quelltext

1
2
3
printf("Geben Sie eine Zahl groesser 0 ein: ");     
if(!scanf("%u", &init)) 
        printf("Falsche Eingabe!\n");


Außerdem würde ich dir empfehlen C++ mit std::cin und std::cout zu verwenden, das ist deutlich besser zu handhaben, als diese alten C-Funktionen.

Lyb

Frischling

  • »Lyb« ist der Autor dieses Themas
  • Private Nachricht senden

16

13.11.2011, 21:21

wenn ich das einfach mal so übernehme, kann ich nach wie vor negative Zahlen eingeben, ohne das gemeckert wird.....

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

17

13.11.2011, 21:25

Ja was erwartest du von scanf()? Jede Arbeit nimmt dir die Funktion auch nicht ab. Dann musst du halt zusätzlich prüfen, ob eine negative Zahl eingegeben wurde.

Kleiner Tipp am Rande: Schau dir mal an, welche Zahlen du in int speichern kannst und was das Schlüsselwort "signed" macht.

Lyb

Frischling

  • »Lyb« ist der Autor dieses Themas
  • Private Nachricht senden

18

13.11.2011, 21:33

Das ist mir doch völlig klar.....
Ich hatte doch gepostet wie ich die Abfrage mache, also nochmal

int bla;

schanf("bla", &bla);
if (bla < 0)
{
prinf("Falsche Eingabe!\n");
}

und meine Frage war doch eigentlich eine ganz einfache....warum kann ich trotzdem negative Zahlen eingeben.
Denn das ein int signed ist dürfte hier eigentlich keine Rolle spielen, denn ich frage ob die variable kleiner 0 ist.
Und wenn eben beispielsweise -10 drin steht, muss die Ausgabe "Falsche Eingabe!" gemacht werden.

Haben wir nun alle Klarheiten beseitigt ;)
Micht interessiert scanf() nicht ;)

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

19

13.11.2011, 21:40

Mach mal ne Ausgabe von der Zahl direkt nach der Eingabe und dann guckste mal.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Lyb

Frischling

  • »Lyb« ist der Autor dieses Themas
  • Private Nachricht senden

20

13.11.2011, 21:46

Ich gebe -10 ein, die Ausgabe direkt nach der Eingabe ist, wie sollte es ander sein -10.
Dann geht die -10 direkt in die if Prüfung rein....(-10 < 0), das ist ja wohl wahr....
aber trotzdem gibt er nicht die Fehlermeldung aus....

Naja, ich glaube ich suche mal irgndwie anders die Antwort auf meine Frage.
Kann geclosed werden.

Werbeanzeige