|  |  | |
|  |  | 
| 
 | |||||||
| Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren | 
| Programmierung Rat & Tat für Programmierer | 
|  | 
|  | Themen-Optionen | Ansicht | 
|  10.04.2002, 08:15 | #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 | 
|   |   | 
|  10.04.2002, 08:20 | #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! | 
|   |   | 
|  10.04.2002, 08:24 | #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 | 
|   |   | 
|  10.04.2002, 08:37 | #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);
} // mainpc.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. | 
|   |   | 
|  10.04.2002, 09:42 | #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  | 
|   |   | 
|  10.04.2002, 14:47 | #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! | 
|   |   | 
|  10.04.2002, 15:21 | #17 | 
| Inventar  Registriert seit: 15.06.2000 
					Beiträge: 2.833
				 |   gute frage dann darf man sich halt nicht 50 ausdenken  | 
|   |   | 
|  10.04.2002, 18:04 | #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 | 
|   |   | 
|  10.04.2002, 18:08 | #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) | |
| Themen-Optionen | |
| Ansicht | |
| 
 | 
 |