nOOB braucht hilfe bei structures
-
ich weiss ihr lacht euch jetzt wahrscheinlich tot, aber ich komm mit dieser berufschulaufgabe einfach nicht klar!
vielleicht ihr was nicht stimmt, es soll eine art lagerverwaltungsprogrämmchen werden, wo man datensätze eingeben kann.
ich poste mal was ich hab://---------------------------------------------------------------------------
//#include <vcl.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
#pragma argsusedint heapgroesse();
int eingabestruct();struct TLager{
int nArtikelnummer;
int nAnzahl;
char cArtikelname[30];
struct TLager*pnext;
};
//---------------------------------------------------------------------------int main(int argc, char* argv[])
{
int nAuswahl=0;/* Menue */
do{ gotoxy (2,2);
printf("(1) Groesse Heap anzeigen");
gotoxy (2,3);
printf("(2) Datenstruktur eingeben");
gotoxy (2,4);
printf("(3) Element anhaengen");
gotoxy (2,5);
printf("(4) Liste anzeigen");
gotoxy (2,6);
printf("(5) Element loeschen");
gotoxy (2,7);
printf("(6) Programm beenden");/* einlesen Menueauswahl */
gotoxy (2,9);
printf("Ihre Auswahl: ");
scanf("%i",&nAuswahl);
clrscr();
gotoxy (16,9);switch (nAuswahl)
{
case 1: heapgroesse();
break;
case 2: eingabestruct();
break;
case 3: ;
break;
case 4: ;
break;
default: ;
}
}while(nAuswahl!=6);
return 0;
}//---------------------------------------------------------------------------
int heapgroesse ()
{
int counter=0;
int *ptr;do {ptr = (int*) malloc(1024*1024);
counter++;
}while (ptr!=NULL);gotoxy(2,11);
printf ("Groesse Stapelspeicher: %iMB",counter);
free (ptr);
return 0;
}//---------------------------------------------------------------------------
int eingabestruct()
{
int nArtikelnummer=0;
int nAnzahl=0;
int pLager=0;
char cArtikelname={'--'};clrscr();
pLager=(struct TLager*)malloc(sizeof(struct TLager));
gotoxy(2,2);
printf("Bitte Artikelnummer/Anzahl und Name eingeben: ");
scanf("%i,%i,%c",nArtikelnummer,nAnzahl,cArtikelname);return 0;
}//---------------------------------------------------------------------------
mit dieser zeile kommt er nicht klar:
pLager=(struct TLager*)malloc(sizeof(struct TLager));
er sagt immer: cannot convert 'TLager *' to 'int'PS: ich muss für die berufschule immer den uralten borland compiler "turbo c++ v3.0" verwenden. auf dem hab ich den code geschrieben!
PPS: bitte nicht lachen!
MfG
CRAY
-
Du hast pLager als int deklariert und willst ihm ein TLager* zuweisen - das geht natürlich nicht
Womit auch immer du C++ lernst, ich würde es ehrlich gesagt auswechseln. Selbst auf deinem Compiler sollte ein schönerer Programmierstil möglich sein - das ist allerhöchstens unleserliches C, aber noch weit von normalem C++ entfernt
-
damit magst du recht haben aber meinen berufschullehrer kann ich leider nicht auswechseln
ich werde deinen tip mal ausprobieren danke
-
Oh. Stimmt, das mit dem Lehrer ist natürlich wirklich etwas unpraktisch
-
vielleicht kannst du mir ein gutes tutorial empfehlen.
welchen variablentyp würdest du mir empfehlen.
hab mal int *pLager gemacht, aber das will er auch nicht ganz schlucken
sorry nochmal, ich weiss das dir meine fragen dumm vorkommen, aber bin ein ganz frischer fachinformatiker azubi <-- nOOB
-
Ich bin nicht als Programmierneuling zu C++ gestoßen, also kA, was gute Einsteigerliteratur ist
In den FAQ hier findest du aber bestimmt eine Antwort.
Deine Variable muss als TLager* deklariert werden, also:struct TLager* lager = (struct TLager*)malloc(sizeof(TLager));
(Edit: War Nonsens, glaub ich...)
Aber wenn du mit dem allokierten Lager nichts machst, bringt dir das auch nicht vielDie Funktion sollte wohl auch noch ein "struct TLager*" zurückgeben - nämlich pLager, nachdem du seine Felder ausgefüllt hast.
-
vielen dank
jetzt gehts *freu*
-
Gehört das nicht ins C-Forum? Erlichgesagt kann ich an diesem Programm nichts OO finden...
-
Aber selbst wenn es C++ waere, muesste es noch lange nicht OO sein.
mfg
v R
-
kann man den beitrag dann nicht ins C forum verschieben?
sorry habs verpeilt leute
-
Mal ne Frage/Anmerkung zur Funktion "heapgroesse":
Ist es nicht so, daß der allokierte Speicher gar nicht mehr freigegeben, da in der Schleife ja ständig ptr überschrieben wird? Wäre ja ein schöner Speicherkiller...
Was sagt eigentlich free() zum Parameter NULL?