Mittelwert aus Funktionswerten bestimmen



  • fetzt 👍



  • Du solltest lernen deinen Code gescheit zu formatieren.



  • jetzt will ich das ganze in einer Textdatei speichern,aber irgendwie klappts nicht 😡
    bin leider noch Anfänger 🙄

    Aufgabenstellung ist folgende:
    speichern der Wertepaare in einer Textdatei auf folgende Weise:
    i+1. Datensatz: i x y |mw-y|

    der 1. datensatz beinhaltet den Definitionsbereich xvon xbis Schrittweite
    Eingabe des Dateinamens über Tastatur.

    soweit bin ich bis jetzt:

    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    #include <stdlib.h>
    void main() {
    			double x, y, a;
    			double Summe = 0, n = 0;
    			printf("%50s\n\n", "ROCKWELL-HAERTEMESSUNG");
    			printf("%55s\n\n", "Tabelle der Fkt. f(x)=100-(x/0.002)");
    			printf("%49s\n\n", "x = Eindringtiefe in mm");
    			printf("%50s\n\n", "f(x) = Rockwellhaerte HRC");
                for( x=0.1; x < 0.2; x += 0.003, n++ )
    			{
                    y = 100-(x/0.002);
                    Summe += y;
    			}
                printf("                          Mittelwert: %.3f\n", Summe/n );
    	        printf("%18s%18s%22s\n", "x", "f(x)", "Abstand");
                for( x=0.1; x < 0.2; x += 0.003) 
    			{
    				y = 100-(x/0.002);
    				a = fabs((Summe/n)-y);
    			printf("%20.3f %16.3f %20.3f\n", x, y, a);
    
    			FILE *fp;
    			int i;
    			char name[10];
    			printf("Dateiname:");scanf("%s",name);
    			fp=fopen("datei.txt","w");
    			if(fp==NULL)
    			{printf("Error:Dateieröffnung\n");getch();
    			for( x=0.1; x < 0.2; x += 0.003, i++ );
    			{ 
    			printf("%s.Datensatz:",i);
    			scanf("%f%f%f", &x, &y , &a);
    			fprintf (fp,"%f%f%f\n", x, y, a);
    			}
    			fclose (fp);
    			getch();
    }
    
    }
    }
    


  • Merlin_1334 schrieb:

    jetzt will ich das ganze in einer Textdatei speichern,aber irgendwie klappts nicht

    Warum nicht.

    Merlin_1334 schrieb:

    bin leider noch Anfänger

    MfG
    ÜÜÜ



  • ok...ich bin jetzt soweit, daß alle Werte in die richtige Textdatei geschrieben werden:

    FILE *fp;
    		char name[40];
    		printf("Dateiname:");scanf("%s",name);
            fp = fopen(name,"w+");
    
            if(fp==NULL) {
                    printf("Error: Dateieroeffnung");
                    return 0;
            }
    
            for( x=0.1; x < 0.2; x += 0.003) {
                    y = 100-(x/0.002);
                    a = fabs((Summe/n)-y);
                    printf("%20.3f %16.3f %20.3f\n", x, y, a);
                    fprintf(fp, "%20.3f %16.3f %20.3f\n", x, y, a);
            }
    
            fclose (fp);
            return 0;
    }
    

    Was aber nicht klappt,ist die richtige Formatierung:
    i + 1. Datensatz: i x y a

    wobei der 1. Datensatz den Definitionsbereich xvon xbis beinhalten soll

    kann mir bitte jemand weiter helfen?



  • Merlin_1334 schrieb:

    Was aber nicht klappt,ist die richtige Formatierung:
    i + 1. Datensatz: i x y a
    wobei der 1. Datensatz den Definitionsbereich xvon xbis beinhalten soll
    kann mir bitte jemand weiter helfen?

    Wie ist das gemeint, gib mal ein konkretes Beispiel mit Zahlen.



  • das ist ja mein Problem, aber ich denke mal es sollte etwa so in der txt-datei aussehen:

    0. Definitionsbereich: x=0.1; x < 0.2; x += 0.003
    1. 0.100           50.000               24.750
    2. 0.103           48.500               23.250
    3. 0.106           47.000               21.750
    ...usw
    


  • Ist doch kein Ding. Hast du ein Buch, wo die Formattierungszeichen für printf erklärt sind ?



  • ich versteh eigtl. nur nicht, wie ich den Definitionsbereich automatisch übergebe und die Nummerierung realisiere



  • Der Definitionsbereich muss ja vor der Ausgabe fest stehen.
    Entweder 'fest eingebrannt' im Programm, oder vom Benutzer eingegeben, oder als irgendeine Schrittweite im Programm berechnet.

    In deiner Version ist der Definitionsbereich fest eingebrannt, dann könntest du den gleich in die printf Anweisung mittels entsprechender Formatierungszeichen schreiben, for dem Eintritt in die Schleife.

    Die Nummerierung ist ja auch nicht weiter schwer: du brauchst eine Variable, welche die Schleifendurchläufe zählt und schreibst das entsprechende Formatierungszeichen an die erste Stelle von printf 🙂



  • Lernst du für dich allein, oder in einer Schule ?



  • Danke für die Antwort 🙂
    Ma kucken,ob ich das umsetzen kann 😕



  • Machst du einen Fernkurs in C Programmierung ?



  • nein...isn Fach beim Studium


Anmelden zum Antworten