C Berechnung / Ausgabe von Array

Status
Für weitere Antworten geschlossen.

ShaleX

Lt. Commander
Registriert
Mai 2009
Beiträge
1.573
Sodele, ich moechte in C mit Arrays arbeiten. Zum start wollte ich mit einem Array anfangen.
Das Array besteht aus 10 Int Elementen.

Von diesem Array moechte ich die Anzahl der Elemente, die groesste und die kleinste Zahl ausgeben. Das funktioniert auch bis dato.

Jedoch moechte ich nun den Mittelwert der Elemente des Arrays berechnen (Eigentlich ist es ja nur die Summe / Anzahl der Elemente), sowie die Elemente des Arrays als Liste ausgeben.

Nur finde ich nicht so wirklich einen Anfang grade :D

Code:
#include <stdio.h>
#include <stdlib.h>

int main(void) {


/*
============================================================================
===============        Vorzuweisungen des Arrays         ===================
============================================================================
 */

 int zahlen [] = {7, 72, 10, 39, 55, 61, 23, 43, 27, 87}; // Arrays mit 10 Int Elementen

 int s = sizeof zahlen / sizeof *zahlen;
 int i = 1;

  int *groesste = zahlen;
  int *kleinste = zahlen;

  for (; i<s; i++)
  {

   if (*kleinste >= zahlen[i])
   {
    groesste = kleinste;
    kleinste = &zahlen[i];
   }

   else if (*groesste < zahlen[i])
   {
    groesste = &zahlen[i];
   }
  }

/*
============================================================================
===================      Ausgabe der Array-Elemente    =====================
============================================================================
 */

 printf("Anz. Elemente : %d\n", sizeof(zahlen) / sizeof(int));
 printf("Die groesste Zahl ist : %d\n", *groesste);
 printf("Die kleinste Zahl ist : %d\n", *kleinste);

return EXIT_SUCCESS;
}

Die Ausgabe funktioniert wie oben beschrieben ganz gut soweit:

Code:
Anz. Elemente : 10
Die groesste Zahl ist : 87
Die kleinste Zahl ist : 7
 
Du scheinst zu wissen wie eine Schleife funktioniert, Grundrechenarten klappen offensichtlich auch schon. Wo genau liegt dein Problem?

PS: Wer hier ne Lösung postet, bekommt eins aufn Deckel! :p
 
Und wo ist nun das Problem? Die Anzahl der Elemente hast du, musst du nur noch die Summe berechnen und teilen.
 
@Green Mamba: darf ich ihm einen Tipp geben, dann kommt er sicher dahinter wie es geht, denn ich bin mir sicher, dass er weiß wie er zusammenzählt, bloß nicht wie er die Division programmieren muss!
 
unabhängig von deiner frage: schau dir die zeile 26 nochmal genau an.
 
Zuletzt bearbeitet:
@ hilfen: Nein darfst du nicht. Natürlich darfst du. ;) Aber er hat doch schon geschrieben was zu tun ist. Ich sehe nirgendwo ein Problem. Die Aufgabe hat er verstanden, Summieren kann er mit Sicherheit auch (mit Zeigern kann er ja umgehen). Ich weiß jetzt nicht woran es hakt. Eine Variable zu deklarieren und diese aufzusummieren sollte eigentlich jeder können.
 
Ja ich glaub ich hab mich hier nur ein bisschen selber verwirrt :D

Code:
 double summe;
  double durchschnitt;
  summe = zahlen[0]+zahlen[1]+zahlen[2]+zahlen[3]+zahlen[4]+zahlen[5]+zahlen[6]+zahlen[7]+zahlen[8]+zahlen[9];
  durchschnitt = summe / s;

Jetzt funktionierts ^^

ma gucken ob ich jetzt noch die Liste hinkriege xD
 
Warum machst du nicht einfach
Code:
double summe = 0;

for(;;)
  summe += zahlen[i]

double durchschnitt = summe / s;
 
Mein Eclipse ist da ein bisschen zickig, ich bin froh das es mit meiner umstaendlichen Art funktioniert hat.

Mit deiner Loesung kommt nur 'Nothing to build for arrays' :D
 
