Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum ::  C (alle ISO-Standards) ::  Array an Funktion übergeben?
Antwort schreiben
Benutzername:
Titel:
Nachrichtentext:
  :)  :D  ;)  :(  :p  :mad:  :rolleyes:  :eek:  :confused:  :cool:  :o)  :leak:  :live:  :die:  :idea:  :arrow:  :warning: 
                             
                         
         
           
                             
                             
                             
             


BBCode in diesem Beitrag deaktivieren [BBCode]
Smilies in diesem Beitrag deaktivieren
Array an Funktion übergeben? and 341293
     


Themen-Überblick 
(Aktualisieren)
Autor Nachricht
berniebutt
13:20:53 11.01.2017   Titel:   Zitieren

Dir fehlen noch wichtige Kenntnisse in C:
- was sind arrays?
- wie legt man arrays an?
- wie verweist man in funktionsparametern auf arrays?
- was sind adressen und zeiger?

Du kommst nicht drumrum, dich mit diesen grundlagen sorgfältig vertraut zu machen.
Es macht keinen sinn, die böcke in deinem code einzeln zu korrigieren.
Mache dich mit diesen hinweisen schlau und poste neu.
DirkB
14:29:28 10.01.2017   Titel:   Zitieren

Dila57 schrieb:
Ach, und wenn ich den Code mit dem return bei einlesen so ändere:

(Nur der Schluss)

C:
    for (i=0;i<n;i++) {        
        printf("%i, ",eingabe[i]);
    return eingabe[];
    }
}


dann wird nur der 1.Eingabewert angezeigt. Wie schaffe ich es, dass alle Werte aufgelistet werden?
So gar nicht!


DirkB schrieb:
Frag vorher, wieviel Werte es werden sollen, besorge dann den Speicher dafür und übergib diese Daten dann an einlesen
DirkB
14:26:53 10.01.2017   Titel:   Zitieren

Dila57 schrieb:
Bei der Funktion Mittelwert habe ich 3 Parameter gewählt, damit die main Funktion das Array, die Array-Grenze (n) sowie die Array Werte (i) übernimmt, ist das richtig? Oder habe ich da einen Denkfehler?
Ja.
Das erste was du mit der Variable i in der Funktion machst ist, sie auf 0 zu setzen (in der for-Schleife).
Also brauchst du den Wert von außen gar nicht. Dann kann die Variable auch lokal sein (wie in einlesen).
Besser noch, lokal in der Schleife.
Den Mittelwert brauchst du auch erst nach der Schleife berechnen.

Dila57 schrieb:
Und zu guter letzt: ich habe doch die Frage, wieviele Array Werte es sein sollen zu Anfang gestellt und die eingegebene Zahl dann in n gespeichert. Ist es nicht das, was du meinst?
Du hast die Frage in einlesen gestellt.
Stelle sie in main und besorge auch dort den Speicher (das Array).
Diese beiden Werte übergibst du an einlesen.
(Es geht zwar auch anders, aber du hast wahrscheinlich noch nicht von malloc gehört)


Noch etwas:
Stelle den Level für Compilerwarnungen auf Maximum.
Der Compiler erkennt viele mögliche Fehler, die aber trotzdem gültiger Code sind und warnt dann.
(z.b die Initialisierung von summe)
Dila57
14:16:20 10.01.2017   Titel:   Zitieren

Ach, und wenn ich den Code mit dem return bei einlesen so ändere:

(Nur der Schluss)

C:
    for (i=0;i<n;i++) {        
        printf("%i, ",eingabe[i]);
    return eingabe[];
    }
}


dann wird nur der 1.Eingabewert angezeigt. Wie schaffe ich es, dass alle Werte aufgelistet werden?
Dila57
14:13:34 10.01.2017   Titel:   Zitieren

Danke für deine Antwort!

Nun also:

Erst mal das mit dem int Rückgabewert habe ich geändert, danke!

Bei der Funktion Mittelwert habe ich 3 Parameter gewählt, damit die main Funktion das Array, die Array-Grenze (n) sowie die Array Werte (i) übernimmt, ist das richtig? Oder habe ich da einen Denkfehler?

Und zu guter letzt: ich habe doch die Frage, wieviele Array Werte es sein sollen zu Anfang gestellt und die eingegebene Zahl dann in n gespeichert. Ist es nicht das, was du meinst?

Gruß :)
DirkB
14:05:23 10.01.2017   Titel:   Zitieren

Du benutzt lokale Variablen. Das ist auch gut so.
Lokale Variablen heißeb lokale Variablen, weil sie in der Funktion lokal sind und nicht nach außen in Erscheinung treten.

Das Array eingabe existiert nur in der Funktion einlesen und ist nach deren Ende auch ungültig.

eingabe[n] (in Zeile 21) wäre ein einzelnes Element vom Array, doch es liegt außerhalb des Arrays, somit ist es ungültig.


Warum hat deine Funktion mittelwert drei Parameter?
Die Variable mittel ist vom Typ float. Du definierst die Funktion aber mit Rückgabetyp int.
Das passt nicht zusammen.


Deine main kennt keine Variablen eingabe, n oder i. Da meckert dann der Compiler mal sehr offensichtlich.


Frag vorher, wieviel Werte es werden sollen, besorge dann den Speicher dafür und übergib diese Daten dann an einlesen (so wie du es auch bei mittelwert gemacht hast)
Dila57
13:17:36 10.01.2017   Titel:   Array an Funktion übergeben? Zitieren

Halli hallo,

ich bin ein totaler Neuling in C und probiere mich gerade an einigen Aufgaben.

Nun komme ich aber nicht weiter, ich soll nämlich 2 Funktionen deklarieren und diese dann in der main Funktion aufrufen.

1. Funktion (einlesen eines Arrays mit beliebiger Größe)

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int einlesen() {
    int i;
    int n;
   
    printf("Wie viele Werte möchten Sie eingeben? ");
    scanf("%i", &n);
    printf("\n");
   
    int eingabe[n];
   
    for (i=0;i<n;i++) {
        printf("Bitte geben Sie den %i.Wert ein: ", i+1);
        scanf("%i", &eingabe[i]);
    }
    printf("\n");
    printf("Sie haben folgende Werte eingegeben: ");
   
    for (i=0;i<n;i++) {        
        printf("%i, ",eingabe[i]);
    }
    return eingabe[n];
}




Und in der 2. Funktion soll ich den Mittelwert des Arrays berechnen und ausgeben, ich bekomme aber immer wieder Fehlermeldungen wie "use of undeclared identifier eingabe" und dies auch für n und i.

So sieht mein code bis jetzt aus:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
int mittelwert(int eingabe[], int n, int i) {
    float mittel;
    int summe;
   
    for (i=0;i<n;i++) {
        summe+=eingabe[n];
        mittel=summe/i;
    }
    printf("\n");
    printf("Der Mittelwert ist %f", mittel);
   
    return mittel;
}




Und in der main Funktion dann so:

C:
int main() {
    einlesen();
    int mittel=mittelwert(eingabe[n], n, i);
   
}



Ich hoffe ihr könnt mir helfen, denn ich weiß nicht, wie ich das Array in die Funktion Mittelwert übergeben kann und dort damit Weiterrechnen kann.

Vielen dank schon mal!

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.