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

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » C structs und dynamischer Speicher » 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 3 Beiträge
Lars

Hab auch nen bisschen mit dem -> Operator rumgewerkelt und was funktionierendes rausbekommen. Schönheit liegt im Auge des Betrachters, bloß sieht dein Code leider wirklich schöner aus Zunge raus .
eulerscheZahl

Habe dir mal das gröbste ausgebessert, denn laut Aufgabenstellung soll der Code ja schön sein smile

Statt eines int-Zeigers habe ich einen vertoren-Zeiger verwendet. Auch die Funktionsargumente sind jetzt vektoren.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
#include <stdio.h>
#include <stdlib.h>

typedef struct vek{
	int x;
	int y;
	int z;
}vektoren;

void useDynAr(vektoren* v, vektoren* content)
{
	v->x = content->x;
	v->y = content->y;
	v->z = content->z;
}

void printDynAr(vektoren v)
{
	printf("(%i %i %i)\n",v.x, v.y, v.z);
}

int main()
{
	vektoren* v = (vektoren*)malloc(sizeof(vektoren));
	int a=0;
	char userChoice='q';
	vektoren* pointer=0;
	do {
		printf("Anzahl Vektoren: %i\n", a);
		for(int s = 0; s < a; s++){
			printDynAr(pointer[s]);
		}
		printf("[q]uit, [a]dd, [d]elete ->\n ");
		userChoice = getchar();
		if(userChoice == 'a'){
			a++;
			printf("Bitte die 3 Elemente (x,y,z) eingeben\n");
			if(pointer == NULL) pointer = (vektoren*)malloc(sizeof(vektoren));
			else pointer = (vektoren*)realloc(pointer, a*sizeof(vektoren));
			scanf("%i", &v->x);
			scanf("%i", &v->y);
			scanf("%i", &v->z);
			useDynAr(&pointer[a-1], v);
		};	
		if(userChoice == 'd') { 
			a--;
			pointer = (vektoren*)realloc(pointer, a*sizeof(vektoren));
		}
	} while (userChoice != 'q');
	free(pointer);	
	return 0;
}
Lars C structs und dynamischer Speicher

Meine Frage:
Aufgabe im Anhang, ich komme gerade nicht weiter. Ich glaub, ich muss das Programm nochmal komplett umschreiben.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
#include <stdio.h>
#include <stdlib.h>


typedef struct vek{
	int x;
	int y;
	int z;
}vektoren;
vektoren v;



void useDynAr(int* Pointer1, int* Pointer2, int* Pointer3,int x ,int y, int z)
{
	*Pointer1=x;
	*Pointer2=y;
	*Pointer3=z;
}

void printDynAr(int Pointer4, int Pointer5, int Pointer6)
{
	printf("(%i %i %i)\n",(Pointer4),(Pointer5),(Pointer6));
}

void deleteAr(int* delPointer1,int* delPointer2,int* delPointer3)
{

}

int main()
{
	int a=0;
	char userChoice='q';
	int n=0;
	int* pointer=0;
	do{
	printf("Anzahl Vektoren: %i\n",n);
	for(int s=1;s<=n;s++){
	printDynAr(pointer[a*s-3],(pointer[a*s-2]), (pointer[a*s-1]));}
	printf("[q]uit, [a]dd, [d]elete ->\n ");
	userChoice = getchar();
	if(userChoice=='a'){a+=3;
		printf("Bitte die 3 Elemente (x,y,z) eingeben\n");
		if(n==0){pointer=(int*)malloc(3*sizeof(int));}
		if(n!=0){pointer=(int*)realloc(pointer, a*sizeof(int));}
		scanf("%i",&v.x);
		scanf("%i",&v.y);
		scanf("%i",&v.z);
		useDynAr((pointer+a-3),(pointer+a-2), (pointer+a-1),v.x, v.y, v.z);
		n++;
	

		};	
	if(userChoice=='d'){a-=3;
		deleteAr(pointer+a-3,pointer+a-2, pointer+a-1);
	};

	}while(userChoice!='q');
	
	return 0;

}

Aufgabe im Anhang.


Meine Ideen:
Nichtmal das adden funktioniert x).
Man kann doch auch das struct direkt als Pointer definieren, kann ich dann auch irgendwie die einzelnen Elemente in einem dynamischen Speicher anlegen lassen und dann einfach immer aufrufen? Das wäre bei weitem einfacher, als das so umständlich zu machen. Imo muss ich sie ja immer einzeln abspeichern.
Ich versuch mal, das ganze umzuschreiben.

Lars hat dieses Bild (verkleinerte Version) angehängt:
Komische Aufgabe.png