WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 10.04.2002, 07:15   #11
pirate man
Inventar
 
Registriert seit: 15.06.2000
Beiträge: 2.833


Standard

ajo, hab dein programm gestern noch getestet
nachdem man die grenzen angegeben hat, schliesst sich das fenster
pirate man ist offline   Mit Zitat antworten
Alt 10.04.2002, 07:20   #12
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

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!
irrsinn ist offline   Mit Zitat antworten
Alt 10.04.2002, 07:24   #13
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

@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
pong ist offline   Mit Zitat antworten
Alt 10.04.2002, 07:37   #14
pc.net
Aussteiger
 
Benutzerbild von pc.net
 
Registriert seit: 07.10.2001
Ort: Nettistan
Beiträge: 12.997

Mein Computer

Standard

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
gruß
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.
pc.net ist offline   Mit Zitat antworten
Alt 10.04.2002, 08:42   #15
pirate man
Inventar
 
Registriert seit: 15.06.2000
Beiträge: 2.833


Standard

@ 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
pirate man ist offline   Mit Zitat antworten
Alt 10.04.2002, 13:47   #16
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

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!
irrsinn ist offline   Mit Zitat antworten
Alt 10.04.2002, 14:21   #17
pirate man
Inventar
 
Registriert seit: 15.06.2000
Beiträge: 2.833


Standard

gute frage
dann darf man sich halt nicht 50 ausdenken
pirate man ist offline   Mit Zitat antworten
Alt 10.04.2002, 17:04   #18
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

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
pong ist offline   Mit Zitat antworten
Alt 10.04.2002, 17:08   #19
irrsinn
Veteran
 
Registriert seit: 05.04.2002
Beiträge: 331


Standard

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!
irrsinn ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:41 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag