|
![ein Kapitel weiter](../weiter.gif)
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 weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|