Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hilfe ... hab ein problem

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 ] [ 3 ] [ 4 ] > 5 < [ 6 ] [ 7 ] [ 8 ] [ 9 ]
040
08.12.2003, 21:39 Uhr
Pablo
Supertux
(Operator)


war das Problem nicht schon gelöst? Was bereitet dir noch Probleme?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
041
08.12.2003, 21:57 Uhr
~cosmic
Gast


ok ...

habs fast hinbekommen ...
problem ist noch folgendes:


C++:
printf("Bitte geben Sie den Quotienten Q ein:\t");
scanf("%lf",&q);                    
if(!scanf("%Lf",&q)) printf("Fehler beim einlesen von q");
printf("\nBitte nur Werte zwischen 0 und 1 eingeben !\n");
    }
    while((q>=1)||(q<=0));
    do
    {
        x=s;
        s=s+pow(q,i);
        i=i++;
    }
    
    while(fabs(x-s)>0.00001);
    printf("\nSumme gleich %f bei %i durchgaengen\n",s,i);
}



ist jetzt auch abgesichert gegen falscheingabe ... allerdings hört das ganze nach falscheingabe auf ...
wie bekomm ich das jetzt hin das er z.b. nach falscheingabe erneut den scanf abfragt??? bin grade unfähig das richtig einzuarbeiten ...

abgesehen davon versteh ich noch nicht so ganz was

C++:
if(!scanf("%Lf",&q)) printf("Fehler beim einlesen von q");


macht ... funktionsweise???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
042
08.12.2003, 22:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich muss gestehen wie man das mit schlau mit scanf macht weiss ich spontan leider auch nicht

das sollte auch gehen

C++:
char buffer[100];
do{
     printf("\nBitte Quotienten eingeben: \n");
     f=atof(gets(buffer));
}while(f>=1 || f<=0);


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
043
08.12.2003, 22:06 Uhr
Pablo
Supertux
(Operator)


Also: Basics!!!

scanf liest eine formatierte Zeichenkette ein, deren Format mit den %.... defineirt wird und speichert die verschiedenen Werten in die Variablen, die man scanf übergibt. scanf liefert die Anzahl der eingelsene Werte zurück. D.h. wenn du zum Beispiel 3 Variablen übergibst, und alle drei daten richtig gelsen werden, dann liefert scanf 3 zurück. Wenn nicht dann weniger.


C++:
if(!scanf("%Lf",&q)) printf("Fehler beim einlesen von q");


Wenn scanf 0 zurückliefert, dann gibt das Programm eine Fehlermedlung aus, nämlich, dass nix eingelesen wurde.

Ich vermute, dass du x=0; s=0; i=0; hast, oder? Dann steht in x ,s und i "Müll". Füge x=0;s=0;i=0; vor die letzte do-Schleife.


Bearbeitung von Pablo:

Wenn du nur Zahlen wie 0.39 nehmen wirst, dann reicht meiner Meinung nach nur floats.

Damit man mit scnaf doubles einliest, muss man "%lf" oder "%Lf", jetzt bin ich mir nicht sicher, eins von beiden.


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 08.12.2003 um 22:09 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
044
08.12.2003, 22:09 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Pablo
ne problem ist die schleife.
Ich kannte das Problem bisher nicht da ich eingentlich nie mit scanf arbeite sondern immer strings nehme und mir die dann selber parse. Probier mal die schleife aus. Das wird eine Infinite Loop, weil der immer weiter einliest ohne auf eine neue eingabe zu warten
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
045
08.12.2003, 22:10 Uhr
Pablo
Supertux
(Operator)


Ach so, die erste Schleife ist das Problem? Ich werde mir das anschauen:
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
046
08.12.2003, 22:14 Uhr
~cosmic
Gast


also dein vorschlag was auch gehen sollte kann ich net noch mit einbringen ...
das geht ein stück zu tief in das was wir noch nicht können :-)

in assembler wärs ganz einfach ... dahäte ich dann ein jmp Zeile ...

was heißt denn das if !scanf(...) ?????
wieso ! ???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
047
08.12.2003, 22:16 Uhr
Pablo
Supertux
(Operator)



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

int main()
{
  double d;
  do {
      scanf("%lf", &d);
  } while(!(d>0 && d<1));  
  printf("%f\n", d);
  system("pause");
  return 0;
}



So macht man das mit der ersten Schleife
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
048
08.12.2003, 22:18 Uhr
~cosmic
Gast


hey ... hört auf in rätseln zu sprechen :-P
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
049
08.12.2003, 22:19 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wenn du einer if-anweisung ein integer übergibst wird diese zu true wenn es ein wert ungleich Null ist und false wenn es null ist.

scanf liefert ein integer zurück der die anzahl der eingelesenen parameter enthält.
Wenn es nicht klappt liefert er in deinem fall ne 0 zurück weil er dann keinen eingelesen hat. 0 würde heissen das er nicht den teil des ifzweiges ausführt weil es als false interpretiert wird. deshalb das ganze mit ! negieren.

Die bedinungen heist also ausformuliert wenn scanf 0 zurückliefert (was in unserem fall gleichbedeutend mit einem fehler ist) dann mach dies

if(!scanf(....) ) und if(scanf(...)==0) sind das gleiche nur das eine ist kürzer zu schreiben und INformatiker sind faul....
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ] [ 7 ] [ 8 ] [ 9 ]     [ 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: