Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Dringend Hilfe (Funktion für Felder)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.02.2016, 00:25 Uhr
Xero



Hallo Liebe Community,
Ich brauche dringend Hilfe bei diesen Aufgaben.
Ich habe bis jetzt keinen Ansatzt und bin am verzweifeln.

AS2 Funktionen für Felder
Aufgaben
1. Entwickeln Sie die nachfolgenden Funktionen in jeweils separaten Quelltexten und schreiben Sie für die Prototypen dieser beiden Funktionen die Headerdatei felder.h.
• Funktion absmin:
Schreiben sie eine C-Funktion, die den Index des betragsmäßig kleinsten Elementes eines Vektors von reellen Zahlen bestimmt. D.h. das betragsmäßig kleinste Element des Vektors ist das Element mit dem Wert 1. Diese Funktion habe den Prototyp:

C++:
void absmin(int n,double* a,int *amin);

Für die Parameter dieser Funktion gelten folgende Festlegungen:

n Dimension des Vektors a
int a der Vektor a
double amin Zeiger auf Speicherplatz für den Index betragsmäßigen kleinsten Elements int*


• Funktionhorner:
Schreiben Sie eine C-Funktion zur Berechnung des Funktionswertes eines Polynoms, s. C-Praktikum Aufgabe 5. Diese Funktion habe den nachfolgenden Prototyp:

C++:
double horner(double x,int n,double* a);

Für die Parameter dieser Funktion gelten folgende Festlegungen:

x der Wert x für die Funktionswertberechnug
double n Die Ordnung des Polynoms
int a der Vektor a der Koeffizienten des Polynoms double*

Als Ergebnis liefert diese Funktion den Wert des Polynoms an der Stelle x.

2. Schreiben Sie ein C-Programm, in welchem ein Polynom eingegeben wird und mithilfe der Funktion horner eine Wertetabelle für dieses Polynom erstellt wird. Diese Tabelle soll die Polynomwerte für eine Folge von gleichabständigen Werten der unabhängigen Variablen beinhalten. Dazu soll in dem Programm der erste und der letzte Wert für die unabhängige Variable vorgegeben werden und ein Abstand, die Schrittweite, zwischen den einzelnen Werten der unabhängigen Variablen eingegeben werden. Außerdem ist der betragsmäßig kleinste Funktionswert mit der Funktion absmin zu ermitteln und gemeinsam mit dem dazugehörigen x-Wert auszugeben.

3. Abzugeben sind die beiden Quelltexte für die Funktionen, die Headerdatei felder.h sowie das Hauptprogramm zur Berechnung der Funktionstabelle und der betragsmäßig kleinsten Funktionswertes.

Mit freundlichen Grüßen

-----------------------
Edit: Leerzeichen bei zusammenhängenden Wörtern eingefügt; Text ein wenig besser formatiert; cpp-Tags eingefügt

Dieser Post wurde am 19.02.2016 um 11:32 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.02.2016, 11:26 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat:
Ich habe bis jetzt keinen Ansatzt

wieso hast du keinen Ansatz? - Hat der/die Lehrer/in (Professor/in) Euch nicht erklärt, wie man daran geht? - Und wo genau liegt das Problem mit "keinen Ansatz"? Was sagt denn Dein Skript oder Lehrbuch dazu?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 19.02.2016 um 11:27 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.02.2016, 11:06 Uhr
ao

(Operator)


Dann ist hier mal ein Ansatz für die erste Aufgabe:


C++:

#include <stdio.h>

void absmin (int n, double * a, int *amin)
{
}


int main (void)
{
    /* Testdaten definieren */
    double array [] = { 3, 1, -3, 0, 4 };
    int array_size = sizeof (array) / sizeof (array[0]);
    
    /* Hier kommt das Ergebnis rein */
    int amin = 0;
    
    /* Funktion aufrufen */
    absmin (array_size, array, &amin);
    
    /* Ergebnis ausgeben */
    printf ("Minimum bei %d\n", amin);
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.02.2016, 11:18 Uhr
ao

(Operator)


Und hier ist eine für Horner.


C++:
#include <stdio.h>

/*
* horner:
* x: die zu untersuchende Stelle
* n: Grad des Polynoms (höchste vorkommende Potenz)
* a: Vektor der Koeffizienten. Die Länge ist um 1 größer als der Grad!
*/

double horner (double x, int n, double * a)
{
    double y = 0;
    return y;
}

int main (void)
{
    /* Polynom definieren */
    double coeff [] = { 36, -13, 1 };  /* x^2 - 13 x + 36 */
    int n_coeff = sizeof (coeff) / sizeof (coeff[0]);
    
    /*
     * Achtung: n_coeff ist um 1 höher als der Grad des Polynoms!
     * Das wird in der Variablen grade berücksichtigt.
     */

     int grade = n_coeff - 1;
    
    /* Wertetabelle, x = 0 .. 9 */
    int i;
    for (i = 0; i < 10; i++)
    {
        /* Funktion horner aufrufen und Ergebnis speichern */
        double x = i;
        double y = horner (x, grade, coeff);
        
        /* Tabelle ausgeben */
        printf ("x = %lf | y = %lf\n", x, y);
    }
    
    return 0;
}



Beachte, dass das 2. Argument von horner der Grad des Polynoms ist. Das ist um 1 weniger als die Länge des Koffizienten-Vektors. Das ist mathematisch gedacht sinnvoll, aber in C gedacht ziemlich bescheuert, weil es dazu zwingt, anders zu programmieren als üblich. Aber wenn die Funktion in der Aufgabe so definiert ist, dann halten wir uns dran. Behalt das im Hinterkopf.

Die main-Funktion tut nicht alles das, was in der Aufgabe 2 gefordert ist (Koeffizienten abfragen, Bereich für x, Schrittweite, Betrags-Minimum), sie testet nur die Funktion horner. Ein bisschen Fleißarbeit muss ja auch noch für dich bleiben ...


Zitat:
Außerdem ist der betragsmäßig kleinste Funktionswert mit der Funktion absmin zu ermitteln und gemeinsam mit dem dazugehörigen x-Wert auszugeben.

Hier ist ein Widerspruch. So wie die Funktion absmin definiert ist (... int * amin), kann sie nicht den kleinsten Funktionswert bestimmen (dazu müsste amin vom Typ double* sein), sondern sie findet seinen Index im Array. Hast du irgendwas falsch abgeschrieben?

Natürlich kannst du, wenn du den Index hast, den zugehörigen Funktionswert einfach aus dem Array lesen. Umgekehrt ist komplizierter.

Dieser Post wurde am 20.02.2016 um 11:56 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: