Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Aufgabe für Schleifen in C » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 9 Beiträge
as_string

Ich hab mal hier meinen Vorschlag (mit Array und Schleife...)
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
#include <stdio.h>
#include <limits.h>

int main() {
      double schnitt 0;
      int max INT_MINmin INT_MAXsumme 00;
      int zahlen[10];
      printf("Bitte geben Sie eine ganze Zahl ein\n");
      for(010i++) {
            printf("Die %d. Zahl:  "i+1);
            scanf("%d", &zahlen[i]);
            summe summe zahlen[i];
            if (zahlen[i] > max) {
                max zahlen[i];
            }
            if (zahlen[i] < min) {
                min zahlen[i];
            }
      }

      for (010i++) {
          printf("Die %d. Zahl ist: %d"i+1zahlen[i]);
          if (zahlen[i] == min)
            printf(" <--- Minimum");
          if (zahlen[i] == max)
            printf(" <--- Maximum");
          printf("\n");
      }
      schnitt = (summe*1.) /10.;
      printf("Die Summe der Zahlen ist %d\n"summe);
      printf("Der Durchschnitt lautet %.1f\n"schnitt);
      printf("Das Minimum ist %d und das Maximum %d\n"minmax);
      return 0;
}


Gruß
Marco
Butterblume

Das ist der "PÄDAGOGISCHE" Ansatz meines Dozenten. Wir hatten davor auch eine Aufgabenstellung, die man normalerweise mit Schleifen lösen müsste. Und wir mussten es mit if/else lösen, was zu einem monströsen grauenvollen Apparat geführt hat...ich war da schon am verzweifeln.

Ja er will das so....vielleicht dient es auch nur zur Abschreckung, keine Ahnung.

Es ist unsinnig, denn wenn man 100 Zahlen eingeben sollte, müsste man dann 100 Variablen definieren???

Er will eben haben, dass man mit unzureichenden Mitteln irgendwie diese Aufgabenstellung löst.

LEIDER traurig

ps
Man sollte dort jemanden Auffordern eine Zahl einzugeben, die entweder eine ganze oder eine Kommazahl sein sollte. Dann sollte man die Zahl wieder ausgeben....aber eben mit der genauen Nachkommastelle!!!!
Erlaubt war nur IF !
Programmier das mal, das ist schlimm. Einzig, dass man bei 4 Nachkommastellen runden durfte (also nicht noch weitere Nachkommastellen ausgeben musste) Musterlösungen gibt s nicht...die findet er doof.

Wer also nicht auf die Lösung kommt, kann es sonstwo suchen.
as_string

Bist Du sicher, dass das irgendeinen Sinn macht? Dann brauchst Du auch erst gar keine Schleife machen, sondern kannst gleich das printf/scanf schreiben mit zahl1, dann mit zahl2, etc. Dann sparst Du wenigstens diese riesigen if-else if-else if-else if-else if-etc. Blöcke.

Ich hatte gestern das mal selbst (mit Array) programmiert. Allerdings komme ich leider gerade nicht dran, ist auf dem anderen Rechner. Da habe ich mir bei der Eingabe nicht nur die Maximum und Minimum-Werte gemerkt, sondern auch gleich noch den Index, wo ich den gefunden habe. Dann habe ich bei der Ausgabe kein Newline (also "\n") angehängt erstmal, sondern erst mit if geschaut, ob es Maximum und/oder Minimum ist (es könnte beides sein, wenn alle Eingabewerte gleich sind). Dementsprechend hab ich dann die Ausgabe für Min/Max gemacht, die dann ja in derselben Zeile erscheint. Danach erst habe ich nur ein printf("\n"); gemacht.
Die Frage ist jedoch, ob das mit dem Index-merken überhaupt nötig ist. Wenn Du das Minimum/Maximum kennst, kannst Du ja auch direkt die Zahl damit vergleichen. Angenommen jemand gibt nur Einsen ein, dann wären ja alle Eingabewerte sowohl Minimum als auch Maximum. Bei mir würde nur der erste Wert als Min/Max benannt werden, weil ich mir nur einen Index merke.

Gruß
Marco
Butterblume

Also wenn man vor der Schleife
int zahl1, zahl2.....,zahl10; deklariert.

Und dann diese 10 Variablen in der Schleife auf folgende weise einbaut

for(i=1; i<11; i= i+1)
{
........

if(i==1){
zahl1 = zahl;
}else if(i==2{
zahl2 = zahl;
}.....usw
}
printf("Die 1. Zahl war %d\n", zahl1);
printf("Die 2. Zahl war %d\n", zahl2);
...

dann wird tatsächlich es so ausgegeben, wie von der Aufgabenstellung gefordert.

Nur das mit den Pfeilen beim Max und Min, da weiß ich einfach nicht wie ich das machen soll???
Butterblume

Wir haben Arrays noch nicht besprochen. Ich bin noch ziemlich am Anfang des Studiums.
Ja.."Anweisungen" ist nicht passend.

Ich soll die Aufgabe nur mit Schleifen oder Kontrollstrukturen lösen.

Ich dachte schon, einfach zusätzlich 10 Variable zu deklarieren, um bei jedem Durchlauf dann eine zu benutzen...ob das sinnvoll ist, weiß ich nicht.
as_string

Arrays sind doch keine "Anweisungen". Du darfst ja auch Variablen verwenden. Wieso dann keine Arrays?
Wenn Du keine Arrays hast, kannst Du das nicht wieder ausgeben. Du schreibst ja schon richtig, dass Du die Werte irgendwo speichern müsstest.

Gruß
Marco
Butterblume

vielen Dank für deine Hinweise.

Nur leider darf ich keine anderen Anweisungen verwenden als for, while , do-while. bzw if/ else.

Deswegen darf ich keine arrays verwenden. unglücklich
as_string

Du kannst ein Array verwenden und darin die Zahlen zwischenspeichern.
Um das Minimum und Maximum zu bestimmen, initialisiere bei Eingabe der ersten Zahl beide Variablen mit der ersten Zahl. Danach aktualisiere das Minimum nur, wenn eine kleinere Zahl als das bisherige Minimum kommt, das Maximum nur, wenn eine größere Zahl kommt.
Alternativ kannst Du auch vor der Schleife das Maximum auf den kleinstmöglichen Wert für eine Integer-Zahl setzen (da gibt es normalerweise ein Macro INT_MIN dafür) und das Minimum auf den größtmöglichen Wert (INT_MAX). Dafür brauchst Du aber die Header-Datei limits.h

Kannst Du das mal probieren?

Noch ein paar Anmerkungen: Es ist zwar nicht falsch, aber in c lässt man Schleifen-Indizes häufig von 0 los laufen. Das liegt daran, dass die Array-Indizes auch bei 0 anfangen.
Außerdem kann man i = i + 1 in C mit i++ abkürzen, was auch häufig verwendet wird.
Man würde also eher
php:
1:
2:
3:
4:
for (010i++) {
    printf("Die %d. Zahl:  "i+1);
    ...;
}

schreiben. Da i jetzt von 0 bis 9 läuft, brauchst Du für die Anzeige dieses "+1". Aber wenn Du ein Array verwenden musst, dann wird das wieder einfacher.

Gruß
Marco
Butterblume Aufgabe für Schleifen in C

a-Die Aufgabenstellung ist: Man soll den Benutzer 10 ganze Zahlen eingeben lassen.
b-Direkt danach sollen die eingegebenen Zahlen (quasi als Kontrollausgabe) wieder ausgegeben werden.
c-Es soll sowohl das Maximum als auch das Minimum ermittelt werden.
Dieses soll dann bei der Kontrollausgabe kenntlich gemacht werden.
d-Danach soll die Summe der Zahlen ermittelt werden.
e-Zum Schluss soll der Durchschnitt ausgegeben werden.
z.B. so:

Bitte geben Sie 10 ganze Zahlen ein.
Die 1. Zahl ist: 3
Die 2. Zahl ist: 5
Die 3. Zahl ist: -4
....
....
Die 10. Zahl ist: 12
Die 1. Zahl war 3
Die 2. Zahl war 5
Die 3. Zahl war -4 <---ist das Minimum
.....
Die 10. Zahl war 12<---ist das Maximum
Die Summe der Zahlen ist 21
Der Durchschnitt ist 2.1

Jeder Teil ist für sich genommen nicht so schwer - nur alles zusammen zu bringen,
macht mich ratlos. geschockt
Also einen Teil kann ich problemlos lösen:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
#include <stdio.h>
int ()
{
      double schnitt 0;
      int max 0min 0summe 00zahl 0;
      printf("Bitte geben Sie eine ganze Zahl ein\n");
      for(1111)
      {
            printf("Die %d. Zahl:  "i);
            scanf("%d", &zahl);
            summe summe zahl;
      }
      schnitt = (summe*1.) /10;
      printf("Die Summe der Zahlen ist %d\n"summe);
      printf("Der Durchschnitt lautet %.1f\n"schnitt);
      return 0;
}

Damit habe ich
a-
d-
und e-
gelöst.
Nur wie kann ich die Kontrollausgabe lösen?? unglücklich Denn ich müsste ja irgendwo
jede Eingabe des Nutzer speichern
Und - wie gesagt - ich darf nur Schleifen und if/else benutzen.

Ich wäre für einen Lösungsansatz oder eine Idee sehr dankbar! Daumen hoch