PraktikumProgrammierung1:Aufgabe 3

Aus Tudwiki
Version vom 19. Januar 2005, 10:07 Uhr von 141.76.1.122 (Diskussion)

(Unterschied) Nächstältere Version→ | Aktuelle Version (Unterschied) | ←Nächstjüngere Version (Unterschied)
Wechseln zu: Navigation, Suche

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>

/* das zu entwickelnde Programm soll das Folgende leisten:

  Eine Anzahl von max. 25 Integer-Werten ist in einem ARRAY zu
  speichern, wobei die Werte wahlweise von der Tastatur
  einzugeben oder per Zufall zu erzeugen sind.
  Danach sollen die Werte unsortiert auf dem Bildschirm ausgegeben,
  sortiert und wieder ausgegeben werden.
  Die Variable 'anzahl' dient dazu, die Feldgroesse temporaer zu
  begrenzen (vor allem bei der Eingabe der Elemente von der
  Tastatur), also nicht immer das gesamte Feld zu verwenden. */
#define MAX 25

void eingabe(int f[],int *anz); void zufall(int f[], int *anz); void sortieren(int f[], int anz); void ausgabe(int f[], int anz);

void eingabe(int f[], int *anz) {

 char ch;
 int i;
 printf("\n\nEingabe der Werte\n");
 printf("\nSollen die Elemente von der Tastatur eingegeben werden (j/n) ? ");
 do ch = toupper(getchar()); while ((ch!='J')&&(ch!='N'));
 if (ch == 'J')
 { /* Realisieren Sie hier die Eingabe der unsortierten Werte. */
    printf("\nEingabe der Elemente von der Tastatur");
    do{
            printf("\nWieviele Werte sollen eingegeben werden (max. %d)?",MAX);
            scanf("%d",&*anz); /* &*anz entspricht anz (ohne & oder *)  */
    }while( *anz==0 || *anz>MAX );
    for(i=0;i<*anz;i++)
    {
            printf("\nWert %d:",i+1);
            scanf("%d",&f[i]);
            f[i]=f[i]%10000000; /* maximal 7-stellige Zahlen */
    }
 }
  else
    zufall(f,&*anz);

}

/* Erzeugung der Werte ueber Zufallszahlen */ void zufall(int f[], int *anz) {

 int i;
 srand( (unsigned) time (NULL) );
 printf("\nErzeugung der Werte ueber Zufallszahlen");
 do{
         printf("\nWieviele Werte sollen erzeugt werden (max. %d)?",MAX);
         scanf("%d",&*anz);
 }while( *anz==0 || *anz>MAX );
 for(i=0;i<*anz;i++)
         f[i]=rand()%10000000; /* maximal 7-stellige Zahlen */

}


void sortieren(int f[], int anz) {

 int help,i,j;
 printf("\n\nJetzt wird sortiert, bitte gedulden Sie sich einen Moment!\n");
 for(i=1;i<anz;i++)
         for(j=0;j<anz-i;j++)
                 if(f[j]>f[j+1])
                 {
                         help=f[j];
                         f[j]=f[j+1];
                         f[j+1]=help;
                 }

}


void ausgabe(int f[], int anz) {

int i;
for(i=0;i<anz;i++)
        printf("%8d",f[i]);

}


int main(void) { int feld[MAX];

 int anzahl=0; /* evtl. als Zaehler oder aehnliches zu verwenden */

/* -------- Eingabe -------------------- */

 eingabe(feld,&anzahl);

/* -------- Ausgabe unsortiertes Feld -------------------- */

printf("\n\nDas unsortierte Feld lautet:\n");
ausgabe(feld, anzahl);

/* Realisieren Sie an dieser Stelle die Ausgabe aller Werte des

  unsortierten ARRAY's.
  Beachten Sie dabei, dass je nach der moeglichen Groesse der
  eingegebenen Werte bei der Ausgabe ein Zeilenumbruch innerhalb
  einer (mehrstelligen) Zahl erfolgt bzw. dass bei groesseren
  Elementezahlen nicht alle Werte auf den Bildschirm passen.
  Versuchen Sie solche Effekte zu vermeiden. */

/* -------- Sortieren ----------- */

/* Sortieren Sie hier das Feld mit einem beliebigen Sortieralgorithmus

  (z.B. bubblesort). */
sortieren(feld,anzahl);

/* -------- Ausgabe sortiertes Feld -------------------- */

printf("\n\nDas sortierte Feld lautet:\n");
ausgabe(feld, anzahl);

/* Realisieren Sie an dieser Stelle die Ausgabe aller Werte des

  sortierten ARRAY's wie oben. */
printf("\n\n");
return 0;

}