R
Also die Lösung mit "return 0;" in der switch-Anweisung hätte ich auch bevorzugt - und natürlich ist die ANSI-C, warum sollte das nicht sein?! Nur weil dein Compiler eine Warnung bringt? Das hat nichts zu sagen! Den Abbruch mit "index!=3" herbei zu rufen ist auch elegant - wenn der Aspekt der strukturierten Programmierung im Vordergrund steht, dann nimm diese Lösung. Zum Verdeutlichen der Abbruchbedingung einer while-Schleife hier eine andere Möglichkeit: du definierst eine Variable abbruch mit 0 und setzt sie nur auf 1, wenn der Benutzer das Programm beenden will (ich ziehe dieser Lösung aber das "while(index!=3)" vor). Mal eine andere Frage: wenn du schon eine Menüabfrage mit einem Beenden-Menüpunkt hast, wieso fragst du dann noch einmal explizit ab, ob der Benutzer noch eine Berechnung durchführen will? Finde ich irgendwie doppelt gemoppelt. Ohne diese 2. Abfrage und mit o.a. "abbruch"-Variable würde der Pseudocode nun so ausschauen:
#include <stdio.h>
#include <conio.h>
#include <ctype.h> //für toupper
//Deklaration von Funktionen
int menu();
int durchschnitt_lagerdauer();
int lagerumschlagshaufigkeit();
//Globale Variablen
int iIndex;
int main(void){
short int abbruch=0;
do
{
menu();
switch(iIndex)
{
case 1:
durchschnitt_lagerdauer();
break;
case 2:
lagerumschlagshaufigkeit();
break;
case 3:
printf("Das Programm wird auf ihren Wunsch beendet");
abbruch=1; // wir wollen beenden
break;
default:
printf("Ungueltige Eingabe");
break;
}
}while(!abbruch); // solange, wie wir nicht beenden wollen
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));//Verhindert Schließen
getch();
return (0);
}
1. Wieso wird er sich darüber nicht freuen?
2. Was ist so schlecht an der Win-API? Es gibt doch auch ein Buch von Charles Petzold " Windowsprogrammierung mit der Win32 API", was ich übrigens auch habe, aber leider noch zu schwer, da ich mit Zeigern noch nicht klarkomme;
3. übrigens, was ist ein handle?
4. Was kann man mit der Win-API machen?
5. Gibt es eine Möglichkeit das automatische Schliessen der Konsole zu verhindern, ohne die Win-API oder den Befehl getchar(); ?
6. Gibt es auch eine API nur für die Konsole? Habe nämlich im Forum gelesen, dass so einige fragen, ob man in der Win-Console auch Programme mit grafischen Oberflächen machen kann.
1. Er wird sich nicht darüber freuen, weil es kein ANSI-C ist, sondern OS-spezifisch (Windows). Auch dein getch(); am Ende ist nicht ANSI-C, sondern eine Erweiterung einiger Bibliotheken und Compiler (LCGI / Borland). Benutze statt dessen lieber getchar(), ich sehe keinen Grund, warum du das nicht tun solltest! Vorsicht: wenn du vorher schon einmal ein "char" mit getchar(); eingelesen hast, musst du ein zweites dummy-getchar() hinterher schieben, damit das Carriage-Return-Zeichen überlesen wird (will ich jetzt nicht weiter erklären)!
2. Es ist nichts Schlechtes an der WinAPI, nur sollte man sie nicht benutzen, wenn man nicht gerade Fenster in Windows programmiert, da plattformabhängig.
3. Ein Handle ist AFAIK ein Zeiger zu einem von deinem Programm geöffneten Fenster, bin mir jetzt aber nicht mehr so sicher...
4. Fenster programmieren etc. pp.
5. Ja, das Programm einfach mittels Befehl in der Windows-Eingabeaufforderung aufrufen
6. Es gibt nichts, was es nicht gibt. Z.B. die "improved console"...
Ähm... ich muss weg
[ Dieser Beitrag wurde am 11.05.2003 um 10:37 Uhr von RTC editiert. ]