Sorry aber
summe = zahlen[0]+zahlen[1]+zahlen[2]+zahlen[3]+zahlen[4]+zahlen[5]+zahlen[6]+zahlen[7]+zahlen[8]+zahlen[9];
solltest du nichtmal in Erwägung ziehen!
Oder wie löst du das mit deutlich größeren Arrays?
Du kannst doch schon for-schleifen!
 
Ja, aber fuer die Aufgabe reicht es ja.

Ich mein, mein eclipse zickt so rum selbst die funktionierende loesung jetzt , spackt manchmal rum, dass ich 5x neustarten muss bis es wieder funktioniert ohne was geaendert zu haben...
 
Falls du am oberen Teil nichts verändert hast, ist der nach wie vor falsch, ersetze mal die 7 durch ne 700 und schau, was angeblich das Maximum ist.
 
edit

ah maxwell hatte deinen vorherigen post uebersehen. Ja die zeile 26 is natuerlich totaler mist, nun funktionierts auch :)


Jedoch habe ich nun ein anderes problem. Statt des festgelegten Arrays moechte ich nun meine eigenen Eingaben machen.
Ich habe jetzt mal so angefangen
Code:
	int zahlen [10];

		 scanf("%d %d %d %d %d %d %d %d %d %d"
				        ,&zahlen[0]
				        ,&zahlen[1]
				 	    ,&zahlen[2]
				 	    ,&zahlen[3]
				 	    ,&zahlen[4]
				 	    ,&zahlen[5]
				 	    ,&zahlen[6]
				 	    ,&zahlen[7]
				 	    ,&zahlen[8]
				 	    ,&zahlen[9]);

jedoch kommt damit totaler Bloedsinn raus

Code:
7, 72, 10, 39, 55, 61, 23, 43, 27, 87
Anz. Elemente : 10
Die groesste Zahl ist : 1997376725
Die kleinste Zahl ist : -623380908
Die Summe der Zahlen ist : -911430548.000000
Die Durchschnitt der Zahlen ist : -91143054.800000
 
Zuletzt bearbeitet:
Du kennst doch die Vorzüge der for-Schleife. Verwende sie doch, um die Werte nacheinander einzulesen.
Tipp: Wenn i deine Laufvariable ist, kommst du bequem an die richtigen Stellen mit (zahlen+i), das spart das & und die Index-Adressierung.

Edit: Welche Probleme macht Eclipse bei dir denn überhaupt? In jedem Fall sollte die Summe auch in einer for-Schleife berechnet werden, alles andere macht keinen Sinn, oder willst du bei einem Array von 700 Elementen deinen Code noch verwenden? ;) Wenn Fehler beim Compilieren auftauchen, poste sie doch einfach hier, je nach Compiler bekommt man ganz brauchbare Meldungen.
 
Zuletzt bearbeitet:
Ich habe da mal eine zwischenfrage, wieso ist seine laufvariable i = 1? Muss der array nicht bei null anfangen bzw sollte er nicht?
 
er initialisiert minimum und maximum mit dem ersten element und braucht dann nur noch für alle anderen elemente zu prüfen, ob sie größer / kleiner sind. die anderen fangen bei 1 an.
 
Ja, aber fuer die Aufgabe reicht es ja.

Ich mein, mein eclipse zickt so rum selbst die funktionierende loesung jetzt , spackt manchmal rum, dass ich 5x neustarten muss bis es wieder funktioniert ohne was geaendert zu haben...
Evtl ist es gerade Sinn der Aufgabe die Verwendung von Schleifen zu verstehen? Ich hab an der Uni solche Lösungen nie durchgehen lassen.
Wenn n Lehrling lernen soll mit nem Bagger ein Loch zu graben und er machts mit ner Schaufel weil er den Bagger nicht bedienen kann würd ich auch nicht sagen "ok, für dieses Loch hats gereicht"

Ich glaub auch nicht, dass dein Eclipse da Schuld ist... das ist immerhin eine der besten Entwicklungsumgebungen die es gibt. Wenns Probleme gibt verursacht man die als Anfänger zu 100% selbst. Poste doch mal den genauen Code und die Fehlermeldung.. sicher kann dir hier wer helfen.
 
Zum einen habe ich den Eindruck, dass es sich hier um eine Hausaufgabe handelt, zum anderen fehlt mir der Eindruck, dass der TO hier so recht Eigeninitiative zeigt. Aus diesen Gründen schließe ich den Thread.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben