das dürfe für dich interessant sein:
http://www.aboutai.net/DesktopDefault.aspx
sehr gute/interessante seite über AI (mit neuronalen netzwerken):
http://www.ai-junkie.com/ai-junkie.html
auf dieser seite ist auch unter "competition" ein teil der beschreibt wie roboter die unabhängig und prinzipiell unkoordiniert voneinander arbeiten trotzdem ein (gemeinsames) intelligentes verhalten produzieren können -> das wäre mal ein guter ansatzpunkt für ein referat ohne viel vorwissen!
... denk immer dran: google is dein [bester] freund
mfg johannes
Beiträge von marX
-
-
sicher geht das:
Codechar *zeiger = "blablabla..."; // erstellt einen zeiger vom typ char der auf den // String "blablabla..." zeigt. printf("%s", *zeiger); // -> ausgabe "blablabla..." zeiger += 3; // Zeiger (Adresse) wird um 3 Zeichen erhöht printf("%s", *zeiger); // -> ausgabe "blabla..."
in deinem bsp solltest du aber den zeiger buffer NICHT verändern, weil der auf ein Array zeigt, sondern einen neuen "Hilfzeiger" definieren!
mfg -
Zitat von amok
das ist eine ziemlich irrelevante stilfrage. es hat ja auch niemand behauptet
dass return eine funktion waere. die klammerung hier ist zwar nicht noetig,
man findet diesen stil aber oefters.na ja...es geht halt darum, dass ein anfänger das vielleicht falsch verstanden hat ... trotzdem ist dies (meiner meinung nach) nicht nur eine stielfrage!
Zitat von amokentschuldige bitte den rueden ton, aber dein htl lehrer haette dir lieber beibringen sollen, dass der binaere operator ^ sowohl in c als auch in c++ eine bitweise exclusiv-or verknuepfung durchfuehrt und nichts ausmultipliziert oder umwandelt.
schon ok....da hast du natürlich vollkommen recht !!!
ich weiß auch nicht was mich geritten hat als ich das geschrieben habe
...ich habe im letzten jahr so gut wie gar nicht mehr c/c++ programmiert und das '^'-symbol kann ja in einigen sprachen bzw. excel, ... schon als "hoch" verwendet werden!
mfg -
also erst mal folgendes:
du hast dein prog. mit "return(0);" beendet
...das funktionniert zwar, aber return ist KEINE funktion
-> du solltest "return 0;" schreiben...ich habe in der htl den selben fehler gemacht worauf mich dann mein info-prof aufmerksam gemacht hat...
Zitat von ravagedHehe, sorry aber du hast nicht verstanden worauf ich hinauswollte.
In dem Buch steht diese Übung sehr weit vorne. Es ist an dieser Stelle noch gar nicht erklärt worden wie man eine Wurzel zieht.
Daher will ich sqrt() nicht benutzen
Es muss einen anderen weg geben. (a*a + b*b)^0.5 ungefährNEIN in c/c++ funktioniert das logischerweise nicht...
in c wird zb. "a^2" in "a*a" umgewandelt...also einfach ausmultipliziert
...wie soll der compiler das aber mit 0.5 machen ?
-> 2 möglichkeiten:
1. du verwendest sqrt (egal ob's in dem buch schon erklärt wurde oder nich)
2. du schreibst dir selbst eine wurzel(a, b) fkt.
mfg -
jo .. aber du musst ja den string eigentlich gar nicht kopieren -> zeiger würde auch reichen!
anfang->szInput = szTemp;
-> ist natürlich gefährlich, wenn der string nur temporär (zb. in einer fkt.) am stack steht und später wieder überschriben wird...aber das kann dir bei argv ja nicht passieren !
mfg marX
-
also ich habe mal ne funktion programmiert um ein windows programm (konsolenprogramm .... gcc und so um genau zu sein) zu starten! man kann auch (optional) die ausgabe in einen puffer schreiben lassen!
-> ich verwende aber hier (und das würde ich dir auch empfehlen) funktionen der windows-api (die fkt. system spinnt glaub ich teilweise....)Code
Alles anzeigen/****************************************************************************** * Funktion: Führt ein externes Programm aus. * Parameter: *cmd_line = Zeiger auf die auszuführende Zeile * (incl. Parameter) * *buffer = Zeiger auf einen Puffer in den die Ausgabe * geschrieben wird. * (Wenn == NULL => keine Ausgabe speichern!) * buffer_size = Länge des Puffers (buffer). * Rückgabewert: ERROR_PRG_NOT_FOUND wenn * 1) das Programm nicht gefunden wurde * 2) ein Systemfehler aufgetretenn ist (z.B.: Fehler beim * Erzeugen der Pipes)! Dies ist aber SEHR unwarscheinlich! * Sonst wird der Returnwert des Programmes zurückgeliefert. */ int execute_programm(char *cmd_line, char *buffer, int buffer_size) { unsigned long return_value; // Security Attributes SECURITY_ATTRIBUTES secAttr; secAttr.nLength = sizeof(SECURITY_ATTRIBUTES); secAttr.bInheritHandle = TRUE; secAttr.lpSecurityDescriptor = NULL; HANDLE h_child_write, h_parent_read, // "Child Out Pipe" h_child_read, h_parent_write; // "Child In Pipe" if (!CreatePipe(&h_parent_read, &h_child_write, &secAttr, MAX_BUILD_TEXT_LENGTH)) { if (buffer != NULL) // Wenn Buffer vorhanden -> "Leeren" buffer[0] = '\0'; return ERROR_PRG_NOT_FOUND; // System Fehler! } if (!CreatePipe(&h_child_read, &h_parent_write, &secAttr, MAX_BUILD_TEXT_LENGTH)) { if (buffer != NULL) // Wenn Buffer vorhanden -> "Leeren" buffer[0] = '\0'; CloseHandle(h_parent_read); CloseHandle(h_child_write); return ERROR_PRG_NOT_FOUND; // System Fehler! } STARTUPINFO startInfo; GetStartupInfo(&startInfo); startInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; startInfo.wShowWindow = SW_HIDE; startInfo.hStdInput = h_child_read; // stdin startInfo.hStdOutput = h_child_write; // stdout startInfo.hStdError = h_child_write; // stderr PROCESS_INFORMATION procInfo; ZeroMemory(&procInfo, sizeof(PROCESS_INFORMATION)); if (!CreateProcess(NULL, cmd_line, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &startInfo, &procInfo)) { if (buffer != NULL) // Wenn Buffer vorhanden -> "Leeren" buffer[0] = '\0'; CloseHandle(h_parent_read); CloseHandle(h_child_write); CloseHandle(h_child_read); CloseHandle(h_parent_write); return ERROR_PRG_NOT_FOUND; } // Auf Ende warten ("unendlich" lang)! WaitForSingleObject(procInfo.hProcess, INFINITE); if (!GetExitCodeProcess(procInfo.hProcess, &return_value)) return_value = ERROR_PRG_NOT_FOUND; if (buffer != NULL) { unsigned long bytes_read = 0; ReadFile(h_parent_read, buffer, buffer_size, &bytes_read, NULL); buffer[bytes_read] = '\0'; } // Alle Handles auf den Prozess freigeben! CloseHandle(procInfo.hProcess); CloseHandle(procInfo.hThread); // Alle anderen Handles freigeben! CloseHandle(h_parent_read); CloseHandle(h_child_write); CloseHandle(h_child_read); CloseHandle(h_parent_write); return return_value; }
-> das aufrufende programm (also dein programm) wartet allerdings bis das aufgerufene programm (zb. "test.exe") beendet wird! -> solltest du das nicht wollen musst du halt die zeile:
ändern!!mfg marX
-
Zitat von Georg Kraml
Ich bilde mir ein, dass meine Lösung halt ein bisschen allgemeiner und portabler ist.
stimmt, aber ich glaube halt, dass ein c-anfänger mit einer kurzen (einfachen) lösung besser bedient ist!
Zitat von Georg Kraml
Abgesehen davon funktioniert deine Lösung einfach nicht. Hint: der erste Fehler ist in Zeile 1.irrtum sie funktioniert perfekt
Zitat von Georg Kraml
Und für das "(val>>--shift)&1" gehörst du offen gesagt grün und blau gedroschen, sofern das nicht ironisch gemeint war.na ja, du kannst dein glück gerne mal versuchen ... wird für dich aber nicht lustig enden
nein im ernst: wieso denn?? ok man hätte noch klammern setzen können, die reihenfolge ist aber nach posix geregelt und somit klar!
wegen dem beschriebenen fehler:
ok das ist natürlich blöd, jedoch ist hier auch der admin schuld wenn er nicht regelmäßig checkt, ob noch genügend platz auf der platte ist ....
man kann als programmierer nie alle eventualitäten vorhersehen ...
mfg marX -
na ja ein saubrer programmierstil ist ja schon wichtig ... ich bin z.B. bei der klammernsetzung etwas übergenau (weil ich durch zu wenig klammern schon einige dumme fehler bekam), aber bei einer floatvariable den zahlenwert explizit als solchen zu deklarieren (durch '.0') macht eigentlich auch keinen sinn oder ?!!
-> man behindert sich halt nur mehr selbst ....mfg marX
-
Zitat von buechsengustel
zb überprüfst du gewissenhaft bei einer funktion den rückgabewert darauf, ob ein fehler aufgetreten ist. ist ein fehler aufgetreten, gibst du mit fprintf(stderr, "blabla"); eine fehlermeldung aus.
nun ist es aber so, dass auch dieses fprintf einen rückgabewert liefert. allerdings ist es kaum sinnvoll, ihn zu überprüfen und im fehlerfall irgendwas zu machen, weil wenn das schreiben auf stderr nicht funktioniert, was will man dann noch groß machen.nun predigens in sysprog eben, dass man da dann auf (void) casten soll, um zu zeigen, dass man sich bewusst ist, dass da ein rückgabewert ist, man ihn aber absichtlich ignoriert.
na ja...ich programmiere nun schon seit ca. 6 jahren c/c++ und hatte noch nie das bedürfniss (durch einen void-cast) zu zeigen, dass ich einen rückgabewert absichtlich ignoriere
da würde ich es sogar gerne zu einer diskussion mit dem prof. kommen lassen
mfg marX
-
Zitat von buechsengustel
edit: außerdem, ich denk, das macht schon sinn, manchmal auf (void) zu casten; wenn ich was hab
if ( machIrgendwas() liefert einen fehler)
(void) gibFehlermeldungAus();weil sonst werd ich da ja nie fertig. jaja, ich weiß, das hab ich aus dem sysprog buch abgeschaut, bin ich aber spitzfindig, aber hier wird eben genau das diskutiert.
hää ... das check ich jetzt nicht
-> ich hab noch niemals jemanden eine funktion nach void casten gesehen und ich wüsste auch nicht für was das gut sein sollte, außer um den code länger und unübersichtlicher zu machen!an den bösen wolf:
warum einfach wenns auch kompliziert geht ?!!mfg marX
-
Zitat von Zarathustra
Wie liest man bei WIN2000 bzw. WINXP aus dem Speicherbereich (0xf000:0xffff) ohne Zugriffsverletzung? Das ist nämlich der Bereich, in dem die Serien Nummer liegt.
Am feinsten wär eine Lösung auf C basierend ohne MFC RoutinenAlso Ohne Windows-API geht das SICHER nicht, da der leseversuch auf ein von deinem programm nicht allokierter speicher logischerweise immer in einer zugriffsverletzung endet ;)!!
ze_artfuldodger: also ich habe ein programm zu hause das bei intel-cpu's die serial ausliest !! 2. hats du schon mal davon gehört, dass es auch netzwerkkarten gibt bei denen man die mac-adresse ändern kann ??
mein tipp: google (dess programmierers bester freund :))
mfg marX
-
na also ich kann dir nur folgendes empfehlen: learning by doing
hat für mich immer bestens funktioniert (habe in der htl nur noch sehr wenig dazugelernt)-> einfach ein paar beispiele aus'm netz oder so saugen und anschauen, verändern, nachprogrammieren -> wenn du wirklich schnell verstehst dann ist das sicher die beste methode !!
mfg marX
-
*gg* na er kann zwar den post überschreiben, aber das mail kann er nicht mehr löschen:
Zitat von Java-Appi
Wisst Ihr was... Vergesst es einfach. Geht wieder euren normalen weg. Vergesst das ich jemals was gefragt habe.
Hoffentlich seid Ihr nicht auch so im "real" live... Wär ja unerträglich.
Naja Österreicher eben. No Comment.
have a nice live
j-p...also ich glaube das untermauert meine these
mfg marX
-
also wenn ich mir jetzt deinen code mal kurz anschaue bemerke ich folgendes:
1. "{" ... "}" blöcke OHNE if, for oder so was
2.
ergibt für mich auch nicht wirklich viel sinn!!
solche fehler kommen typischerweise vom zusammenkopieren von code-fragmenten, bzw. wenn jemand wirklich absolut keine ahnung hat, dann verstehe ich jedoch folgendes nicht:-> also da muss ich johnfoo recht geben: manche menschen sind (auch wenn sie es nicht wahrhaben wollen) wirklich leicht zu durchschauen ;)!
um trotzdem noch kurz auf deine frage einzugehen:
(7+15+30)*12*sleep(800) ergibt sage und schreibe über 8 minuten!
und wenn dann jemand natürlich nicht weiß (weil das programm nicht selbst geschrieben wurde ?!!!!), dass system.out.println in die konsole schreibt denkt sich dieser logischerweise, mit der zeit: "hm ... warum beendet das prog nicht ?!! ... habe ich da eine endlosschleife ??" -> eigentlich müsste dieser aber wissen, dass mehere 100erte ausgaben (mit je einer verzögerung von 800ms) doch eine zeit brauchen (zumindest wenn er wüsste, was er SELBST programmiert hat!)!!@Citizen X: nein so war/ist das NICHT gemeint, aber ich hatte schon zu viel mit solchen code-klauern zu tun, die zu faul sind selbst nachzudenken und dies ist hier so was von offensichtlich ;)....nimms mir aber bitte nich böse
hal: ich würde dich sofort einstellen
The_1: da hast du vollkommen recht;) wenn mich jemand nett bittet und ich sehe, dass er wirklich hilfe braucht, aber seine mittel ausgeschöpft hat, wäre ich sicher der letzte der im diese verwehren würde!!! in diesem fall ist es aber für mich eindeutig (egal was er dazu sagt), dass er keine ahnung von dem code (den er angeblich selbst geschrieben hat) hat!
mfg marX
-
Zitat von hal
Naja, das passiert vor allem, wenn man ungewöhnliche Technologien miteinander kombiniert. zB DVB-S und FireWire unter Mac OS X, so wie in meinem letzten großen Projekt.
ok .. wenn man natürlich selbst sehr komplexe schnittstellen definiert und diese noch mit anderen verknüpft gibt's sicher nicht mehr viele, die da den vollen durchblick haben
ich glaube aber, dass ein echter checker der unter macOS viel mit firewire arbeitet (programmiert) sich da in ein paar tagen genügend eingelesen hat!na ja wie auch immer
mfg marX
-
Zitat von JohnFoo
In diesem Forum wird den Leuten eh schon bei Fragen geholfen, die in Newsgroups wie comp.lang.java.help ignoriert werden würde.
Manchmal hat man einfach den Eindruck, dass der Poster bissl zu gemütlich lebt, um sich selber mit der Aufgabe zu beschäftigen ..also um jetzt mal ganz böse zu sein:
ich glaub nicht, dass er sich auch nur ein bisschen mit programmieren auskennt!! -> er schmeisst (kopiert) nur java codes mit englischen kommentaren die er eh nicht ganz versteht) hinein und hofft jemand nimmt ihm die hausaufgabe ab, weil er zu faul ist um sich selbst hineinzuarbeiten!tut mir wirklich leid, dass ich so böse sein muss (eigentlich nicht *gg*) aber es hat mich schon immer geärgert, wenn jemand absolut keine ahnung hat, zu faul ist um selbst nachzudenken, sich die codes von überall zu sammenklaut und dann noch nicht mal selbst die kleinen ungereimtheiten der verschidenen code-teile abändern will!!
hal: also 1-2 monate ist (für die ganze welt) schon etwas viel -> es gibt schon ne ganze menge brutale pc-junkies auf der erde ;)!
von was für einem programmierproblem sprechen wir überhaupt ???mfg marX
ps: noch was für "java-appi": wie wärs wenn du wenigstens das code-tag ([ code] ... [ /code])verwenden würdest um "deine" codes etwas übersichtlicher zu machen (vor allem wengen der kommentare!)!!
-
Zitat von hal
Ich glaub du überschätzt die HTL-Ausbildung.
stimmt schon
bei uns konnten die meisten in der 5. klasse noch nicht wirklich (gut) programmieren...Zitat von halhab die restliche Zeit bis zum Fertigstellungsdatum im Mai damit verbracht, den anderen zu erklären, was ich da programmiert hab
das kenn ich gut
Zitat von haljaja, das waren noch Zeiten
wem sagst du das ?!!!! hehe
JGoblin: war nicht ernst gemeint i wollte deine programmierkünste natürlich nicht in frage stellen !
mfg marX
-
Zitat von JGoblin
hab als Diplomarbeit an der HTL einen P2P chat programmiert.
ist als htl-diplomarbeit aber schon recht simpel [Blockierte Grafik: http://hades.gothic.at/iforum/images/smilies/biggrin.gif]!
ich habe (zu zweit) eine grafische-entwicklungsumgebung für den 68000 prozessor von motorolla mit eigenem simulator und integrierem gcc+einem speziellen assembler geschrieben !
(nicht böse nehmen [Blockierte Grafik: http://hades.gothic.at/iforum/images/smilies/wink.gif][Blockierte Grafik: http://hades.gothic.at/iforum/images/smilies/wink.gif])
mfg marX -
also ich kann hier nur allen empfehlen eine firewall zu installieren!
-> vor kurzem "schlich" sich eine abart des blaster.E wurms über eine sicherheitslücke im dcom protokoll bei mir ein (Norton AV hatt ihn zum glück sofort entdeckt und gekillt ....)
daraufhin habe ich mich (weil mich exloits, etc. prinzipiell interessieren) genäuer über das sicherheitsloch informiert (http://www.microsoft.com/technet/securi…in/MS03-039.asp)
und fand heraus, dass diese sicherheitslücke (wie viele andere) sehr verbreitet ist und praktisch auf jedem pc mit windows 2000/XP (sogar mit halbneuen sp's) vorhanden ist!!
-> da hilft nur mehr eine firewall
-> wie oben schon geschrieben wurde kennt sogar AV oft trojaner nicht !!
mfg marX -
Zitat von Freeek
Virenscan wär ein heißer Tipp ...
also NortonAV erkennt den glaub ich nicht!
hört sich komisch an, aber ich habe immer die neuesten updates oben und hatte kürzlich auch probleme mit svhost.exe (nicht svchost.exe !!!)
-> lies dir mal das durch http://www.tutorials.de/tutorials142878.html
-> svhost.exe ist (zumindest nachdem was die sagen) auch kein virus, sondern ein trojaner!mfg marX