Bräuchte nochmal ein klein bisschen hilfe bei einer C aufgabe.
Ich muss eine zahlenfolge eingeben maximal 20zahlen und diese sortiert ausgeben, aber jeder durchlauf soll angezeigt werden, soweit so gut das programm läuft auch, jedoch hab ich 2 sachen die mich sehr stören
1. Man muss jetzt -1 eingeben wenn man keine zahlen mehr eingeben möchte, bekomme es aber irgendwie nur so hin, fände es besser wenn man am ende enter drückt und fertig ;)
2. Fänd ich es schöner wenn man nicht nach jeder zahl Enter eingeben muss, sondern das ganze einfach mit einem lerrzeichen gelöst wird, jedoch habe ich dann das problem das es nur bei genau 20 Zahlen geht
Wäre vielleicht jemand so nett und schaut mal drüber?
Hier der Code
Ich muss eine zahlenfolge eingeben maximal 20zahlen und diese sortiert ausgeben, aber jeder durchlauf soll angezeigt werden, soweit so gut das programm läuft auch, jedoch hab ich 2 sachen die mich sehr stören
1. Man muss jetzt -1 eingeben wenn man keine zahlen mehr eingeben möchte, bekomme es aber irgendwie nur so hin, fände es besser wenn man am ende enter drückt und fertig ;)
2. Fänd ich es schöner wenn man nicht nach jeder zahl Enter eingeben muss, sondern das ganze einfach mit einem lerrzeichen gelöst wird, jedoch habe ich dann das problem das es nur bei genau 20 Zahlen geht
Wäre vielleicht jemand so nett und schaut mal drüber?
Hier der Code
Code:
#include <stdio.h>
int main(int argc, char *argv[]){
int zahlen[20];
int zahl_min,zahl_pos;
int i,x,z,temp=0;
int c;
int scanner_count = 0;
int temp_zahl = 0;
int arraysize=0;
/*FIX: problem wenn dateiende: CR+LF*/
/*FIX: zahleneingabe von mir muss mit -1 beendet werden*/
int a=0,old_a,new_a;
printf("EOF:%i\n\n",EOF);
/*einlesen der daten solange bis EOF erreicht ist*/
while(a<20){
if(a==0){
/*als Information für den benutzer*/
printf("Da EOF -1 ist, wird die Eingabe automatisch beendet, wenn Sie -1 eingeben\noder die Datei -1 enthaelt!!!!\n\n");
}
old_a = a;
printf("\n%i. Wert: ",a+1);
new_a = scanf("%i",&zahlen[a]);
printf("-->%i",zahlen[a]);
a+=new_a;
if((x = getchar()) == EOF || zahlen[a-1] == EOF) break;
/*printf("%i-->%i||%i||%i\n",zahlen[a-1],a,old_a,new_a);*/
arraysize++;
}
/*Ausgabe der eingelesenen Werte*/
printf("\nAnzahl der eingelesenen Werte = %i\n",arraysize);
/*Ausgabe der unsortierten Daten */
printf("Ausgabe der unsortierten Zahlen:\n\t\t\t");
for(i=0;i<arraysize;i++){
printf("%i\t",zahlen[i]);
}
printf("\n");
/*Daten werder sortiert*/
for(z=0;z<arraysize-1;z++){
/*-1 da letzter wert nicht mehr geprüft werden muss*/
zahl_min = zahlen[z];
zahl_pos = z;
for(x=z+1;x<arraysize;x++){
if(zahlen[x] < zahl_min){
zahl_min = zahlen[x];
zahl_pos = x;
}
}
/*hier werden daten getauscht*/
temp = zahlen[z];
zahlen[z] = zahlen[zahl_pos];
zahlen[zahl_pos] = temp;
/*ausgabe der sortierten daten*/
printf("Durchlauf %i\t",z+1);
for(i=0;i<arraysize;i++){
printf("\t%i",zahlen[i]);
}
printf("\n");
}
return 0;
}