Frage von leon966, 54

Programmieren - Vektorlängebeispiel?

Hallo alle zusammen Die Angabe ist: Schreibe ein Programm, dass - abfragt wie viele Werte eingelesen werden, wobei maximal 10 erlaubt sind. Will man mehr eingeben, so muss das Programm nachfragen. - in einem Feld mit max. 10 Werten werden diese Werte eingelesen. - die Summe der Quadrate dieser Werte ermittelt und - zuletzt von der Summe die Wurzel gezogen und als Vectorlänge ausgibt. Das Programm wiederholt sich immer wieder.

Ausschauen sollte es dann anscheined so: Anzahl der Werte: 3 Wert 1: 4.5 Wert 2: 1 Wert 3: 7 Vektorlänge: 8.38

Ich tue mich sehr schwer beim programmieren und bekomme nur Blödsinn bei meinem Programm raus. Ich schaffe nicht das, dass Programm ''Wert 1'' sozusagen hinschreibt. Es sagt Anzahl der Werte und danach Wert 6253637 oder so eine lange Zahl. Ich bräuchte echt dringend Hilfe. Ich arbeite mit Codeblocks.

Das wäre mein Programm: #include

int main() { float n[10] = {}; int werte; while(11>0) { printf("Anzahl der Werte: "); scanf("%d", &n); printf("Wert %d: "); scanf("%d", &werte); if(werte>=11) { printf("Maximal 10 Werte moeglich!\n"); continue; } } }

Antwort
von Gehilfling, 26

Bei printf("Wert %d: "); gibst du einen integer-Wert aus, der aber nicht vorhanden ist. %d ist der Platzhalter im String für den Wert, aber du müsstest anschließend noch "n" als Argument hinzufügen, damit dort auch der Wert ausgegeben wird.

Folglich wäre das hier richtig:

printf("Wert: %d", n);

Ebenso ist deine while-Abfrage unsinnig, da immer erfüllt (11 ist immer größer als 0). Hat den selben Effekt wie "while(1)".



Kommentar von leon966 ,

Was soll ich dann, aber in die Klammer von while schreiben?

Kommentar von Gehilfling ,

Eine Bedingung, die dann "false" wird, wenn du die Schleife nicht weiter aufrufen möchtest. Das wäre in deinem Fall das Erreichen der "werte" Anzahl an Eingabewerten.

Als kleine Strategie:

- Frage vor der While-Schleife ab, wie viele Werte du einlesen möchtest in dein Programm.

- Dann kannst du in der While-Schleife so lange Einlesen, bis du "Werte" erreicht hast. Das kannst du mit einer Laufvariable (schlichterweise "i") bewerkstelligen: while(i<Werte). Beispiel: Du möchtest 5 Werte einlesen und befüllst dein Array n[] an den Indexen 0-4 mit den 5 Werten, bei i = 5 (5. Index existiert nicht mehr) springt dein Programm aus der While, da "while(5<5) = false".

- In der while() selbst kannst du mit i = 0 beginnen und mit scanf("%d", &zahl) eine zahl einlesen, welche du dann in n[i] = zahl ablegst. So befüllst du dein Array mit den Werten. Allerdings musst du beachten, dass wenn du weniger als 10 Werte einliest, deine nicht belegten Arrayplätze undefinierte Werte haben, sofern du das Array vorab nicht mit 0 initialisierst (n[10] = {};)

Kommentar von leon966 ,

Fragt man wie viele Werte ich einlesen will mit printf? Weil genau das verwirrt mich in der Angabe.

Kommentar von Gehilfling ,

printf ist nur für Ausgaben da. scanf liest Werte von der Tastatur ein.

Kommentar von leon966 ,

Verstehe und wie frage ich die Menge, also wie viel ich einlesen will

Kommentar von Gehilfling ,

Genau so, über einen scanf - Befehl.

Keine passende Antwort gefunden?

Fragen Sie die Community