App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
C Anfänger: Frage zu getchar()....
- Ersteller SuperCow
- Erstellt am
SuperCow
Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 1.318
- Renomée
- 1
- Mein Laptop
- HP Compaq nx9005
- Prozessor
- X2 3800+ @2,5GHz @1,25V (default) @C'nQ
- Mainboard
- Gigabyte GA-MA69G-S3H
- Kühlung
- Arctic Cooling Freezer 64 Pro
- Speicher
- 4x512MB, DDR2-800, Aeneon
- Grafikprozessor
- onboard
- Display
- Sony SDM-X95FB (19'')
- HDD
- Seagate Barracuda 7200.10 250GB (250GB/Platters)
- Optisches Laufwerk
- LiteOn SOHD-16P9S (DVD/CD), Pioneer DVR-110 (DVD-Brenner)
- Soundkarte
- onboard
- Gehäuse
- Chieftec CS-601
- Netzteil
- 300W HEC
- Betriebssystem
- Windows 7
- Webbrowser
- IE 8
PHP:
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
int n, x;
double produkt;
char weiter;
do {
produkt=1.0;
printf("\nBitte geben Sie eine Zahl n ein: ");
scanf("%i", &n);
for(x=1; x<=n; x++) {
produkt=produkt*x;
}
printf("%.0f\n", produkt);
printf("Weitermachen? (Y/N) : ");
weiter=getchar(); // Funktioniert nicht... Warum?
} while(weiter=='Y' || 'y');
printf("\n\n");
system("PAUSE");
return 0;
}
Das getchar() funktioniert einfach nicht... wenn ich es an den Anfang der Schleife setze wird es einmal abgefragt, dann aber nicht mehr... Es scheint als würde dem getchar, einfach return übergeben... Ich kann mir das aber nicht erklären....
thx
SuperCow
Zuletzt bearbeitet:
SuperCow
Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 1.318
- Renomée
- 1
- Mein Laptop
- HP Compaq nx9005
- Prozessor
- X2 3800+ @2,5GHz @1,25V (default) @C'nQ
- Mainboard
- Gigabyte GA-MA69G-S3H
- Kühlung
- Arctic Cooling Freezer 64 Pro
- Speicher
- 4x512MB, DDR2-800, Aeneon
- Grafikprozessor
- onboard
- Display
- Sony SDM-X95FB (19'')
- HDD
- Seagate Barracuda 7200.10 250GB (250GB/Platters)
- Optisches Laufwerk
- LiteOn SOHD-16P9S (DVD/CD), Pioneer DVR-110 (DVD-Brenner)
- Soundkarte
- onboard
- Gehäuse
- Chieftec CS-601
- Netzteil
- 300W HEC
- Betriebssystem
- Windows 7
- Webbrowser
- IE 8
http://www.proglernen.de/_forum/00000053.htm
OK, hier habe ich schon eine ANtwort gefunden... Wie umgehe ich das aber, ohne dass
verwendet werden muss?
So siehts im Moment aus. Die zwei getchars stören mich aber. KAnn man nicht irgendwie den TAstaturpuffer löschen oder so etwas?
OK, hier habe ich schon eine ANtwort gefunden... Wie umgehe ich das aber, ohne dass
PHP:
[...]
weiter=getchar();
weiter=toupper(getchar());
[...]
So siehts im Moment aus. Die zwei getchars stören mich aber. KAnn man nicht irgendwie den TAstaturpuffer löschen oder so etwas?
PHP:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
int main(int argc, char *argv[])
{
int n, x;
double produkt;
char weiter;
do {
produkt=1.0;
printf("\nBitte geben Sie eine Zahl n ein: ");
scanf("%i", &n);
for(x=1; x<=n; x++) { // Bildet die Fakultät von n (!n)
produkt=produkt*x;
}
printf("%.0f\n", produkt);
printf("Weitermachen? (J/N) : ");
weiter=getchar();
weiter=toupper(getchar());
} while(weiter=='J');
printf("\n\n");
system("PAUSE");
return 0;
}
Zuletzt bearbeitet:
Sargnagel
Commodore Special
- Mitglied seit
- 31.12.2001
- Beiträge
- 477
- Renomée
- 1
Standard-Problem --> FAQ-Antworten
How do I get my program to wait for a keypress?
Flush the input buffer
Why fflush(stdin) is wrong!
How do I get my program to wait for a keypress?
Flush the input buffer
Why fflush(stdin) is wrong!
SuperCow
Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 1.318
- Renomée
- 1
- Mein Laptop
- HP Compaq nx9005
- Prozessor
- X2 3800+ @2,5GHz @1,25V (default) @C'nQ
- Mainboard
- Gigabyte GA-MA69G-S3H
- Kühlung
- Arctic Cooling Freezer 64 Pro
- Speicher
- 4x512MB, DDR2-800, Aeneon
- Grafikprozessor
- onboard
- Display
- Sony SDM-X95FB (19'')
- HDD
- Seagate Barracuda 7200.10 250GB (250GB/Platters)
- Optisches Laufwerk
- LiteOn SOHD-16P9S (DVD/CD), Pioneer DVR-110 (DVD-Brenner)
- Soundkarte
- onboard
- Gehäuse
- Chieftec CS-601
- Netzteil
- 300W HEC
- Betriebssystem
- Windows 7
- Webbrowser
- IE 8
PHP:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
int main(int argc, char *argv[]) {
int n, x;
double produkt;
char weiter;
do {
produkt=1.0;
printf("\nBitte geben Sie eine Zahl n ein: ");
scanf("%i", &n);
for(x=1; x<=n; x++) {
produkt=produkt*x;
}
printf("%.0f\n", produkt);
printf("Weitermachen? (J/N) : ");
while ((weiter = getchar()) != '\n' && weiter != EOF); // flushs the input buffer cause of getchar()
weiter=toupper(getchar());
} while(weiter=='J');
printf("\n\n");
system("PAUSE");
return 0;
}
OK, anwenden konnte ich es. Aber was macht das ganze genau? Also nur diese Zeile: "while ((weiter = getchar()) != '\n' && weiter != EOF);"
Und es ist die Frage, was natürlich eleganter ist...
Seh ich das richtig, dass er zuerst mit getchar() das "return" nach weiter einliest und dann die Schleife ausführt, wenn kein EOF oder \n vorliegt? Dann gehts ja in eine Endlosschleife rein? Wäre es da nicht besser, das einfach wie vorhin über ein getchar() zu machen?
thx
SuperCow
Zuletzt bearbeitet:
Sargnagel
Commodore Special
- Mitglied seit
- 31.12.2001
- Beiträge
- 477
- Renomée
- 1
Nein, eine Endlosschleife wird das nicht. Wenn der stdin-Buffer leer ist, wird das durch ein EOF (end of file) angezeigt. Und bedenke, daß EOF eine Integer Konstante ist, d.h. char weiter und weiter != EOF sind nicht ganz korrekt.
Also, solange kein '\n' (d.h. ENTER wurde betätigt) gefunden wurde (((weiter = getchar()) != '\n') und ( && ) das Ende des stdin-Buffers noch nicht erreicht ist (weiter != EOF), wird der Schleifenkörper ausgeführt. Da dieser aber nur aus einem ';' besteht, geht's gleich mit der erneuten Evaluierung der Schleifenbedingung weiter.
Die while-Schleife bricht also ab, sobald der stdin-Buffer geleert ist. Und bedenke, daß die Bedingung der while-Schleife aufgrund des && von links nach rechts ausgewertet wird.
Also, solange kein '\n' (d.h. ENTER wurde betätigt) gefunden wurde (((weiter = getchar()) != '\n') und ( && ) das Ende des stdin-Buffers noch nicht erreicht ist (weiter != EOF), wird der Schleifenkörper ausgeführt. Da dieser aber nur aus einem ';' besteht, geht's gleich mit der erneuten Evaluierung der Schleifenbedingung weiter.
Die while-Schleife bricht also ab, sobald der stdin-Buffer geleert ist. Und bedenke, daß die Bedingung der while-Schleife aufgrund des && von links nach rechts ausgewertet wird.
SuperCow
Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 1.318
- Renomée
- 1
- Mein Laptop
- HP Compaq nx9005
- Prozessor
- X2 3800+ @2,5GHz @1,25V (default) @C'nQ
- Mainboard
- Gigabyte GA-MA69G-S3H
- Kühlung
- Arctic Cooling Freezer 64 Pro
- Speicher
- 4x512MB, DDR2-800, Aeneon
- Grafikprozessor
- onboard
- Display
- Sony SDM-X95FB (19'')
- HDD
- Seagate Barracuda 7200.10 250GB (250GB/Platters)
- Optisches Laufwerk
- LiteOn SOHD-16P9S (DVD/CD), Pioneer DVR-110 (DVD-Brenner)
- Soundkarte
- onboard
- Gehäuse
- Chieftec CS-601
- Netzteil
- 300W HEC
- Betriebssystem
- Windows 7
- Webbrowser
- IE 8
Danke
Noch 2 fRagen, wenn ich die Debug-Funktion des Dev-C++ nutze, und ich mir die VAriablenwerte zur LAufzeit anzeigen lassen, dann sind es nie die exakten Werte, wie ich sie eingegeben habe, also z.B:
statt 2.01 --> 2.00999999999999957
Eine mögliche Erklärung habe ich hier gefunden:
http://msdn.microsoft.com/library/d...nt_representation_and_microsoft_languages.asp
Wenn ich die Variablen jedoch direkt im Quelltext initialisiere (so heißt das doch?), zeigt mit die sog. Watchfunktion die korrekten Werte an. Bis jetzt habe ich noch keine Erklärung dafür gefunden.
Dann habe ich noch ein Phenomen entdeckt - jedenfalls scheint es mir so. Bei einer normalen for-Schleife, wie z.B.
erzeugt bei mir eine Endlosschleife. Erst wenn ich i=10 zu i<=10 abändere, funktioniert die schleife wie sie soll. i ist natürlich vom Typ int.
Wäre nett, wenn mir das jemand erklären könnte oder sagen wo man dafür eine Erklärung findet.
Noch 2 fRagen, wenn ich die Debug-Funktion des Dev-C++ nutze, und ich mir die VAriablenwerte zur LAufzeit anzeigen lassen, dann sind es nie die exakten Werte, wie ich sie eingegeben habe, also z.B:
statt 2.01 --> 2.00999999999999957
Eine mögliche Erklärung habe ich hier gefunden:
http://msdn.microsoft.com/library/d...nt_representation_and_microsoft_languages.asp
Wenn ich die Variablen jedoch direkt im Quelltext initialisiere (so heißt das doch?), zeigt mit die sog. Watchfunktion die korrekten Werte an. Bis jetzt habe ich noch keine Erklärung dafür gefunden.
Dann habe ich noch ein Phenomen entdeckt - jedenfalls scheint es mir so. Bei einer normalen for-Schleife, wie z.B.
PHP:
for(i=1; i=10; i++);
Wäre nett, wenn mir das jemand erklären könnte oder sagen wo man dafür eine Erklärung findet.
Devastators
Grand Admiral Special
- Mitglied seit
- 03.06.2001
- Beiträge
- 17.242
- Renomée
- 149
- Standort
- Bochum
- Mein Laptop
- Acer 8730 & 3810T & VN7 791G
- Prozessor
- Intel Q9550
- Mainboard
- -
- Kühlung
- Arctic Freezer 7 Pro
- Speicher
- 4* 1 Gig DC
- Grafikprozessor
- Asus GTX 750TI
- Display
- Asus VW246H 24" FHD
- SSD
- Samsung 850 EVO
- HDD
- 2 * Sata Maxtor 200GB 1 * WD 250 Gig IDE
- Optisches Laufwerk
- Plextor PX750A
- Soundkarte
- -
- Gehäuse
- Antec P180
- Netzteil
- BeQuiet 450Watt Straight Power
- Betriebssystem
- Win7 64
- Webbrowser
- IExplorer 8
- Verschiedenes
- DigiCam: Canon EOS 300D, Canon 50D , Beamer: SanyoZ3 , Camcorder: Canon HF200 HD , PS3 , Wii
"for(i=1; i=10; i++);"
Anfängerfehler
vesuch mal:
for(i=1; i==10; i++);
Der Vergleichsoperator ist ==!
= ist ein Zuweisungsoperator!
Anfängerfehler
vesuch mal:
for(i=1; i==10; i++);
Der Vergleichsoperator ist ==!
= ist ein Zuweisungsoperator!
SuperCow
Admiral Special
- Mitglied seit
- 11.11.2001
- Beiträge
- 1.318
- Renomée
- 1
- Mein Laptop
- HP Compaq nx9005
- Prozessor
- X2 3800+ @2,5GHz @1,25V (default) @C'nQ
- Mainboard
- Gigabyte GA-MA69G-S3H
- Kühlung
- Arctic Cooling Freezer 64 Pro
- Speicher
- 4x512MB, DDR2-800, Aeneon
- Grafikprozessor
- onboard
- Display
- Sony SDM-X95FB (19'')
- HDD
- Seagate Barracuda 7200.10 250GB (250GB/Platters)
- Optisches Laufwerk
- LiteOn SOHD-16P9S (DVD/CD), Pioneer DVR-110 (DVD-Brenner)
- Soundkarte
- onboard
- Gehäuse
- Chieftec CS-601
- Netzteil
- 300W HEC
- Betriebssystem
- Windows 7
- Webbrowser
- IE 8
Schande über mich Und da hockt man dann Stunden dran Jetzt wird aber Französisch gelernt, dass man auch was im urlaub sagen kann...
Ich merk aber gerade, dass die Schleife für meine Zwecke ziemlich sinnlos idt, da sie nur bei i==10 ausgeführt wird...
Ich merk aber gerade, dass die Schleife für meine Zwecke ziemlich sinnlos idt, da sie nur bei i==10 ausgeführt wird...
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 3
- Aufrufe
- 7K