PraktikumProgrammierung1:Aufgabe 2
Aus Tudwiki
#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
int main(void) {
int feld[MAX]; int anzahl=0,i,j,help; /* evtl. als Zaehler oder aehnliches zu verwenden */ char ch;
/* -------- Eingabe -------------------- */
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 \n"); printf("Wieviele Werte sollen eingegeben werden?"); scanf("%d",&anzahl); for(i=0;i<anzahl;i++) { printf("\nWert %d:",i+1); scanf("%d",&feld[i]); feld[i]=feld[i]%10000000; /* maximal 7-stellige Zahlen */ }
} else { /* Erzeugung der Werte ueber Zufallszahlen */ printf("\nErzeugung der Werte ueber Zufallszahlen \n"); printf("Wieviele Werte sollen erzeugt werden?"); scanf("%d",&anzahl); for(i=0;i<anzahl;i++) feld[i]=rand()%10000000; /* maximal 7-stellige Zahlen */ }
/* -------- Ausgabe unsortiertes Feld -------------------- */
printf("\n\nDas unsortierte Feld lautet:\n"); for(i=0;i<anzahl;i++) printf("%8d",feld[i]);
/* 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 ----------- */
printf("\n\nJetzt wird sortiert, bitte gedulden Sie sich einen Moment!\n"); for(i=1;i<anzahl;i++) for(j=0;j<anzahl-i;j++) if(feld[j]>feld[j+1]) { help=feld[j]; feld[j]=feld[j+1]; feld[j+1]=help; }
/* Sortieren Sie hier das Feld mit einem beliebigen Sortieralgorithmus
(z.B. bubblesort). */
/* -------- Ausgabe sortiertes Feld -------------------- */
printf("\n\nDas sortierte Feld lautet:\n"); for(i=0;i<anzahl;i++) printf("%8d",feld[i]);
/* Realisieren Sie an dieser Stelle die Ausgabe aller Werte des
sortierten ARRAY's wie oben. */
printf("\n\n");
return 0;
}