Wie könnte ich hier mit Pointer arbeiten?

informatik123

Cadet 1st Year
Registriert
Mai 2022
Beiträge
9
Hallo, ich müsste euch nochmal etwas um die Unterstützung bitten, weil ich hier etwas am verzweifeln bin. Ich würde hier gerne die komplexe Zahlen auch mit hilfe von Pointer zusammenrechnen können. Vielleicht kann mir da jemand paar Ideen auf dem Weg bringen. Ich habe zwar schon nach paar Ideen im Internet gesucht aber leider haben diese nicht so wirklich funktioniert. Das was dort steht im Bezug auf Pointer wird wahrscheinlich nicht so viel Sinn ergeben aber ich bräuchte einfach ein paar Anstupse damit ich weiterkommen könnte.



C:
#include <stdio.h>
#include <stdlib.h>



typedef struct komplex_t
{
    double real, imag;

}komplex;


int main(void)
{
    struct komplex_t x, y, c, d, *p, *q;
    printf("Geben Sie ihren ersten realen Zahl ein:  ");
    scanf_s("%lf", &x.real);
    printf("Geben Sie ihren ersten imaginearen Zahl ein: ");
    scanf_s("%lf", &x.imag);

    printf("Geben Sie ihren zweiten realen Zahl ein:  ");
    scanf_s("%lf", &y.real);
    printf("Geben Sie ihren zweiten imaginearen Zahl ein: ");
    scanf_s("%lf", &y.imag);


    c.real = x.real + y.real;
    c.imag = x.imag + y.imag;

    printf("Die Summe der komplexe Zahlen ist: %.2lf% +.2lfi\n", c.real, c.imag);

    c.real = x.real - y.real;
    c.imag = x.imag - y.imag;

    printf("Die Summe der komplexe Zahlen ist: %.2lf% +.2lfi\n", c.real, c.imag);

    // Ab hier würde ich gerne mit den Pointer arbeiten wollen

    printf("Geben Sie ihren dritten realen Zahl ein:  ");
    scanf_s("%lf", &p);
    printf("Geben Sie ihren dritten imaginearen Zahl ein: ");
    scanf_s("%lf", &p);

    printf("Geben Sie ihren vierten realen Zahl ein:  ");
    scanf_s("%lf", &q);
    printf("Geben Sie ihren vierten imaginearen Zahl ein: ");
    scanf_s("%lf", &q);

    d.real = p->real + p->real;
    d.imag = q->imag - q->imag;

    printf("Die Summe der komplexe Zahlen ist: %.2lf% +.2lfi\n", c.real, c.imag);

    return 0;
}
 
Das klingt wie eine Hausaufgabe.
Daher keine Lösung sondern Hilfestellungen.

Versuch doch mal bitte den Unterschied zwischen pointer und reference zu erklären. Nicht tief, nur was beide jeweils machen.

Dann sollte es dir eigentlich klar sein
 
  • Gefällt mir
Reaktionen: KenshiHH und tollertyp
Also was ist denn das eigentliche Problem? Irgendwas mit Pointern machen ist halt keine Problem-/Aufgabenstellung. Pointer stellen eine Lösung dar, und du suchst gerade ein Problem dafür.

@madmax2010: Den Unterschied könnte ich dir ehrlich gesagt kaum erklären, könnte aber den Unterschied zwischen Referenz- und Wert-Übergabe erklären...
 
Mein Problem ist es das ich mit Hilfe von Pointern es nicht hinbekomme in meinem Code komplexe Zahlen zu addieren. Eben mit Hilfe von Adressen der Pointer und nicht direkt mit den eingegebenen Werte.
Ergänzung ()

C:
#include <stdio.h>
#include <stdlib.h>



typedef struct komplex_t
{
    double real, imag;

}komplex;



int main(void)
{
    struct komplex_t x, y, c, *p, *q;
    printf("Geben Sie ihren ersten realen Zahl ein:  ");
    scanf_s("%lf", &x.real);
    printf("Geben Sie ihren ersten imaginearen Zahl ein: ");
    scanf_s("%lf", &x.imag);

    printf("Geben Sie ihren zweiten realen Zahl ein:  ");
    scanf_s("%lf", &y.real);
    printf("Geben Sie ihren zweiten imaginearen Zahl ein: ");
    scanf_s("%lf", &y.imag);


    c.real = x.real + y.real;
    c.imag = x.imag + y.imag;

    printf("Die Summe der komplexe Zahlen ist: %.2lf% +.2lfi\n", c.real, c.imag);

    /*
    c.real = x.real - y.real;
    c.imag = x.imag - y.imag;

    printf("Die Summe der komplexe Zahlen ist: %.2lf% +.2lfi\n", c.real, c.imag);

    */

    p = &x;
    q = &y;

    // Ab hier würde ich gerne mit den Pointer arbeiten wollen

    printf("Geben Sie ihren dritten realen Zahl ein:  ");
    scanf_s("%lf", &p ->real);
    printf("Geben Sie ihren dritten imaginearen Zahl ein: ");
    scanf_s("%lf", &p ->real);

    printf("Geben Sie ihren vierten realen Zahl ein:  ");
    scanf_s("%lf", &q ->imag);
    printf("Geben Sie ihren vierten imaginearen Zahl ein: ");
    scanf_s("%lf", &q ->imag);

    c.real = p->real + p->real;
    c.imag = q->imag + q->imag;

    printf("Die Summe der komplexe Zahlen ist: %.2lf% +.2lfi\n", c.real, c.imag);

    return 0;
}


Bei so einer Variante wird mein Code zumindest gestartet nur am Ende werden nicht die richtigen eingebenen Werten addiert.
 
Müsste in Zeile 49 nicht ->imag und in Zeile 52 ->real stehen?
 
  • Gefällt mir
Reaktionen: madmax2010 und tollertyp
Evtl machst du bzgl pointer auch alles richtig und hast andere Bugs… ;)

Typische Fehler, die bei copy&paste passieren

Zeile 49, 52, 56, 57
 
  • Gefällt mir
Reaktionen: tollertyp
Und warum schaust du nicht, wo das Problem ist?
Stehen denn jemals die richtigen Werte in p bzw q?
Ergänzung ()

kuddlmuddl schrieb:
Typische Fehler, die bei copy&paste passieren
Typischer Fehler, wenn man Redundanz nicht vermeidet. Aber ja, passiert am Anfang.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: kuddlmuddl und madmax2010
Okey, hab etwas mit dem Buchstaben durcheinander gebrach, scheint jetzt zu funktionieren. :)
 
  • Gefällt mir
Reaktionen: madmax2010

Ähnliche Themen

Zurück
Oben