All pastes #2069463 Raw Edit

Something

public text v1 · immutable
#2069463 ·published 2011-05-26 13:46 UTC
rendered paste body
// -------------------------------------------------------
// Drucke Messwerte der Wetterstationen A und B
// Messwerte sind in Arrays fest hinterlegt in dieser
// ersten Variante.
// 
// Man kann die Messwerte per Tastatur eingeben oder aber
// aus einer Datei einlesen mittels
//    cat EingabeTabelle1.in | bin/messwerte-V1
// -------------------------------------------------------

#include<stdio.h>
#include<string.h>

// Wir definieren Fehlercodes als Makros (C-Praeprozessor)
#define OK 0                        // Alles in Ordnung

// Grenzen fuer Definition von Feldern und Schleifen
#define MAX_ARRAY_SIZE 100
#define MAX_BUFF_SIZE 10

// Lange Namen der Stationen A und B
#define NAME_A "Mount Everest"
#define NAME_B "Miami Beach"

// ----------------------------------------------------
// Globale Variablen
// ----------------------------------------------------
// keine!

// ----------------------------------------------------
// Funktionen zur Umrechnung von Einheiten
// ----------------------------------------------------

// ----------------------------------------------------
// Umrechnung von Grad Fahrenheit in Grad Celsius
// ----------------------------------------------------
// Parameter:
// (VAL) f: Messwert in Grad Fahrenheit
//
// Return:
// Wert in Grad Celsius
float fahrenheit2celsius(float f) {
    return (5.0/9.0)*(f-32);
}

// ----------------------------------------------------
// Funktionen zur Berechnung statistischer Groessen
// ----------------------------------------------------

// ----------------------------------------------------
// Berechne Durchschnitt der Werte im Array
// ----------------------------------------------------
// Parameter:
// (REF) messw: Array mit Messwerten
// (VAL) num_used: Anzahl der benutzten Eintraege im Array
// Return:
// Durchschnitt der Werte im Array
float mean(float messw[], int num_used) {
    int i;
    float sum;
    for(i = 0; i < num_used; i++) {
	sum = sum + messw[i];
    }
    return (sum / num_used);
}

// ----------------------------------------------------
// Ausgabe Funktionen
// ----------------------------------------------------

// ----------------------------------------------------
// Drucke Tabelle der Messwerte fuer Station
// ----------------------------------------------------
// Parameter:
// (VAL) shortname: Kuerzel der Station
// (REF)  longname: Langer Name der Station
// (REF)  statVals: Array mit Messwerten
// (VAL)       cnt: Anzahl der Messwerte im Array
//
// Return:
// void
//
// Bemerkung: Hier waere der Einsatz eines Verbunds (struct) eigentlich besser
// Alle Daten zu einer Station (shortname, longname, statVal[], cnt)
// koennten darin sauber gekapselt werden.
// Verbesserungspotential fuer spaeter.
void druckeMesswerte(char shortname, char* longname, float statVals[], int cnt) {
    float mean_f;
    printf("Messwerte der Station %d: %d\n", shortname, *longname);
    printf("---------------------------------\n");
    printf("Es wurden %d Messwerte erfasst\n", cnt);
    mean_f = mean(statVals, cnt);
    printf("Durchschnittstemperatur:\n in Grad Celsius: %.2f\n in Fahrenheit: %.2f\n", fahrenheit2celsius(mean_f), mean_f);
    
    
}

// ----------------------------------------------------
// Hauptprogramm
// ----------------------------------------------------
// Parameter:
// void
//
// Return:
// Fehlercode: OK | ERROR_UNKNOWN_STATION | ERROR_ARRAY_FULL | ERROR_INPUT
int main(void) {
    int countA = 0;                 // Anzahl der Messwerte der Station A
    int countB = 0;                 // Anzahl der Messwerte der Station B
    float valuesA[3];             // Array zum Abspeichern der Messwerte Station A
    float valuesB[4];             // Array zum Abspeichern der Messwerte Station B

    // Messwerte der Station A und Anzahl Werte festlegen
    // Die Werte werden in der naechsten Version eingelesen
    valuesA[0] = 11.24;
    valuesA[1] = 15.30;
    valuesA[2] = 0.90;
    countA = 3;

    // Messwerte der Station B und Anzahl Werte festlegen
    // Die Werte werden in der naechsten Version eingelesen
    valuesB[0] = 60.23;
    valuesB[1] = 90.34;
    valuesB[2] = 91.00;
    valuesB[3] = 70.50;
    countB = 4;

    // Messwerte der Station A ausgeben
    druckeMesswerte('A',NAME_A, valuesA, countA);
    
    printf("\n\n");

    // Messwerte der Station B ausgeben
    druckeMesswerte('B',NAME_B, valuesB, countB);

    return OK;
}