komische Ausgabe bei Berechnung mit Zahlenreihe

Hallo,

ich bin recht neu was Programmierung angeht und stehe vor folgendem Problem:
Mit den Codes versuche ich zwei (Messwert-) Reihen tabellenförmig darzustellen und die Summe
der Reihen und deren Mittelwert darstellen.
Die Spaltenanzahl soll vorerst vorgegeben bleiben, so wie es jetzt ist.
Bei der Bildung der Summe läuft dann schon irgendetwas schief, weshalb ich mir die Einzelwerte anzeigen lassen wollte, aber da scheint auch schon einiges nicht zu funktionieren, also hab ich mir den Wert für 'anzWerte' und 'anzWertefuerV' direkt nach der Eingabe anzeigen lassen und da scheint irgendwo schon der Fehler zu liegen. Gebe ich einen Wert ein wird dieser Wert nicht ausgegeben, sondern irgendeine andere Zahl, aber für die Funktion 'fkt2' wird der von mir eingegebene Wert für 'anzWerte' erkannt.

Beispiel: ich geben 5 für 'anzWerte' ein, dann werde ich auch aufgefordert 5 verschiedene Werte einzugeben, aber wenn ich 'anzWerte' mit printf ausgeben will wird 2.47033e-323 angezeigt.

Hier die Quellcodes (der erste ist main), es gibt noch eine Headerdatei, aber damit funktioniert alles ^^

Code:
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "EinundAusgabe.h"

const int MAX_MESSWERTE = 100;

int main()
{

    double t[MAX_MESSWERTE], v[MAX_MESSWERTE];
    int anzWerte, anzWertefuerV;

   
    //Anzahl Eingeben

    anzWerte = fkt1("Anzahl Temperaturwerte", MAX_MESSWERTE, 1);
    printf("%lg\n", anzWerte);

    anzWertefuerV = fkt1("Anzahl Stromwerte", MAX_MESSWERTE, 1);
    printf("%lg\n", anzWertefuerV);
   
   
    //Werte Eingeben

    fkt2(t, anzWerte, "Temperatur");

    fkt2(v, anzWertefuerV, "Ampere");


    //Werte ausgeben

    fkt3(t, anzWerte, 5);
       

    //Mittelwertberechnen

    double aritMittel, summe = 0;

   
    printf("anzWerte = %g\n", aw);

    for (int w = 0; w <= anzWerte - 1; w++)
    {
        summe = summe + t[w];
        printf("%g->%g\n", w, summe);
    }

   
    printf("%g\n", summe);

    aritMittel = summe / anzWerte;

    printf("%g\n", aritMittel);

   

    for (int q = 0; q <= anzWerte - 1; q++)
    {
        printf("t[%g]=%g\n", q+1, t[q]);
    }

    system("pause");
    return 0;
}

>>>>>Hier geht die Quelldatei für die Funktionen los<<<<<

#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include "EinundAusgabe.h"

int fkt1(char text[], int maxZulaessig, int minZulaessig)
{
    int wert = 0;
    int geleseneWerte = 0; //Anzahl der von scanf erkannten Werte
    do
    {

        printf("Bitte %s eingeben: ", text);
        geleseneWerte = scanf("%d", &wert);
        scanf("%*[^\n]"); //Wirft alle Zeichen bis zum Zeilenende weg

    } while (geleseneWerte < 1 || wert > maxZulaessig || wert < minZulaessig);
   
    return wert;
}

void fkt2(double wertArray[], int anzahl, char beschreibung[])
{

    for (int i = 0; i <= anzahl - 1; i++)
    {
        printf("%smesswert %d:", beschreibung, i + 1);
        scanf("%lg", &wertArray[i]);
    }
   
    return;
}

void fkt3(double wertArray[], int anzahl, int nSpalten)
{
   

    for (int i = 0; i <= anzahl - 1; i += nSpalten)
    {
        printf("%4d.Wert: ", i + 1);
        int spalte = 0;
        while (spalte < nSpalten && i + spalte < anzahl)
        {
            printf("%10g ", wertArray[i+ spalte]); spalte++;
        }
        printf("\n");
    }
    return;
}
im übrigen werden die Werte für 'wert' in der ersten Funktion auch korrekt ausgegeben, wenn ich die Ausgabe direkt in die Funktion einsetze.

Ich hoffe mir kann jemand helfen :)

LG
 
Soll in fkt1 die Variable Wert nicht ein statisches Array sein, Maniok?
 
Also es soll so sein, dass ich mit der Veriable wert in fkt1 quasi die Anzahl der Werte, die ich in die Arrays t und v eingebe, bestimmen kann. Die Idee ist, dass ich bei der Eingabeaufforderung zB wert = 5 setze, damit in main auch anzWerte = 5 wird und ich somit zB für t eben 5 Werte eingeben kann. Wenn ich 50 eingeben möchte würde ich das durch wert = 50 erreichen wollen, deshalb sollte die variable wert doch veränderbar sein, oder?

Das komische Problem an der sache ist, wenn ich mir die Variable anzWert ausgeben lasse, wird sie eben als diese 2.blabla ausgegeben, aber die Funktion fkt2 nimmt die Eingabe von zB 5 an. Und ich würde gern weiter unten mit 'anzWert' weiter rechnen.
 
%g ist eine Formatierung für Werte mit Typ float. Für Werte mit Typ int muss %d oder %i verwendet werden.

Code:
int main()
{
    double t[MAX_MESSWERTE], v[MAX_MESSWERTE];
    int anzWerte, anzWertefuerV;
   
    //Anzahl Eingeben
    anzWerte = fkt1("Anzahl Temperaturwerte", MAX_MESSWERTE, 1);
    printf("%d\n", anzWerte);
    //--FEHLER--> "anzWerte" ist ein int. Also Formatieren mit "%d", nicht mit "%g" für float.
    anzWertefuerV = fkt1("Anzahl Stromwerte", MAX_MESSWERTE, 1);
    printf("%d\n", anzWertefuerV);
    //--FEHLER--> "anzWertefuerV" ist ein int. Also Formatieren mit "%d", nicht mit "%g" für float.
   
    //Werte Eingeben
    fkt2(t, anzWerte, "Temperatur");
    fkt2(v, anzWertefuerV, "Ampere");

    //Werte ausgeben
    fkt3(t, anzWerte, 5);

    //Mittelwertberechnen
    double aritMittel, summe = 0;
   
    printf("anzWerte = %d\n", anzWerte);
    //--FEHLER--> "aw" existiert nicht. Vermutlich ist "anzWerte" gemeint.
    //--FEHLER--> "anzWerte" ist ein int. Also Formatieren mit "%d", nicht mit "%g" für float.
    for (int w = 0; w <= anzWerte - 1; w++)
    {
        summe = summe + t[w];
        printf("%d->%g\n", w, summe);
        //--FEHLER--> "w" ist ein int. Also Formatieren mit "%d", nicht mit "%g" für float.
    }
    printf("%g\n", summe);
    aritMittel = summe / anzWerte;
    printf("%g\n", aritMittel);

    for (int q = 0; q <= anzWerte - 1; q++)
    {
        printf("t[%d]=%g\n", q+1, t[q]);
        //--FEHLER--> "q+1" ist ein int. Also Formatieren mit "%d", nicht mit "%g" für float.
    }

    system("pause");
    return 0;
}
 
Super Danke :) Genau das war's.

Darauf bin und wäre ich bestimmt nicht gekommen.
Aber in Zukunft achte ich da (hoffentlich) besser drauf.
 
Top