Hilfe zu c-Aufgabe (NEW)
-
das vorherige posting kann man irgendwie nicht öffnen, hm, also ich muss folgende aufgabe lösen. wenn mir einer helfen könnte wäre ich sehr verbunden.thx
Hintergrund: In der Praxis gibt es eine Vielzahl mehr oder weniger teurer und leistungsfähiger Messwert-Erfassungs-und -Verarbeitungsprogramme. Manchmal möchte man die Daten auf eine Art verarbeiten, die vom vorhandenen Programm nicht unterstützt wird. In diesem Versuch wird dazu gezeigt, wie man ein bestehendes einfaches Windows-Programm verwenden und auf einfache Art und Weise für eigene Zwecke abändern kann, so dass eigene Funktionsdarstellungen möglich werden. Eine Bearbeitung mit Resultatanzeige kann hier leicht eingepasst werden.
Vorbereitende Aufgaben: Sie finden im Ordner zu diesem Versuch zwei C-Quellprogramme, eine C-Headerdatei und eine Textdatei mit Messwerten. Analysieren Sie zunächst die Headerdatei „Kurve.h“. Was lässt sich hierüber beeinflussen? (Geben Sie die Analyse mit eigenen Worten wieder.)
Analysieren Sie das Windows-Hauptprogramm „Kurve.c“. Geben Sie mindestens drei Eigenschaften/Erkenntnisse an, die für Sie wichtig sind:
1.
2.
3.
Die Datei „Funktion.c“ enthält eine anwendungsbezogene Funktion, die in diesem Fall eine einfache Sinusdarstellung ermöglicht.
Programmtest: -Kopieren Sie die Dateien aus dem Versuchsordner in einen eigenen neu erstellten Ordner
-Erstellen Sie in diesem Ordner ein neues C-Projekt aber als „Windows Application“ (nicht wie bisher: „Console Application“) und verwerfen Sie das automatisch erstellte main-Quellfile.
-Fügen Sie die beiden Quelldateien Kurve.c und Funktion.c zum Projekt hinzu und erstellen Sie das Programm. Beim Start sollte eine Sinusfunktion in einem Windows-Fenster dargestellt sein.
-Modifizieren Sie Parameter aus dem Headerfile und/oder wählen Sie andere Funktionen aus, um mit der Arbeitsweise des Programms vertraut zu werden.
Die Aufgabe: Die Datei „Ping4.txt“ enthält 2000 Werte eines Messwerterfassungssystems aus einer Schallanalyse. Der Versuchsaufbau sah so aus: Ein kleiner Gegenstand fällt auf ein Blech. Der dabei entstehende "Ping" wird von einem Mikrofon aufgenommen. Dieses ist an ein digitales Messwerterfassungssystem angeschlossen, welches die Mikrofonspannung über einen ADU (Analog-Digital-Umsetzter) alle 10 Mikrosekunden digitalisiert. Das ergibt dann die in der Datei gespeicherten Ganzzahlwerte, die im Bereich zwischen 0 und 3000 liegen und je Abtastung in einer Zeile gespeichert sind.
Die ersten Werte (z. B. 1000) dieser Datei sollen jetzt angezeigt werden. Das Problem besteht darin, die Funktion double funktion( double x ) „zu überreden“, den jeweils passenden Wert zurückzugeben. Macht man die Vorgabe, an den Windows-Funktionen so wenig wie möglich zu ändern und die Programmierung nur in der Datei „Funktion.c“ durchzuführen, kann man folgende Vorgehensweise wählen:
Man erstellt in „Funktion.c“ -ein globales Array int werte[2000]; und -eine Funktion void initWerte( void ); ,
die die Werte aus der Datei in das Array einliest.
Dann muss man dafür sorgen, dass diese Funktion aufgerufen wird, bevor die Funktion funktion(x) das erste Mal Werte zurückliefert. Wenn man weiß, dass der erste Aufruf von funktion(x) mit x = REALXMIN passiert, kann man als erste Anweisung programmieren:
if( x == REALXMIN )
initWerte();Jetzt sorgt man dafür, dass bei jedem Aufruf von funktion(x) der richtige Wert aus der Tabelle ausgelesen, nach double konvertiert und zurückgegeben wird. Natürlich müssen auch die Parameter im Header-File „Kurve.h“ richtig eingestellt werden, um eine verwertbare Anzeige zu erhalten.
Als einfaches Beispiel einer Verarbeitung soll hier einmal das „Glätten“ der Funktion gezeigt werden. Man benötigt dazu einen Tiefpass. Ein einfacher digitaler Tiefpass besteht darin, die neuen Werte der Funktion dadurch zu bestimmen, dass man n Werte ab dem aktuellen Wert der Originalfunktion aufaddiert und die Summe durch n dividiert. Man bildet quasi einen Durchschnitt über je n Werte.
Realisieren lässt sich dieses am einfachsten, indem man nach dem Einlesen der Messwerte innerhalb der Funktion initWerte() in einer Schleife die beschriebene Berechnung durchführt. Speichert man die Resultate in einem separaten Array, kann man wahlweise die Originalfunktion oder die veränderte anzeigen. Versuchen Sie die Filterung z. B. mit n = 8.
-
hier die einzelnen files
[/url]http://home.arcor.de/fb7-pe1/info/Projekt1.dev[url]
[/url]http://home.arcor.de/fb7-pe1/info/IN2_Kurve.doc[url]
[/url]http://home.arcor.de/fb7-pe1/info/Kurve.h[url]
[/url]http://home.arcor.de/fb7-pe1/info/Ping4.txt[url]
-
hier noch die kurve & funktion.c
http://home.arcor.de/fb7-pe1/info/Funktion.c
http://home.arcor.de/fb7-pe1/info/Kurve.c
-
für 500Eu mach ich's.
-
Das hat aber nix mit C# zu tun.
-
Ich würds auch für 450 € machen!
-> Projekteforum.
-
is das wirklich so viel aufwand? bisher waren die lösung immer höchstens so 10zeilen die man selbst schreiben musste
-
Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum Projekte verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
c-noob schrieb:
bisher waren die lösung immer höchstens so 10zeilen die man selbst schreiben musste
Wieso tust du es dann nicht einfach?
-
wenn ich dazu fähig wäre würde ich das gerne tun.
tips wären ja auch schon hilfreich
-
hat niemand nen tip?!
-
Wofür denn? Du hast doch noch garnix gefragt.
Wenn du Geld hast, erklärt sich bestimmt jemand bereit, dir das zu schreiben.
-
das "hauptprogramm" is ja schon da(siehe obige links!), muss jetzt quasi noch gemodden werden
naja, die Frage is das hier:
Das Problem besteht darin, die Funktion double funktion( double x ) „zu überreden“, den jeweils passenden Wert zurückzugeben. Macht man die Vorgabe, an den Windows-Funktionen so wenig wie möglich zu ändern und die Programmierung nur in der Datei „Funktion.c“ durchzuführen, kann man folgende Vorgehensweise wählen:
Man erstellt in „Funktion.c“ -ein globales Array int werte[2000]; und -eine Funktion void initWerte( void ); ,
die die Werte aus der Datei in das Array einliest.
Dann muss man dafür sorgen, dass diese Funktion aufgerufen wird, bevor die Funktion funktion(x) das erste Mal Werte zurückliefert. Wenn man weiß, dass der erste Aufruf von funktion(x) mit x = REALXMIN passiert, kann man als erste Anweisung programmieren:
if( x == REALXMIN )
initWerte();Jetzt sorgt man dafür, dass bei jedem Aufruf von funktion(x) der richtige Wert aus der Tabelle ausgelesen, nach double konvertiert und zurückgegeben wird. Natürlich müssen auch die Parameter im Header-File „Kurve.h“ richtig eingestellt werden, um eine verwertbare Anzeige zu erhalten.
Als einfaches Beispiel einer Verarbeitung soll hier einmal das „Glätten“ der Funktion gezeigt werden. Man benötigt dazu einen Tiefpass. Ein einfacher digitaler Tiefpass besteht darin, die neuen Werte der Funktion dadurch zu bestimmen, dass man n Werte ab dem aktuellen Wert der Originalfunktion aufaddiert und die Summe durch n dividiert. Man bildet quasi einen Durchschnitt über je n Werte.
Realisieren lässt sich dieses am einfachsten, indem man nach dem Einlesen der Messwerte innerhalb der Funktion initWerte() in einer Schleife die beschriebene Berechnung durchführt. Speichert man die Resultate in einem separaten Array, kann man wahlweise die Originalfunktion oder die veränderte anzeigen. Versuchen Sie die Filterung z. B. mit n = 8.
-
Hier im Forum läufts halt so, dass keine Aufgaben erledigt werden die andere haben.
Du kannst hier spezifische Fragen stellen wenn du bei der Lösung der Aufgabe ein Problem bekommst.
Wenn du gar nicht weißt wo du anfangen sollst teil die Aufgabe mal in Teilaufgaben auf, etc.
Wenn du dir dann immer noch nichts drunter vorstellen kannst solltest du dir entweder mehr Programmierkenntnisse zulegen oder jemanden Geld geben, damit er dir die Aufgabe erledigt.
450€ sind zwar weit übertrieben, aber das sollte ja fast gleichbedeutend mit "Nein wir machen es nicht." sein.
BTW: Ich machs dir um 400€ :p
MfG SideWinder
-
gut, werd ich dann mal so versuchen...
-
SideWinder schrieb:
BTW: Ich machs dir um 400€ :p
MfG SideWinder
Du solltest immer dazu schreiben was Du machst. Wenn der Satz so alleine steht könnte man bereits von XXX ausgehen. Es gibt abei auch welche die es um 20 € machen.
-
@noob
willst du eine auftragsarbeit vergeben (also was löhnen) dann biste hier richtig, wenn nicht, sags, dann close ich das hier, und du kannst spezifische fragen in den entsprechenden foren posten
-
lösch den thread