Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » c# cannot convert double to double » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen c# cannot convert double to double
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
D0RK
unregistriert
c# cannot convert double to double Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
#include <stdio.h>
#include <math.h>

void polar_zu_kartesisch(double *u, double *v, double r, double phi)
{

	*u=r*cos(phi);
	*v=r*sin(phi);

}

int main()
{
	printf("Beispielwerte dieser Funktion r=2.75, phi=45°");
	double array[4]={0.00,0.00,2.75,45.0};
	double *p=array;
	polar_zu_kartesisch(p, p+1, p+2, p+3 );
	printf("Die Ergebnisse sind: x=%d, y=%d", p+1,p+2);
}


Meine Ideen:
Hi, ich verstehe nicht wie ich den Fehler in c# "cannot convert double to double" beheben kann. Wir sollen den oberen Funktionskopf verwenden. Ich gehe davon aus, dass der Fehler auftritt, weil ich 2x double deklariere? Biite um Hilfe.
21.12.2015 13:38
D0RK
unregistriert
RE: c# cannot convert double to double Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hab' schon herausbekommen. LOL Hammer
21.12.2015 14:01
D0RK
unregistriert
RE: c# cannot convert double to double Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
#include <stdio.h>
#include <math.h>

void polar_zu_kartesisch(double *u, double *v, double r, double phi)
{

	*u=r*cos(phi);
	*v=r*sin(phi);

}

int main()
{
	printf("Beispielwerte dieser Funktion r=2.84, phi=pi/4 \n");
	double array[4]={0.00,0.00,2.84,0.78539};
	double *p=array;
	polar_zu_kartesisch(p, p+1, *(p+2), *(p+3) );
	printf("Die Ergebnisse sind: x=%f, y=%f", array[0],array[1]);
}

So funktioniert das ganze. Falls jemand sehen will wie ich's gelöst hatte.
21.12.2015 14:21
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das ist aber C und nicht C#.

__________________
Syntax Highlighting fürs Board (Link)
21.12.2015 14:58 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
D0RK
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hoppala, hab mich vertan, ja natürlich ist das C smile . Wo ich schon mal hier bin. Hab nen neues Problem:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
#include <stdio.h>

int main()
{
	printf("Bitte gebe nun 10 Zahlen ein: \n");
	float array[10];
	for(int i=0;i<10;i++)
	{
		scanf("%f",&array[i]);
	};
	for(int u=0; u<10;u++)
	{
		printf("%f \n",array[9-u]);
	}
	float *d=array;
	printf("\nSpeicherstartadresse: %d",d);
	printf("\nSpeicherendadresse: %d",d+9);
	printf("\nerste Speicheradresse hinter dem Array: %d", d+10);
	printf("\nDie Differenz zweier benachbarter Einträge: %d", );
	
}

Aufgabe ist im Anhang.
Das funktioniert an sich, aber ich muss zum Schluss die Differenz der beiden benachbarten Adressen und die gesamt Adressen, die das Array besitzt angeben. Problem ist allerdings, dass ich den Pointer als float definiert habe und wenn ich dann die Differenz immer berechne 1 herauskommt.

D0RK hat dieses Bild (verkleinerte Version) angehängt:
rückwärts.png

21.12.2015 15:20
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
printf("\nSpeicherstartadresse: %p",d);
printf("\nSpeicherendadresse: %p",d+9);
printf("\nerste Speicheradresse hinter dem Array: %p", d+10);
printf("\nDie Differenz zweier benachbarter Einträge: %ld\n", (d+10) - (d+9));

Die Differenz ist 1 und nicht 4, weil hier mit dem Datentyp float gerechnet wird und nicht mit Bytes.

__________________
Syntax Highlighting fürs Board (Link)
21.12.2015 15:56 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
D0RK
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Dem kann ich nicht folgen... Das mit den Adressen hab ich verstanden. Wobei, wir im Tutorium die Adressen immer nur als Zahlen und nicht so angegeben haben. Allerdings soll man ja die Speicherzellen angeben die vom Array belegt sind und float sind doch immer 4 Byte? Müsste man dann nicht auch 4 Byte angeben können?
21.12.2015 16:14
D0RK
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Sprich für müssten es dann 40 Zellen für das Array sein. So verstehe ich das...
21.12.2015 16:15
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

%d ist für Adressen nicht geeignet, allein schon weil%d nur int (üblicherweise 32 Bit) kann, ein Zeiger bei mir aber 64 Bit hat. Also kommt es zum Überlauf, ich erhalte dann Speicherstartadresse: -112012448
Die 4 Byte bekommst du, wenn du mit sizeof(float) multiplizierst.

__________________
Syntax Highlighting fürs Board (Link)
21.12.2015 16:20 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
D0RK
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Alles klar, danke. Hab's kapiert.
21.12.2015 16:32
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » c# cannot convert double to double