Hilfe bei einer Aufgabe



  • Hallo,

    ich bräuchte Hilfe bei einer C Programmierung Fragenteil Aufgabe.
    Würde mich für jede Antwort freuen.

    a.) Eine float Adressvariable p soll durch eine Funktion void f(...); abgeaendert werden, also einen neuen
    Wert bekommen. Wie muss die Deklaration dieser Funktion f lauten und wie muss p beim Aufruf von f
    an f ¨ubergeben werden?
    b.) Wie lautet die Definition einer 5 × 4–Matrix c von Zeigern auf float?
    c.) Angenommen, jedes Element der 5 × 4–Matrix c von Zeigern auf float zeigt auf ein float–Feld.
    • Wievielfache Indizierung ist notwendig, um ¨uber c auf die Elemente dieser float–Felder zuzugreifen
    (Anzahl der Paare eckiger Klammern)?
    • Wieviele Sterne “*“ sind notwendig, um ueber c (ohne Verwendung von eckigen Klammern) auf das erste
    Element des float–Feldes, auf welches c[0][0] zeigt, zuzugreifen?
    d.) Wir setzen voraus, dass eine Funktion vom Typ void bubble(int feld[], int n) existiert, welche die
    ersten n Elemente eines int-Feldes aufsteigend sortiert. Tragen Sie bitte im folgenden Programm rechts
    neben jedem Aufruf der Funktion als Antwort eine der Zahlen 1, 2 oder 3 ein, und zwar
    1, falls der Aufruf syntaktisch falsch ist (d.h. der Compiler wuerde einen Fehler melden).
    2, falls der Aufruf syntaktisch richtig, aber semantisch falsch ist (d.h. der Compiler meldet zwar
    keinen Fehler, der Aufruf wird aber im Allgemeinen zu Fehlern beim Programmablauf fuehren).
    3, falls der Aufruf syntaktisch und semantisch korrekt ist.
    int main()
    { int i, *q, p = &i; / int- und int-Zeiger-Variablen */
    int a[100], b[10], *r=a, *s=b; /*int-Felder und int-Zeiger-Variablen /
    : /
    In diesem nicht dargestellten Teil werden
    : die Felder initialisiert /
    bubble( i, 100); /
    Antwort: _____ /
    bubble(&i, 100); /
    Antwort: _____ /
    bubble( q, 100); /
    Antwort: _____ /
    bubble( p, 100); /
    Antwort: _____ /
    bubble( a, 100); /
    Antwort: _____ /
    bubble( a, 10); /
    Antwort: _____ /
    bubble( b, 100); /
    Antwort: _____ /
    bubble( b, 10); /
    Antwort: _____ /
    bubble( r, 100); /
    Antwort: _____ /
    bubble( s, 100); /
    Antwort: _____ */
    return 0;
    }

    MFG



  • @FighterJeff sagte in Hilfe bei einer Aufgabe:

    ch bräuchte Hilfe bei einer C Programmierung Fragenteil Aufgabe

    Auf Deutsch: macht mir mal einer meine Hausaugaben

    Antwort: ich nicht



  • Hallo,

    das sind nicht meine Hausaufgaben. Sowas mir zu unterstellen ist total unnötig.
    Ich habe eingine Aufgaben selber gerechnet und bräuchte nur Hilfeansätze. Ich verlange auf keinen Fall, dass man mir sowas löst.
    Entschuldigung, dass es so rüber gekommen ist.

    Ich fang mal so. wie sieht ein Zeiger auf float aus? Also ein Zeiger sieht z.b laut meines wissens a* aus. wie packt man denn die Matrix rein?



  • Welche Ansätze hast du denn bisher?


  • Mod

    Keine Angst vor Zeigern! Sie sind Typen wie alle anderen auch¹. Wie sähe deiner Meinung nach ein Feld von 5x4 int aus? Ersetze int durch deinen Zeigertyp und du hast deine Antwort.

    Wobei du aber noch einmal überlegen solltest, wie dein Zeigertyp heißt. Ein Zeiger auf float kann ja wohl kaum a* sein. Da kommt schließlich nirgendwo drin float vor. Denk noch einmal nach, wie der Typ heißt, nicht wie eine Variable dieses Typs heißen könnte.

    PS: Die Aussage ¹ stimmt leider nur so lange, wie man nicht mehrere Deklarationen in eine Anweisung schreibt. Was aber empfohlen ist, damit man eben nicht solchen unleserlichen Quatsch wie in deinem Codeschnippsel hat.



  • @DocShoe

    also ich würde erst die felder deklarieren.

    z.b im falle der matrix gibt es 5x4 plätze zu belegen. da 0 auch als zahl anzusehen ist.

    int main()
    {

    int oder float c[4][3];

    ......

    @SeppJ ja genau, ich kriege immer panik bei zeigern und dynamische felder. weil man immer anders denken muss.


  • Mod

    Das ist ja schon einmal nur halbrichtig. Da müssen wir wohl noch primitiver anfangen. Vielleicht solltest du noch einmal die vorherigen Kapitel wiederholen? Du hast da einiges nicht mitbekommen.

    int array[3];
    

    Welches sind dann gültige Indizes für array? Wie viele sind das?

    Hier ist übrigens nix dynamisch.



  • @SeppJ ich hab die musterlösung irgendwo auf dem rechner und array hat man nicht verwendet. da muss ich nochmal später nachschauen.

    http://www.c-howto.de/tutorial/arrays-felder/zweidimensionale-felder/

    Ein Beispiel aus der Aufgabenstellung:

    int a[100], b[10], *r=a, s=b; / int-Felder und int-Zeiger-Variablen */

    somit ist b gelöst.
    int a[4], b[3], *r=a, *s=b;


  • Mod

    Du hast da ganz viel von den notwendigen Grundlagen verpasst. Guck dir das unbedingt noch einmal alles von vorne an.

    Vielleicht ist ein No-Name Buch aus dem Internet, wo alles knapp in 2 Sätzen beschrieben wird, nicht das richtige Lehrwerk für jemanden wie dich, der anscheinend etwas mehr Erklärung und Beispiele braucht.



  • @SeppJ sagte in Hilfe bei einer Aufgabe:

    Du hast da ganz viel von den notwendigen Grundlagen verpasst. Guck dir das unbedingt noch einmal alles von vorne an.

    Vielleicht ist ein No-Name Buch aus dem Internet, wo alles knapp in 2 Sätzen beschrieben wird, nicht das richtige Lehrwerk für jemanden wie dich, der anscheinend etwas mehr Erklärung und Beispiele braucht.

    hallo,

    also für b) double *c[5] [4]. wieso kommt double dahin? ist die matrix keine gerade zahl? oder sagt es aus, dass wir uns innerhalb der matrix bewegen können?
    was meintest du mit array?



  • @FighterJeff sagte in Hilfe bei einer Aufgabe:

    also für b) double *c[5] [4]. wieso kommt double dahin? ist die matrix keine gerade zahl? oder sagt es aus, dass wir uns innerhalb der matrix bewegen können?
    was meintest du mit array?

    Nein, du legst ein Array (Feld, Matrix) typisierter Zeiger an. Bedeutet, worauf sie zeigen, ist vom Typ double. Und ... ab da habe ich Unfug fabriziert.



  • @Sarkast sagte in Hilfe bei einer Aufgabe:

    Und 5*4 ist auch schon nicht ganz richtig. Die Indizierung läuft von 0 weg.

    Das ist eine Definition. Da geht es um die Anzahl der Elemente.



  • @DirkB da stand Unfug



  • @Sarkast Wie viele Elemente hat eine 5x4-Matrix? Wie viel ist 4 * 3?



  • @Swordfish stimmt, du hast recht. Der Index läuft von 0 los, das array wird tatsächlich mit der Elementzahl angelegt. Ich bitte um Entschuldigung.


Log in to reply