![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#11 |
Inventar
![]() Registriert seit: 15.06.2000
Beiträge: 2.833
|
![]() ajo, hab dein programm gestern noch getestet
nachdem man die grenzen angegeben hat, schliesst sich das fenster |
![]() |
![]() |
![]() |
#12 |
Veteran
![]() Registriert seit: 05.04.2002
Beiträge: 331
|
![]() folgendes ich geh jetzt auf die uni und mach eine prüfung. am abend hast eine funktionierende version
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm! |
![]() |
![]() |
![]() |
#13 |
Inventar
![]() |
![]() @irrsinn i hab ma erlaubt deine version abzuändern, ich hoff es geht ohne probs
Code:
#include <stdio.h> #include <conio.h> #define obergrenze 100 #define untergrenze 0 int main() { unsigned short usLower = untergrenze; unsigned short usUpper = obergrenze; unsigned short usQuery = 0; unsigned short usChar = 0; /* // Zu behandelndes Intervall abfragen printf("\nIntervall Untergrenze eingeben: "); scanf("%d", &usLower); printf("\nIntervall Obergrenze eingeben: "); scanf("%d", &usUpper); if (usLower == usUpper) { printf("\nUnter und Obergrenze sind gleich!"); exit(0); } // if */ // diese konstruktion ist nicht besonders elegant. aber für diese zwecke reichts alle mal for ( ; ; ) { // ungefähre hälfte des intervalls ermitteln usQuery = usLower + (usUpper - usLower) / 2; printf("\nIst die Zahl größer (g), kleiner (k) oder gleich (e) %d", usQuery); usChar=getch(); // ist die Zahl schon gefunden? if ((usUpper - usLower) == 2) { printf("\nDie gesuchte Zahl ist %d", usQuery); getch(); exit(0); } // if switch (usChar) { case 'g': // die Zahl ist größer usLower = usQuery; break; case 'k': // die Zahl ist kleiner usUpper = usQuery; break; case 'e': // die Zahl ist gefunden printf("\nDie gesuchte Zahl ist %d", usQuery); getch(); exit(0); break; default: printf("\nUngültige Eingabe. Programm wird beendet!"); exit(0); break; } // switch } // for } // main
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#14 |
Aussteiger
![]() |
![]() hab auch erlaubt a bisserl rumzupfuschen ... (funktioniert jetzt auch bei einem doppelklick auf die .exe
![]() Code:
#include <stdio.h> #include <conio.h> int main() { unsigned short usLower = 0; unsigned short usUpper = 0; unsigned short usQuery = 0; unsigned short usChar = 0; // Zu behandelndes Intervall abfragen printf("\nIntervall Untergrenze eingeben: "); scanf("%d", &usLower); printf("\nIntervall Obergrenze eingeben: "); scanf("%d", &usUpper); if (usLower == usUpper) { printf("\nUnter und Obergrenze sind gleich!"); getch(); return(0); } // if // diese konstruktion ist nicht besonders elegant. aber fuer diese zwecke reichts alle mal while (1) { // ungefaehre haelfte des intervalls ermitteln usQuery = usLower + (usUpper - usLower) / 2; printf("\nIst die Zahl groesser (g), kleiner (k) oder gleich (e) %d", usQuery); usChar = getch(); // ist die Zahl schon gefunden? if ((usUpper - usLower) == 2) { printf("\nDie gesuchte Zahl ist %d", usQuery); break; } // if switch (usChar) { case 'g': // die Zahl ist groesser usLower = usQuery; break; case 'k': // die Zahl ist kleiner usUpper = usQuery; break; case 'e': // die Zahl ist gefunden printf("\nDie gesuchte Zahl ist %d", usQuery); break; default: printf("\nUngueltige Eingabe. Programm wird beendet!"); break; } // switch } // while getch(); return(0); } // main pc.net
____________________________________
Praktizierender Eristiker No hace falta ser un genio para saber quién dijo eso. Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein. |
![]() |
![]() |
![]() |
#15 |
Inventar
![]() Registriert seit: 15.06.2000
Beiträge: 2.833
|
![]() @ pong
deine version bzw. die von dir geänderte is fast so wies sein soll ![]() die option g(leich) darf nicht zur verfügung stehen das programm muss so fragen, dass zum schluss nur eine möglichkeit überbleibt beipspiel (die zahl ist 34): größer oder kleiner als 50? k größer oder kleiner als 25? g größer oder kleiner als 35? k größer oder kleiner als 30? g größer oder kleiner als 33? g die gesuchte zahl ist 34 ich hoff, du kriegst es so hin ![]() |
![]() |
![]() |
![]() |
#16 |
Veteran
![]() Registriert seit: 05.04.2002
Beiträge: 331
|
![]() was soll dann passieren, wenn du dir sagen wir 50 "ausdenkst" und das programm fragt dich ob die gesuchte zahl größer oder kleiner als 50 ist? dann hast nämlich ein problem in der programmlogik.
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm! |
![]() |
![]() |
![]() |
#17 |
Inventar
![]() Registriert seit: 15.06.2000
Beiträge: 2.833
|
![]() gute frage
dann darf man sich halt nicht 50 ausdenken ![]() |
![]() |
![]() |
![]() |
#18 |
Inventar
![]() |
![]() Code:
#include <stdio.h> #include <conio.h> #define obergrenze 100 #define untergrenze 0 int main() { unsigned short usLower = untergrenze; unsigned short usUpper = obergrenze; unsigned short usQuery = 0; unsigned short usChar = 0; /* // Zu behandelndes Intervall abfragen printf("\nIntervall Untergrenze eingeben: "); scanf("%d", &usLower); printf("\nIntervall Obergrenze eingeben: "); scanf("%d", &usUpper); if (usLower == usUpper) { printf("\nUnter und Obergrenze sind gleich!"); exit(0); } // if */ // diese konstruktion ist nicht besonders elegant. aber für diese zwecke reichts alle mal for ( ; ; ) { // ungefähre hälfte des intervalls ermitteln usQuery = usLower + (usUpper - usLower) / 2; printf("\nIst die Zahl größer (g) oder kleiner (k) %d", usQuery); usChar=getch(); // ist die Zahl schon gefunden? if (((usUpper - usLower) == 2) || ((usUpper - usLower) == 0)) { printf("\nDie gesuchte Zahl ist %d", usQuery); getch(); exit(0); } // if switch (usChar) { case 'g': // die Zahl ist größer usLower = usQuery; break; case 'k': // die Zahl ist kleiner usUpper = usQuery; break; /* case 'e': // die Zahl ist gefunden printf("\nDie gesuchte Zahl ist %d", usQuery); getch(); exit(0); break; ->mog a ned */ default: printf("\nUngültige Eingabe. Programm wird beendet!"); exit(0); break; } // switch } // for } // main
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#19 |
Veteran
![]() Registriert seit: 05.04.2002
Beiträge: 331
|
![]() und wenn dich das programm irgendwann im weiteren verlauf fragt ob die gesuchte zahl größer oder kleiner ist und dabei die gesuchte zahl ausgibt? solche situationen können unabhängig von der gesuchten zahl und unabhängig vom intervall auftreten.
____________________________________
Wenn es dumm ist aber funktioniert, ist es nicht dumm! |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|