printf("Sie werden nun aufgefordet, 5 Werte einzugeben\n");
for (x = 0; x < 5; x++)
{
printf("Wert Nr.%i:",x+1);
scanf("%i", &a[x]); }
for (z; z < 5; z++) {
printf("\nDer Wert %i: %i",z+1,a[z]);
}
getch();
}
So gehts... Musst dem PC ja sagen ob er deine Zahl in a[0], a[1]... oder a[4] kopieren soll. Und welches Element er am Ende wieder ausgeben soll. Bei dir hat da nur ein a gestanden
Hab auch so ein ähnliches Programm geschrieben, nur dass es die eingebenen Werte sortiert. Kannst es ja auch mal zuerst selber versuchen bevor du dir die Lösung anschaust.
Hier ein paar Hinweise: Sortieren kann man mit 2 geschachtelten for-Schleifen machen. Also mit der äußeren Schleife (i) gehst du auf das [0]. Element und dann geht die innere Schleife (b) alle anderen Elemente durch und "schaut" nach ob die Zahl da drinne größer ist. Falls ja, muss man das Element [i] mit dem Element [b] tauschen. (nachschauen obs größer ist kann man mit nem IF machen) Danach, wird i hochgezählt und das gleiche nochmal gemacht, solange bis man halt mit dem Array durch ist.
In dem Fall würde das Programm als erstes die 5 mit der 5 Vergleichen, die sind gleichgroß also muss b einfach hochgezählt werden. Danach wird die 5 mit der 6 verglichen. Die 6 ist größer, also muss die 5 mit der 6 getauscht werden und b danach hochgezählt werden... das gleiche dann halt noch mit den anderen Zahlen. Am Ende müsste die 10 im [0]. Element stehen Nachdem b einmal durchgelaufen ist wird i hochgezählt und b fängt wieder vorne an. Dann halt wieder das gleiche nur, dass jetzt nicht mehr in das [0]. Element getauscht wird sondern in das [1].
Wenn du das Minimum/Maximum haben willst kannst du ja dann einfach nach dem sortieren das erste Element, also [0] und das letzte [4] ausgeben.
Du hast 5 Zettel vor dir liegen auf denen Zahlen draufstehen und sollst die sortieren. Du musst dir vorstellen, du kannst nur sagen ob eine Zahl größer, oder kleiner als eine andere ist^^
Herrschaftszeiten!!! so klappts mit dem Max aber nicht mit dem Min
#include <stdio.h> #include <conio.h>
void main()
{
int x,max=1,min=1; int a[5],temp,t,i;
printf("Sie werden nun aufgefordet, 5 Werte einzugeben\n");
for (x = 0; x < 5; x++)
{
printf("Wert Nr.%i:",x+1);
scanf("%i", &a[x]); }
max=a[0];
for(i=0;i<5;i++) { if(max<a[i]) max=a[i];
min=a[0];
} for(t=0;t<5;t++) { if(min>a[t]) min=a[t]; }
printf("Maximum:%i \n Minimum:%i", max, min);
getch();
}
Das mit dem Max ist auch nicht optimal, weil die Zahlen im Array mit 1 verglichen werden. Wenn jetzt aber dein Maximum unter 1 ist gibts Probleme >.< (man kann ja auch negative Zahlen eingeben).
Deswegen hab ich das oben auch nochmal gemacht. Jetzt kopiert der PC den Wert im ersten Element in deine min/max Variable, dann gibts keine Probleme mehr xD
Ist halt besser die erste Zahl ausm Array zum Vergleichen zu nehmem anstatt einer 1.
Musst nur mal überlegen wenn deine Max Variable 1 ist und in deinem Array nur negative Zahlen drinne liegen. Dann kommt nur Müll raus^^
Beim Minimum das gleiche, wenn da im Array eine Zahl drinne ist die größer als 1 ist, dann überspringt der die Bedingung einfach. Auch wenn die Zahl vielleicht dein echtes Minimum gewesen wäre.
Du könntest die Starwerte für die Min/Max Variablen auch auf 9999999/-9999999 setzen dann funktioniert es glaube ich auch.
void main() {int a; int* pa; printf("Zahl eingeben:\n"); scanf("%d",&a); pa=a; // *pa dann kackts ab printf("%d\n",a); printf("%d\n",pa); // kann man das überhaupt machen? getch(); }
ganz einfache sache ich will einfach nur ein zeiger auf arichten aber essss gehhhhhhhhhhhhhhhhhhht neeeeeeeeeeeeeeeeeet!!
Damit willst du sicher bezwecken pa auf a zeigen zu lassen.
um das mal so zu klären:
pa ist eigentlich auch nur eine Variable, wie a auch. pa hat z.b. die Speicheradresse 123 a hat die Adresse 321
in a hast du dank scanf schon ne Zahl drin, also steht im Speicher bei 321 z.b.: 5 so dein Pointer brauch jetzt die Adresse von a. Wenn du einfach nur pa = a hinschreibst gibst du pa keine Speicheradresse, sondern den Wert von a, also 5. Deshalb meckert der Computer. Um pa die Speicheradresse zu geben musst du ein & vor dem a schreiben. Wenn du es dann so machst pa = &a; dann wird im Speicher bei der Adresse 123 die Speicheradresse von a eingetragen.
a Adresse: 132 Wert: 5
pa Adresse: 321 Wert: 123
Der Wert eines Pointers (also der Kram der so im Speicher steht) ist immer eine Speicheradresse. Mit dem * kannst du auf diese Speicheradresse zugreifen. z.B.: *pa = 6; Da macht der Computer dann das: Er schaut nach wat im Speicher von pa (321) drin steht geht dann da (123) hin und schreibt was anderes rein (6).
Hast du dann noch nen pointer (mal pb genannt) und willst das er auch auf a zeigt, kannst du 2 dinge machen: pb = &a; also das gleiche wie oben auch oder pb = pa; Da im Speicher von pa eine Adresse drin steht, kann sie in pb reingeschrieben werden. pa hat ja die Adresse von a drin, also nun pb auch.
void main() {int a; int* pa; printf("Zahl eingeben:\n"); scanf("%d",&a); pa=&a; // pointer a hat dann die speicheradresse von a printf("A: %d\n",a); // a=zb 3 printf("PA: %d\n",*pa); //auch dann 3 *pa=6; // jetzt hat pa den wert 6 bekommen printf("A: %d\n",a); //a auch 6 printf("PA=6: %d\n",*pa); // ebenfalls getch(); }
also so gehts dann. richtig kommentiert? was sollte man noch wichtiges über zeiger wissen^^?????