P
Ich schreib ein Programm, dass per Eingabezeile gestartet wird. Beim Starten gibt der Benutzer an, wieviele Zahlen erzeugt und geordnet werden sollen.
Das ist meine unnuetz.h
int rndwert,anzahl,i,q,r,s,j,l,t,u,w;
char zahlen[65000];
int unnuetz (int);
int unnuetz2 (int);
int erzeugen (int,int);
void ausgabe (int);
void ausgabe2 (int);
Das ist die main datei.
int main( int argc, char* argv[] )
{
FILE * anfang;
unnuetz (argc);
anzahl = atof ( argv[1]);
unnuetz2 (anzahl);
srand(time(NULL));
erzeugen (anzahl,zahlen);
anfang=fopen ("schreibmich.txt","w");
if (anfang==NULL) perror ("Kann Datei nicht oeffnen!");
{
for ( i = 0 ; i < anzahl ; i++ )
{
fprintf (anfang ,"%d ", zahlen[i]);
printf ("%d ", zahlen[i]);
}
fprintf (anfang , "\n");
printf ("\n");
}
//anfang=fopen ("schreibmich.txt","w");
//ausgabe (anzahl);
hexhex(zahlen,anzahl);
ausgabe2(anzahl);
return 0;
Hier les ich ein, ob das Programm korrekt gestartet wurde.
"name.exe" "anzahl der zahlen"
#include "unnuetz.h"
int unnuetz (int argc)
{
if (argc > 2)
{
printf("Fehler bitte erneut starten\n");
return 5;
}
if (argc < 2)
{
printf("Fehler bitte erneut starten\n");
return 5;
}
}
Wenn das geklappt hat, wird die eingebene Zahl überprüft.
#include "unnuetz.h"
int unnuetz2 (int anzahl)
{
if ( anzahl < 0 )
{
printf("Positive Zahlen waeren was feines.\n");
anzahl=0;
return 5;
}
if ( anzahl < 2 )
{
printf("Denk nochmal nach bevor du hier was eingibst\n");
return 5;
}
if ( anzahl > 65000)
{
printf("Bitte geben Sie eine kleinere Zahl ein.");
return 5;
}
}
Negative Zahlen werden ausgeschlossen sowie Zahlen kleiner als 2 und alles was größer als 65000 ist. In Hinsicht auf die Ausgabeschleife in meinem Sortieralgorythmus wär eine noch kleinere Zahl angebrachter, aber ich wollt den Zahlenbereich "ausschöpfen", (auf 65000 abgerundet).
Danach sollen die Zahlen so wie sie erzeugt wurden ausgegeben werden, die Ausgabeschleife steht noch in der main, weil ich Deklarationsfehler kriege, wenn ich es in eine externe Funktion packen möchte.
"'FILE': nichtdeklarierter Bezeichner"
"'anfang': nichtdeklarierter Bezeichner"
Dann werden die Zahlen geordnet (das steht auch noch in main, weil ich den gleichen Fehler kriege, wie in der obrigen Schleife).
int hexhex (char v[], int anzahl)
{
FILE * anfang; // hier kommen die Deklarationsfehler sowie bei jedem weiteren anfang
j = 0;
l = 0;
t = 0;
u = 0;
w = 0;
anfang=fopen ("schreibmich.txt","w");
for (q = anzahl - 1; q > 0; q--)
{
for ( r = 0; r < q; r++)
{
if (zahlen[r] > zahlen[r + 1]) // hier werden zwei Zahlen in dem Array verglichen, und falls nötig um einen nach rechts getauscht.
{
int n = zahlen[r];
zahlen[r] = zahlen[r + 1];
zahlen[r + 1] = n;
t++; // das t benutz ich für die Ausgabeschleife
u++; // das u begrenzt die Anzahl der Ausgaben
}
else
{
t++;
}
if (r == q-1 )
{
if (u == 0) // hiermit will ich verhindern, dass die geordneten Zahlen mehr als einmal ausgegeben werden
{
return 5;
}
for ( s = 0 ; s < anzahl ; s++ )
{
fprintf (anfang ,"%d ", v[s]);
printf ("%d ", v[s]);
t=0;
u=0;
}
fprintf (anfang , "\n");
printf ("\n");
}
}
}
}
Danach folgt als letztes die Ausgabe2
#include "unnuetz.h"
void ausgabe2 (int anzahl)
{
printf ("Sie haben %i Zahlen ordnen lassen.\n", anzahl);
}
ps : Ich hab beim Reinschreiben noch ein paar unklarheiten, von denen ich glaube es wären welche beseitigt, dass mit dem char array[], schau ich mir auch noch genauer an, wenn ich wieder nach Hause komme.
Ich hoffe damit hast du einen kleinen Einblick in mein persönliches Chaos gewinnen können :). Ich wollte mich an dieser Stelle entschuldigen, falls es bisher so ausgesehen hat, als wollte ich die Lösung auf nem Silbertablett präsentiert kriegen.