Brauch mal Hilfe beim Kommentieren vom C-Programm
-
Hallo,
kann mir jemand vieleicht helfen das folgende C Programm kommentieren.
Würde mich sehr freuen wenn es jemand mal kommentieren könnte.
MfG Chris#include <stdio.h>
#include <string.h>
#define MAX 1000struct datum {
int tag;
int monat;
int jahr;};
struct person {
char name[20];
char vorname[20];
struct datum geb;
struct datum anst;};
struct person angest[MAX];int einlesen(void);
int auswahl(void);
void sortieren(int anzahl, int auswahl);
void ausgeben(int anzahl);
int vergl_geb(int i, int j);
int vergl_anst(int i, int j);
void unspeicher(int i, int j);int main(void)
{
int wahl, anzahl;
anzahl = einlesen();
while ((wahl = auswahl()) !=0) {
sortieren(anzahl, wahl);
ausgeben(anzahl);
}
return(0);
}int einlesen(void)
{
int i;
for (i=0; i<MAX; i++) {
printf("\n----Eingabe der %d.Person----\n", i+1);
printf("Name: ");
gets(angest.name);
if (strelen(angest.name) == 0)
break;
printf("Vorname: ");
gets(angest.vorname);
printf("Geburtsdatum (tt.mm.jjjj): ");
scanf("%d.%d.%d", &angest.geb.tag, &angest.geb.monat,
&angest.geb.jahr);
printf("Anstelldatum (tt.mm.jjjj): ");
scanf("%d.%d.%d", &angest.anst.tag, &angest.anst.monat,
&angest.anst.jahr);
fflush(stdin);
}
return(i);
}int auswahl(void)
{
int wahl;
char string[100];
printf("\n.....Weiter mit Return....\n");
gets(string);
do{
printf("Verwaltung der Angestellten\n"
"===========================\n\n"
" 0 Ende\n"
" 1 Sortieren nach Name\n"
" 2 Sortieren nach Vorname\n"
" 3 Sortieren nach Geburtsdatum\n"
" 4 Sortieren nach Eistelldatum\n"
" Ihre Wahl: ");
scanf("%d", &wahl);
fflush(stdin);
} while (wahl < 0 || wahl >4);
return(wahl);
}void sortieren (int anzahl, int wahl)
{
int i, j, name_vergl, vorname_vergl, geb_vergl, anst_vergl;
for (i=0; i<anzahl-1; i++)
for (j=i+1; j<anzahl; j++) {
name_vergl = strcmp(angest.name, angest.name);
vorname_vergl = strcmp(angest.vorname, angest.vorname);
geb_vergl = vergl_geb(i, j);
anst_vergl = vergl_anst (i, j);
switch (wahl) {
case 1:
if (name_vergl > 0 ||
(name_vergl==0 && vorname_vergl >0) ||
(name_vergl==0 && vorname_vergl==0 && geb_vergl > 0 ) )
umspeicher(i, j);
break;
case 2:
if (vorname_vergl >0 ||
(vorname_vergl==0 && name_vergl >0) ||
(vorname_vergl==0 && name_vergl==0 && geb_vergl > 0 ) )
umspeicher(i, j);
break;
case 3:
if (name_vergl >0 ||
(geb_vergl==0 && name_vergl >0) ||
(geb_vergl==0 && name_vergl==0 && vorname_vergl > 0 ) )
umspeicher(i, j);
break;
case 4:
if (name_vergl >0 ||
(anst_vergl==0 && name_vergl >0) ||
(anst_vergl==0 && name_vergl==0 && vorname_vergl > 0 ) )
umspeicher(i, j);
break;
default:
printf("......Programminterner Fehler...\n");
break;
}
}
}void ausgeben(int anzahl)
{
int i;
printf(" %-20s, %-20s, Geb.Datum, Einst.Datum\n", "Name", "Vorname");
for (i=0; i<anzahl; i++)
printf("%3d. %-20s, %-20s, %02d.%02d.%04d, %02d.%02d.%04d\n",
i+1, angest.name, angest.vorname,
angest.geb.tag, angest.geb.monat, angest.geb.jahr,
angest .anst.tag, angest.anst.monat, angest.anst.jahr);
}
int vergl_geb(int i, int j)
{
if (angest.geb.jahr < angest[j].geb.jahr) return(-1);
else if (angest.geb.jahr > angest[j].geb.jahr) return(1);
else if (angest.geb.monat < angest[j].geb.monat) return(-1);
else if (angest.geb.monat > angest[j].geb.monat) return(1);
else if (angest.geb.tag < angest[j].geb.tag) return(-1);
else if (angest.geb.tag > angest[j].geb.tag) return(1);
return(0);
}int vergl_anst(int i, int j)
{
if (angest.anst.jahr < angest[j].anst.jahr) return(-1);
else if (angest.anst.jahr > angest[j].anst.jahr) return(1);
else if (angest.anst.monat < angest[j].anst.monat) return(-1);
else if (angest.anst.monat > angest[j].anst.monat) return(1);
else if (angest.anst.tag < angest[j].anst.tag) return(-1);
else if (angest.anst.tag > angest[j].anst.tag) return(1);
return(0);
}void umspeicher(int i, int j)
{
struct person hilf;
hilf = angest;
angest = angest[j];
angest[j] = hilf;
}
-
Es wuerde mich auch sehr freuen, wenn jemand mein Gartenzaun frisch streichen
wuerde... oder das Auto muesste mal gewaschen werden...Wie waers wenn du es mal versuchen wuerdest und wir's danach kontrollieren ?
-
Kommentiers doch selber!
P.S.: Man benutzt außerdem Code-Tags!
-
Original erstellt von quizzmaster:
Kommentiers doch selber!Eigentlich will man Quelltext nicht 'kommentieren' sondern beschreiben, erklären und die Idee erläutern.
Ein
/***************************** Prototypes ***************************************/ void foo(void); /***************************** Function Definitions **************************************/ void foo(void) { /***************************** Variables **************************************/ int i; /***************************** Code **************************************/ i = 0; /***************************** Loop **************************************/ while (i < 100) i++; /*************************** Addition ************************************** Add one to i */ /* end while */ }
sieht zwar beeindruckend aus, ist aber Mist.
[ Dieser Beitrag wurde am 14.04.2003 um 11:19 Uhr von Daniel E. editiert. ]
-
Ja man kanns aber auch so Kommentieren:
/************************* * bhalhfrhbngubh * *hkhftrhimmmtnhnnmtfkn * *************************/ #include <foo.h> // Globale Variablen int foo; char foos; // Funktions Prototypen void foo(void); void foos(char); int main() { char fooos; // ... // das macht das dies // ... } // Funktion: Parameter: blah, blula // MAcht dies und das mit dem und so void foo(void) { // ... }
Damit können dann die leute was anfangen die wissen wollen was das prog macht und was die funktionen machen mit parametern und rückgabewerten.
-
@quizzmaster
Ja, nur wirst du mit dem // aus C++ in C nicht sehr weit kommen[ Dieser Beitrag wurde am 14.04.2003 um 14:51 Uhr von MaSTaH editiert. ]
-
Original erstellt von MaSTaH:
**Ja, nur wirst du mit dem // aus C++ in C nicht sehr weit kommen
**warum?
schonmal was von C99 gehört?
und davor war es quasi Standard.//prototypen
und
//globale variablensind unsinnig.
wie wärs mit
int global; //benutzer id
oder noch besser
int uid;
-
Hallo,
hier meine 0.02 Euro:
Kommentare sollten in der Regel nicht dazu benutzt werden die Sprache zu beschreiben. Entweder weiß ein Leser wie man eine globale Variable anlegt und was globale Variable bedeutet, dann braucht er den Kommentar nicht oder er weiß es nicht, dann hilft ihm der Kommentar nichts. Kurz. Der Kommentar ist völlig überflüssig.wie wärs mit
int global; //benutzer id
oder noch besser
int uid;Noch besser wäre meiner Meinung nach:
int userId;Je größer der Gültigkeitsbereich einer Variable, desto sprechender sollte ihr Name sein.
[ Dieser Beitrag wurde am 14.04.2003 um 21:23 Uhr von HumeSikkins editiert. ]
-
ich würde sagen für einen üblichen Unix User ist uid schon sehr sprechend
@Mastha
eigentlich kommen die // wohl aus BCPL
-
Mir hat mal ein C/C++-Anfänger gesagt, er kommentiert seinen Code wie eine kleine Geschichte. Er beschreibt also was er vorhat, nicht wie er es ausführt. Denn das kann man ja am Code erkennen.
Fand ich beeindruckend. So kann man sogar noch was von einem Anfänger lernen.Blackbird