Variable erstellen und umkehren...
lima-city → Forum → Programmiersprachen → C/C++ und D
anzahl
array
aufruf
beitrag
durchlauf
echt beschissene sprache
first
gel
hilfe
klasse
laufzeit
lesen
listen
null
problemstellung
schleifen
speicher
speicherplatz
thw
variable
-
So, ich sitzt jetzt d schon ein paar Stunden dran und komm nicht drauf...
Ich habe in C eine Variable "bin".
In einer Schleife sollen dieser Variable jeweils ein Wert hinzugefügt werden. Der alte soll aber erhalten bleiben und darf nicht gelöscht werden.
Bei PHP würde das der Aufruf .= erfüllen. gibts sowas in C auch?
Des weiteren soll diese Variable danach quasi umgedreht werden. D.h. sie soll von hinten nach vorne ausgegeben werden.
Mit einem Feld wäre das alles kein Problem, aber leider kann ich kein Feld verwenden, da die Feldgröße nicht bekannt ist.
Ich steh total an...
Vieleicht kann mir ja einer helfen... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
http://www.cppreference.com/stdstring/strcpy.html
Eine String-Concatenation gibt es in C nicht, da Arrays eine feste Größe haben.
http://www.cppreference.com/stdstring/strlen.html
Damit ermittelst du die Länge des Zeichen-Feldes und kannst so von hinten ausgeben.
Beitrag geändert: 31.10.2007 19:53:34 von bladehunter -
Mit dem gehts auch nicht...
Ich will in der Schleife einfach der bestehenden Variable (mittlerweile mit dem Datentyp char) bei jedem Schleifendurchlauf einen weiteren Wert (0 oder 1) anhängen. Die Variable soll dann, aber das macht die Schleife eh automatisch, an den Anfang der Schleife genommen werden und beim nächsten Durchlauf soll der nächste Wert angehängt werden... Wenn die Schleife durch ist, soll die Variable dann von hinten her ausgegeben werden. Das kann doch nicht so schwer sein... Ansonsten wäre C eine echt beschissene Sprache...
Ich meine, Danke für deine Hilfe, aber ich komm trotzdem nicht weiter... -
Ist es auch nicht,
wenn ich dich jetzt richtig verstanden habe, möchtest du, dass du 1, 1,1,0,1 nacheinander eingibst und dass dann am schluss 10111 da steht oder('bin' ist dein charfeld)?
for(i=0;i<=n;i++)
scanf("%s",&bin);
damit liest du nacheinander die zeichen ein
rückwärts ausgeben? auch kein problem
for(i=n;i>=0;i--)
printf("%s",bin);
-
In C++ k?nntest du dies mit der STL-Klasse list erledigen, in C wirst du deine eigene doppelt verkettete Listenstruktur implementieren m?ssen:
struct ListElement
{
int nValue;
struct ListElement* next;
struct ListElement* last;
};
struct List
{
struct ListElement* first;
struct ListElement* last;
}
void Init(struct List* list)
{
list->first = NULL;
list->last = NULL;
}
void AddElement(struct List* list, int nValue)
{
struct ListElement* pElement = malloc(sizeof(structListElement));
pElement->nValue = nValue;
pElement->next = NULL;
pElement->last = list->last;
if (list->last == NULL)
{
list->first = pElement;
list->last = pElement;
}
else
{
list->last->next = pElement;
list->last = pElement;
}
}
void DestroyList(struct List* list)
{
struct ListElement* p = list->first;
while (p != NULL)
{
struct ListElement* pNext = p->next;
free(p);
p = pNext;
}
}
Ein R?ckw?rtsausgeben der Liste w?rde etwa folgenderma?en aussehen;
ListElement* p = list->last;
while (p != NULL)
{
printf("%d", p->nValue)
p = p->last;
} -
Hallo,
wenn du vorher weißt wieviele Werte du speichern willst, kannst du auch ein stinknormales Array verwenden:
int bin[Anzahl];
for(i=0;i<Anzahl;i++) {
bin=42;
}
Rückwärtslaufen dann halt mit Rückwärtsschleife. Mit malloc() und free() kannst du Speicherplatz in der benötigten Größe auch zur Laufzeit dynamisch ausfassen. Nur ein nachträglich Verändern der Größe ist nicht so besonders fein machbar ^^
MfG,
thw -
Ein nachtr?gliches ?ndern der Gr??e mit realloc ginge notfalls auch, allerdings solltest du da schon ungef?hr wissen, mit welchen Gr??en du zu rechnen hast um ein zu h?ufiges neuallokieren zu verhindern
z.B.:
int nCurrentCount = 0;
int nCurrentSize = 0;
int* pArray = NULL;
...
void add(int nNumber);
{
if (nCurrentCount == nCurrentSize)
{
nCurrentSize += 128;//Sinnvollen Wert je nach Problemstellung bestimmen
pArray = realloc(pArray, nCurrentSize);
}
pArray[nCurrentCount] = nNumber;
++nCurrentCount;
} -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage