ein Kapitel zurück                                           ein Kapitel weiter

Hier die Lösung der Aufgabe 1......
Wenn sie nicht von alleine auf eine Lösung gekommen sind so sollten sie unbedingt den Quellcode verstehen. Das Sortieren findet alles innerhalb unserer 2 'for' - Schleifen statt.

/*Download:aufarr.c*/
#include <stdio.h>
#define MAX 10
#define ZEILE printf("\n")

/*Demonstration zum Zugriff auf Array mit dem Index*/

int x[MAX];

int main()
{
int i,j,tmp;

for(i=0; i<MAX; i++)
{
printf("%d. Wert : ",i+1);
scanf("%d",&x[i]);
}

printf("Unsortiert....");
for(i=0; i<MAX; i++)
printf("%d, ",x[i]);

printf("\n");

for(i=0; i<MAX; i++)
{
for(j=i+1; j<MAX; j++)
{
if(x[i]>x[j])
{
tmp=x[i];
x[i]=x[j];
x[j]=tmp;
} /*if*/
} /*for*/
} /*for*/

printf("Sortiert...");
for(i=0; i<MAX; i++)
printf("%d, ",x[i]);

return 0;
}

Die Sortierung läuft nach folgendem Schema ab: Zuerst vergleichen wir die 1. Zahl (1.for-Schleife) mit allen anderen bis zur Zahl MAX (2.for-Schleife). Somit ist nach dem 1. Durchlauf der 1.for - Schleife die kleinste Zahl auf alle Fälle am Anfang unseres Arrays. Dann erhöht sich die zu vergleichende Zahl der 1. for-Schleife um den Wert 1 und wir vergleichen die 2. Zahl mit allen Anderen (2.for-Schleife) und bekommen somit die zweitkleinste Zahl an die 2. Position. Das Sortieren ist beendet wenn in der 1.for - Schleife 'i

Lösung zu Aufgabe 2....
Weltbewegendes haben wir an diesem Programm nicht verändern müssen. Es sind hier lediglich 2 neue Arrays für die Tore und eine do..while - Schleife hinzugekommen bei der wir eine Abfrage starten welches Ergebnis uns interessiert. Und natürlich benutzen wir unsere 2 Neuen Arrays auch gleich dazu das Torverhältnis auszurechnen....

/*Download:aufarr2.c*/
#include <stdio.h>
#define SPIELE 5

/*Globale Variablen*/
int Bayern[SPIELE]={0};
int Borussia[SPIELE]={0};
int BayTor[SPIELE]={0};
int BorTor[SPIELE]={0};

static int count=0; /*Indexzaehler*/

/*Funktion zum zaehlen der Punkte*/
void punkte(int bm[], int bd[])
{
if(bm[count]>bd[count])
{
bm[count]=3; /*3Punkte für Bayern*/
bd[count]=0;
}
else if(bm[count]<bd[count])
{
bd[count]=3; /*3Punkte für Borussia*/
bm[count]=0;
}

else if(bm[count]==bd[count])
{
bm[count]=1; /*1Punkt für jeden - Unentschieden*/
bd[count]=1;
}
}

int main()
{
int tor1,tor2;
int tmptor1=0,tmptor2=0;
int i;
int abfrage;
int dummy=1; /*zum Abbruch von do..while*/

while(count!=SPIELE)
{
printf("%d. Spiel : Bayern - Borrusia\n",count+1);
printf("Tor(e) Bayern : ");
scanf("%d",&tor1);
Bayern[count]=tor1;
BayTor[count]=tor1;
printf("Tor(e) Borussia : ");
scanf("%d",&tor2);
Borussia[count]=tor2;
BorTor[count] =tor2;

punkte(Bayern,Borussia); /*Werte an Funktion punkte()*/
count++; /*Indexzaehler um 1 erhöhen*/
}

/*Ergebniss - Abfrage*/
do{
printf("Welches Ergebniss von welchen Spiel : ");
scanf("%d",&abfrage);

if(abfrage>SPIELE)
dummy=0;
else
printf("Bay - Bor :%d - %d\n",BayTor[abfrage-1],BorTor[abfrage-1]);

}while(dummy!=0);


tor1=0; /*Inhalt von tor1 & tor2 auf 0 setzen*/
tor2=0;

for(i=0; i<SPIELE; i++) /*Gesamtpunkte aller Spiele*/
{
tor1+=Bayern[i];
tor2+=Borussia[i];
tmptor1+=BayTor[i];
tmptor2+=BorTor[i];
}

printf("\t\tBayern - Borussia\n");
printf("Punkte :\t %d - %d\n",tor1,tor2);
printf("Tore :\t %d - %d\n",tmptor1,tmptor2);

return 0;
}

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf