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

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » c# cannot convert double to double » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
D0RK

Alles klar, danke. Hab's kapiert.
eulerscheZahl

%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.
D0RK

Sprich für müssten es dann 40 Zellen für das Array sein. So verstehe ich das...
D0RK

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?
eulerscheZahl

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.
D0RK

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

eulerscheZahl

Das ist aber C und nicht C#.
D0RK RE: c# cannot convert double to double

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.
D0RK RE: c# cannot convert double to double

Hab' schon herausbekommen. LOL Hammer
D0RK c# cannot convert double to double

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.