Das XPM sieht so aus, als wenn es eine simple Stringausgabe wäre, wobei die Strings in einem Array vorliegen,
int main()
{
size_t i,y=sizeof tux_xpm/sizeof*tux_xpm; /* y Strings sind in dem Stringarray enthalten */
for(i=y-128;i<y;++i) /* die letzten 128 Strings des Arrays ausgeben */
puts(tux_xpm[i]);
return 0;
}
Für deine vertikale Spiegelung musst du die Zeichen der Strings bloß noch in umgekehrter Reihenfolge ausgeben, dazu schreibst du dir eine entsprechende Funktion und benutzt diese statt o.g. puts.
f_x=rand()%15+1;
erzeugt Zufallswerte von 1..15, dein Array ist aber
char position[15][15];
, auf das du mit f_x zugreifst. Da dürfte schon mal ein Fehler liegen.
Kapsele deine wesentlichen Funktionalitäten (Bildschirm neu malen, Tastaturabfrage, Berechnung) mal in eigene Funktionen (da du ja C++ machen willst, müssten das eigentlich Klassen sein, aber du gehörst auch zu den Leuten, die C++ an ihr Programm ranschreiben und doch nur C einsetzen), das Programm wird dann übersichtlicher und Fehler ( auch Designfehler ) offensichtlicher.
Ich glaube nicht, dass dem TO das nach einem Jahr noch interessiert.
Aber für dich:
Das Problem ist die Zeile
if ((*argv[1] == '1') || (*argv[1] == '2')) {
Die überprüft ob der Parameter für den COM-Port '1' oder '2' ist.
Wenn jetzt andere Ports erwünscht sind, muss man in der Zeile etwas ändern.
neuling?!! schrieb:
Ist die getch Funktion nicht auch dafür da das kein Enter gedrückt werden muss?
Bei getch musst du kein Enter drücken. Aber irgendwie musst du doch sagen, wann dein Passwort zu Ende ist. Und eine Passworteingabe bestätigst du doch normal mit Enter. Im Endeffekt kannst du doch einfach einen std::string einlesen.
neuling?!! schrieb:
Und geht die Funktion nicht einfacher?
Eine Funktion? Ich sehe hier keine Funktion. Was ich sehe, ist eine for-Schleife. Der for-Schleifenkopf besteht aus 3 Anweisungen:
1. Definition einer Variablen.
2. Abbruchbedingung
3. Irgendwas, was nach jedem Schleifendurchgang passieren soll.
Was verstehst du da jetzt nicht?
Clundsch schrieb:
das liegt daran, dass du den rückgabewert von einer void-funktion ausgeben willst.
da aber eine void-funktion keinen hat, gibts nen error. lass einfach mal das cout weg und versuchs nochmal.
Danke, das war's!
(Wäre ganz gut gewesen, wenn mein Dozent mir das irgendwann mal mitgeteilt hätte, dass ich eine Funktion in der Art aufrufen muss, aber was will man erwarten für 365,- € im Semester ...)
@Belli: Die Funktion stand ja schon in der Klasse.
oORichOo schrieb:
Hallo Leute,
ich hab ein Problem beim Kompelieren.
Wenn ich ein kleines Programm geschrieben habe und es Kompelieren will, bleibt es hängen.
Das ist mal eine richtige Herausforderung für uns Leser....
Sorry, aber da müßtest Du uns schon mehr Infos geben.
Noch etwas sollte klarer formuliert werden: Was hängt? Der Compiler ("ich will komilieren") oder das erzeugte Programm (also nach dem Compilieren)?
Also wenn sich hier einer einbildet er kann programmieren nur weil er
system ("irgendwas");
zwischen main und return setzt. Der glaubt bestimmt auch er kann fliegen wenn er ausm Fernster hüpft.
Ich hba die Express version und kann ich bis jetzt nur über 2 oder 3 bugs beklagen, welche aber völlig unwichtig sind.Das einzige was mich auch manchmal aufregt ist das richtiger code nach einer Ausbesserung noch rot unterstrichen ist, was aber bis jetzt daran lag das mein PC durch 10 andere Programme komplett ausgelastet war und eh ein wenig gelaggt hat.
merano schrieb:
Belli schrieb:
Weil ich nicht glaube, dass hier
if(sx == sa)
das passiert, was Du möchtest.
Natürlich. Was soll an dem Ansinnen zwei Adressen auf Gleichheit zu prüfen bedenklich sein ?
Da ist nix Bedenkliches dran. Ich habe aber strcmp stattdessen erwartet. Bei nochmaligem Hinschauen habe ich jetzt aber gesehen, dass beide Zeiger in denselben String zeigen, deswegen nehme ich alles zurück und behaupte das Gegenteil.
Dies bezieht sich allerdings nicht darauf, dass ich die Aufgabenstellung anders interpretiere.
JOberst schrieb:
DirkB schrieb:
Was gibt die Funktion zurück wenn ((n%2)!=0) wahr ist und dann i<=imax ist?
Also wenn die Bedingung in Zeile 23 unwahr ergibt?
Das else in Z27 war falsch zugeordnet, es gehört natürlich zu dem direkt vorherstehenden if. Also habe ich in Z26 eine Klammer gelöscht und am Ende eine geschlossene Klammer hinzu gefügt. Leider läuft es immer noch nicht. Jetzt kommt außerdem noch der Fehler lnk 1169 - mindestens ein mehrfach definiertes Symbol gefunden ...
Das mehrfach definierte Symbol lässt sich nicht in diesem Codeausschnitt finden. Das andere Problem
warning C4715: "_istPrim": Nicht alle Steuerelementpfade geben einen Wert zurück.
ist auch mit der Änderung nicht gelöst.
icarus2 schrieb:
Gehoert das nicht ins C++ Forum?
Ja, dort könnte es hingehören.
Ein leerer Knoten hat üblicherweise den Wert NULL.
Die Implementation als class ist möglich, was allerdings das
Array da soll ist zumindest fraglich.
Wenn es unbedingt der OOP-Ansatz sein soll fehlt mindestens
der Konstruktor um die Membervariablen zu initialisieren.
Eigentlich sollten Membervariablen auch nicht public sein.
Als Basis ist die bereits genannte URL OK.
Hier ein erster Ansatz (verbesserungsbedürftig) [VS2010]
#include <stdio.h>
#include <tchar.h>
class Tree {
public:
Tree();
Tree(int value);
Tree *Tree_Insert(int value);
// ...
// besser private:
Tree * m_parent; //zeigt auf das "Elternteil"
Tree * m_right; //Zeigt auf den rechten "unter"-Baum
Tree * m_left; //Zeigt auf den Linken "unter"-Baum
int m_value; //Enthaelt den eigenen Wert
};
Tree::Tree()
{
m_parent = m_right = m_left = NULL;
m_value = 0;
}
Tree::Tree(int value)
{
m_parent = m_right = m_left = NULL;
m_value = value;
}
Tree *Tree::Tree_Insert(int value)
{
class Tree *now = this;
class Tree *parent;
bool is_left_child = false;
while(now){
parent = now;
if(value < now->m_value){
is_left_child = true;
now = now->m_left;
}
else if(now->m_value < value){
is_left_child = false;
now = now->m_right;
}
else
return false; // Das Element ist bereits im Baum
}
// Neues Blatt erzeugen
class Tree *Blatt = new Tree(value);
// Blatt einhaengen
Blatt->m_parent = parent;
if(parent != 0) {
if(is_left_child)
parent->m_left = Blatt;
else
parent->m_right = Blatt;
}
return Blatt;
}
int _tmain(int argc, _TCHAR* argv[])
{
class Tree wurzel(15);
wurzel.Tree_Insert(22);
// ...
return 0;
}
danke icarus :)! mein fehler lag darin, das ich das mit generics gemacht hab und zum schluss eine zahl mit dem index 2 gelöscht habe, und das war zufällig meine doppelte zahl xD es ist schon spät, aber trotzdem vielen lieben dank naja, 99% der fehler sitzen vorm pc