Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Dieses Programm wurde geschrieben im Programm C,kann das jemand in das Programm Python übersetzen bitte.Notiz: Es ist keine Hausaufgabe,ich komme mit dem Programm C einfach nicht klar (
#include<stdio.h>
int yesno(char[]);
void intro(void);
void cspiel(void);
void leerepuffer(void);
int main(void){
int weiterspielen=1;
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf( " Z A H L E N R A T E N\n");
printf( " =====================\n");
printf("\n");
while (weiterspielen) {
cspiel();
weiterspielen = yesno("\nNoch ein Spiel?");
}
printf("\n");
printf("Ich hoffe, du hattest Spass mit mir!\n");
return (0);
}
void leerepuffer(void){
while(getchar() != '\n');
}
int yesno(char prompt[] ){
char taste;
printf("%s (y/n)",prompt);
scanf("%c",&taste);
leerepuffer();
if (taste=='y')
return 1;
else
return 0;
}
void intro(void){
char irgendwas;
printf("\n");
printf("\n");
printf("\n");
printf(" Denke dir eine Zahl zwischen 1 und 100 aus.\n");
printf(" Ich werde versuchen, diese Zahl zu erraten.\n");
printf("\n");
printf(" Gib ein:\n");
printf(" + , wenn mein Tipp zu klein ist.\n");
printf(" - , wenn mein Tipp zu gross ist.\n");
printf(" = , wenn mein Tipp stimmt. \n");
printf("\n");
printf(" Hast du deine Zahl? Dann druecke die Eingabetaste!\n");
scanf("%c",&irgendwas);
/*leerepuffer();*/
}
void cspiel(void){
int unten=1;
int oben=100;
int erraten = 0;
int versuche = 0;
int tipp;
char antwort;
intro();
while (! erraten){
versuche = versuche + 1;
tipp = (unten + oben) / 2;
printf("Ist deine Zahl %d? ",tipp);
scanf("%c",&antwort);
leerepuffer();
if (antwort == '+'){
unten = tipp+1;
}
else if (antwort == '-'){
oben = tipp-1;
}
else if (antwort == '='){
erraten = 1;
}
else{
printf("Das ist eine ungueltige Antwort!\n");
printf("Antworte mit +/=/-\n");
versuche = versuche - 1;
}
if (unten == oben){
tipp = unten;
erraten = 1;
}
}
printf("Ich habe mit %d Fragen herausgefunden:",versuche);
printf("\nDeine Zahl ist %d!",tipp);
}
Zuletzt geändert von Anonymous am Dienstag 11. Mai 2010, 09:01, insgesamt 1-mal geändert.
Grund:Quelltext in Code-Tags gesetzt.
pythonkönig24 hat geschrieben:Dieses Programm wurde geschrieben im Programm C,kann das jemand in das Programm Python übersetzen bitte.
Es ist meist nicht sinnvoll, die Zeilen 1:1 zu übertragen, da Python andere Konzepte und Möglichkeiten hat als C.
Versuch einfach ein Python-Programm mit der gewünschten Funktionalität selber zu entwickeln. Solltest du mit dieser Aufgabe Schwierigkeiten haben, dann schau dir das Python-Tutorial an das du auf der Seite mit der Python-Dokumentation findest.
Vielleicht könnte man dem Schüler noch sagen, dass es dazu hier schon gefühlt 100 Threads zu diesem Problem gab? (Auf das Suchwort muss er schon noch selber kommen)
Mich würde ja mal interessieren, wie viele Lehrer sich hier anmelden, um ihre Schüler zu "beobachten"? Wenn die so "clever" sind, nach python & forum googlen und dann hier landen, um bei Posting 1 direkt so eine Frage abzusetzen, ich meine dann sollte es doch auch Lehrer geben, die so "schlau" sind.
Speziell in diesem Fall, denn der (grottig) C-Code muss ja dann wohl irgend wie vorgegeben sein...
Ich glaube ja eher, daß der C-Code im Netz gefunden wurde - beim Versuch, die Lösung zu googeln. Aber man muß ihm zugute halten, daß er sich das Forum zuvor zumindest ein bisschen angeschaut hat, sonst wüßte er nichts von der Hausaufgaben-Allergie ...
Pekh hat geschrieben:Ich glaube ja eher, daß der C-Code im Netz gefunden wurde - beim Versuch, die Lösung zu googeln. Aber man muß ihm zugute halten, daß er sich das Forum zuvor zumindest ein bisschen angeschaut hat, sonst wüßte er nichts von der Hausaufgaben-Allergie ...
*g* aber nicht gut genug - sonst hätte er ja zig Lösungen gefunden (und das in zig Sprachen iirc ) Aber ich denke auch per google sollte man das in Python finden...
Ich hab mal den 'original'-Code nach C99/Englisch portiert. (Hauptsächlich um mir zu beweisen, dass ich noch C kann ) http://paste.pocoo.org/show/212647/
Compiliert mit gcc -O3 -std=c99 (ich benutze gcc 4.3.3/mingw)
htdnh, Jörg
ps.: da sind natürlich keine Kommentare im Code...
edit: da war natürlich ein typo im GCC-aufruf
Zuletzt geändert von b.esser-wisser am Dienstag 11. Mai 2010, 13:25, insgesamt 1-mal geändert.
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
@lunar: ``-O3`` macht bei jedem Programm Sinn, welches man auch mit ``-Wall`` übersetzt, was man IMHO in der Regel tun sollte. Denn erst bei der Optimierung werden Datenpfade im Programm analysiert, die zu ein paar Warnungen führen können, die ohne diese Analyse nicht erkannt werden.
@BlackJack: Die einzige -Wall-Warnung, die von Optimierungen abhängt, ist -Warray-bounds, und die wird auch bereits mit -O2 aktiviert. -O3 ist extrem aggressiv, und hat bei den meisten Programmen eher gegenteilige Effekte.
nelson@MECL-LAP3:~/src/C/snippets$ gcc -o guessanumber -Wall -O3 -Werror -pedantic guessanumber.c
cc1: warnings being treated as errors
guessanumber.c: In function ‘main’:
guessanumber.c:21: error: ISO C90 forbids mixed declarations and code
guessanumber.c: In function ‘prompt_user’:
guessanumber.c:33: error: ignoring return value of ‘scanf’, declared with attribute warn_unused_result
guessanumber.c:44:2: error: C++ style comments are not allowed in ISO C90
guessanumber.c:44:2: error: (this will be reported only once per input file)