C program for schleife?
Ich habe diese Anweisung bekommen:
Übung for schleife:
Das Programm soll die Summe, Mittelwert, MAX und MIN-Wert einer eingegebenen Zahlenfolge berechnen uns ausgeben
Wenn der User keine Zahl eingibt und einfach mit Enter bestätigt, soll das einlesen abgebrochen werden.
-----------------------------------------------------------------------------------------------------------------------------------
und ich habe es so gelöst:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
printf("Geben sie die Zahl a: ");
scanf("%i", &a);
printf("Geben sie die Zahl b: ");
scanf("%i", &b);
int max = a;
int min = b;
if(max < b) {
max = b;
min = a;
};
int mittelwert = a/b;
int summe = a+b;
// ignorier die for-schleife
for (min; min < max; min++) {
};
printf("Max: %i \n Min: %i \n Mittelwert: %i \n Summe: %i \n", max, min, mittelwert, summe);
return 0;
}
Jetzt zu meiner frage, wo und wie soll ich eigentlich die for schleife benutzten wenn ich eine nicht mal brauche, wir haben keine Arrays etc. gelernt...
2 Antworten
hier ist der Source Code dazu:
int* zahlenfolge = NULL;
int laengeZahlenfolge = 0;
int summe = 0;
float mittelwert = 0;
int min = 0;
int max = 0;
printf("Bitte geben Sie an wie lang die Zahlenfolge sein soll: ");
scanf("%d", &laengeZahlenfolge);
zahlenfolge = (int*)malloc(sizeof(int) * laengeZahlenfolge);
int counter = 0;
printf("\n\n Eingabe der Zahlenfolge:\n");
while (counter < laengeZahlenfolge)
{
printf("\tBitte geben Sie eine Zahl ein: ");
scanf("%d", (zahlenfolge + counter));
counter++;
}
printf("\nEingabe der Zahlenfolge beendet-------------------------\n");
for (int i = 0; i < laengeZahlenfolge; i++)
{
summe += *(zahlenfolge + i);
}
mittelwert = summe / (laengeZahlenfolge * 1.0f);
min = *(zahlenfolge);
for (int i = 0; i < laengeZahlenfolge; i++)
{
if (min > *(zahlenfolge + i))
min = *(zahlenfolge + i);
if (max < *(zahlenfolge +i))
{
max = *(zahlenfolge + i);
}
}
printf("\nDie Summe der Zahlenfolge betraegt %d\n", summe);
printf("Der Mittelwert der Zahlenfolge betraegt %f\n", mittelwert);
printf("Der kleinste Wert der Zahlenfolge betraegt %d\n", min);
printf("Der groeßte der Zahlenfolge betraegt %d\n", max);
#include <stdio.h>
#include <stdlib.h>
int main()
{
int zeichenkette;
// abfragen wie lange unser zeichenkette sein soll
printf("Wie viele Zahlen wollen sie eingeben: ", zeichenkette);
scanf("%i", &zeichenkette);
// hier wird die länge des arrays bestimmt
int* array = malloc(zeichenkette * sizeof(int));
// deklaration
int sum = 0;
int lowest = 32767;
int max = 0;
for(int i = 0; i < zeichenkette; i++) {
// zahl angabe, diese wird zum array hinzugefügt
printf("Geben sie eine Zahl an: \n");
scanf("%d", &array[i]);
printf("MAX: %i \nMIN: %i \n", max, lowest);
// Der summe wird immer mit der geradden array integer addiert
sum = sum + array[i];
// wenn eine zahl gröẞer als = ist dann max variable überschreiben
if(max < array[i]) {
max = array[i];
};
// wenn es eine zahl in der array kleiner als 32767 gibt dann überschreiben
if(lowest > array[i]) {
lowest = array[i];
};
};
// da wir die summe schon haben und in die zeichenkette variable die länge haben können wir der mittelwert berechnen
int mittelwert = sum/zeichenkette;
// Ausgabe
printf("Summe: %i \nMittelwert: %i\nMax: %i\nMin: %i\n", sum, mittelwert, max, lowest);
}
Ich habe es schon selber geschafft, ich habe nur eine frage, wie beende ich jetzt eigentlich mein Programm wenn Enter gedrückt wird? Also wenn z.b keine Zeichenkette (die länge) nicht angegeben wird.
Es ist ein Konsolen- Applikation.
char eingabe = 0;
printf("\n\n");
while (eingabe != '\n')
{
printf("Bitte druecken Sie die Enter-Taste: ");
scanf("%c", &eingabe);
eingabe = 0;
scanf("%c", &eingabe); // Da im Input-Steam noch Werte sein kann führe ich diesen Befehl 2 mal aus
}
exit(0);
Es soll eine Zeichenfolge eingegeben werden kein max und min wert.
Wie ist das gemeint, soll ich eine printf for schleife machen wie oft printf ausgegeben werden soll und dann mit diese zahlen die summe etc. berechnen?
Ja, das Problem ist wir haben Arrays bisher nicht gemacht, in der Aufgabe wurde es auch nicht erwähnt, ich kenne mich schon mit JavaScript aus und wenn ich dort etwas benutzt habe was wir nicht gemacht haben würde es nicht als Punkt zählen...
Ja, dann mach ich es einfach mit eine Array.
Also sind meine Schritte richtig?
- 2 Zahlen abfragen
- die for-zwischen diese 2 zahlen durchlaufen;
- alle Zahlen in die array einpacken
- die summe etc berechnen
Was meinst du damit, wofür brauche ich dann die Array?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int zeichenkette;
printf("Wie viele Zahlen wollen sie eingeben: ", zeichenkette);
scanf("%i", &zeichenkette);
int* array = malloc(zeichenkette * sizeof(int));
int sum = 0;
int min = array[0];
int max = array[0];
for(int i = 0; i < zeichenkette; i++) {
printf("Geben sie eine Zahl an: \n");
scanf("%d", &array[i]);
sum = sum + array[i];
if(max < array[i]) {
max = array[i];
};
if(min > array[i]) {
min = array[i];
};
};
int mittelwert = sum/zeichenkette;
printf("Summe: %i \nMittelwert: %i\nMax: %i\nMin: %i\n", sum, mittelwert, max, min);
}
Ich habe jetzt das alles, und alle ausgaben sind richtig bis auf den min integer, bei dem kommt immer 0 als Ausgabe, hast du vielleicht ein plan warum das so ist?
OT: Ist 1993 dein Geburtsjahr? :)