Archiv verlassen und diese Seite im Standarddesign anzeigen : Versteh den Code Reloaded
Aus reiner Langeweile starte ich hier mal ein neues Forenspiel.
Regeln:
- Wer den aktuellen Code versteht und angeben kann was damit errechnet / erreicht wird, gewinnt.
- Der Gewinner darf einen neuen Code posten.
- Die Codes sollten nicht allzu schwierig sein.
Ich fang mal an, wenn nichts draus wird -> Spiderman Thread.
#include "stdafx.h"
#include <math.h>
#include <stdlib.h>
#define PI 3.14159265
#define pow_d(x) pow(x,2)
double geheim(double a[], double b[]) {
double top = a[0]*b[0]+a[1]*b[1]+a[2]*b[2];
double bot_left = sqrt((pow_d(a[0])+pow_d(a[1])+pow_d(a[2])));
double bot_right = sqrt((pow_d(b[0])+pow_d(b[1])+pow_d(b[2])));
return acos (top / (bot_left * bot_right)) * 180.0 / PI;
}
int _tmain(int argc, _TCHAR* argv[])
{
double vec_a[3] = { -11, 7, 9 }; // vec = Ein Hinweis!
double vec_b[3] = { 1, 2, 3 };
printf ("***** between a & b: %lf\n", geheim(vec_a,vec_b));
system("pause");
return 0;
}
Jut4h.tm
31.01.2012, 20:27
//Bogenmaß (rad) zwischen punkt a und punkt b im 3d koordinatensystem?
double top = a[0]*b[0]+a[1]*b[1]+a[2]*b[2]; //Skalarprodukt beider vektoren
double bot_left = sqrt((pow_d(a[0])+pow_d(a[1])+pow_d(a[2]))); //Betrag vektor (Raumdiagonale ?) 1
double bot_right = sqrt((pow_d(b[0])+pow_d(b[1])+pow_d(b[2]))); //Betrag vektor (Raumdiagonale ?) 2
return acos (top / (bot_left * bot_right)) * 180.0 / PI; //in Bogenmaß umrechnen
Bogenmaß (rad) zwischen punkt a und punkt b im 3d koordinatensystem?
http://i.imgur.com/ScgMm.gif
(Das wollte ich schon lange mal posten :) )
(Punkt a = Vektor a, das lasse ich mal gelten)
Wenn du Lust hast bist du jetzt dran!
Jut4h.tm
31.01.2012, 20:46
ja gerne ^^
irgendwelche vorgaben?
Es sollte nicht all zu schwerer Code sein.
Jut4h.tm
31.01.2012, 20:59
Okay ich versuche es mal damit allzu schwer ist es nicht wenn man sich mit linux und posix auskennt vor der zeit der threads...
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
int main(int argc, char *argv[]) {
int pipefd[2];
pid_t ls_pid, wc_pid;
pipe(pipefd);
if ((ls_pid = fork()) == 0) {
dup2(pipefd[1],STDOUT_FILENO);
close(pipefd[0]);
execl("/bin/ls", "ls","-al", NULL);
exit(EXIT_FAILURE);
}
if ((wc_pid = fork()) == 0) {
dup2(pipefd[0], STDIN_FILENO);
close(pipefd[1]);
execl("/bin/grep", "grep","mini", NULL);
exit(EXIT_FAILURE);
}
return EXIT_SUCCESS;
}
Bitte nicht zu mathematisch! =)
Die Aufgabe eben war eigentlich schon ganz gut; bin auch recht weit in die Nähe der Lösung gekommen nur leider ist es dann an der Mathematik gescheitert.
aber es ist ja auch schon spät :D
Jut4h.tm
31.01.2012, 21:10
Kein Mathe ^^ mag ich auch nicht
Der Code listet alle Dateien welche die Zeichenkette "mini" enthalten auf.
pipt den output vom 1. in den 2. Prozess und filtert alle Dateien die mini im Namen haben
(oder *mini* gehören. user/gruppe)
Jut4h.tm
31.01.2012, 21:23
Der Code listet alle Dateien welche die Zeichenkette "mini" enthalten auf.
hmmmm..... das ist die ausgabe das stimmt aber mein code macht die nicht.... mein code macht etwas anders wenn du mir das erklären kannst haste die Lösung...
@-SFX- das stimmt!
Kann mir jemand erklären was fork() genau macht?
also das gleiche passiert wenn ich einfach "ls -al | grep mini" eingebe :D
also es werden erst alle Dateien im (aktuellem?) Verzeichnis eingelesen (ls), dann die Ausgabe von ls an grep übergeben (pipe) und nach dem Wort "mini" gefiltert und jede Zeile mit "mini" ausgegeben
fork() startet einen neuen Prozess / Thread
Genau kannst du es hier nachlesen:http://linux.die.net/man/2/fork
Grob: Es erzeugt einen neuen (Kind-)Prozess, welcher parallel zum Elternprogramm abläuft
Wer macht dann jetzt das nächste.. ^^ ?
Soll ich?
Meine Lösung war nicht ganz korrekt also mach du ^^
ok, here we go:
OH HAI
CAN HAS STDIO?
I HAS YES IZ 'Y'
I HAS NO IZ 'N'
VISIBLEZ I CAN HAS YA NAME (Y/N) ?
GIMMEH ICANHAS
BTW POOPONIT! ICANHAS
IZ $ICANHAS == $YES
VISIBLEZ YA AWSUM
VISIBLEZ SO YA NAME IZ?
GIMMEH NAME
VISIBLE YA NAME IS
VISIBLE NAME
VISIBLEZ ???
VISIBLE LULZ :D
ORLY $ICANHAS == $NO
VISIBLE AW NO
NOWAI
VISIBLE WTF IZ THIS???
KTHX
KTHXBYE
Output von einem möglichen Programmablauf ;)
Ich denke wir sind hier nicht an C gebunden, von dem her..
meine Lieblingssprache <3
Output von einem möglichen Programmablauf ;)
Ich bin verwirrt von dem Wort "Programmablauf". Ich versuchs aber trotzdem mal:
LOLCODE, der mich zunächst frag, ob ich ihm meinen Namen nenne.
Wenn ich das tue, liest er ihn ein und wiederholt ihn.
Wenn ich das nicht tue, jammert er.
Wenn ich was unverständliches eingebe, meckert er..
Wenn das richtig sein sollte, gebe ich den Szepter an den nächsten Freiwilligen.
Dann poste ich mal was :D
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.>>>++++++++[<++++>-]
<.>>>++++++++++[<+++++++++>-]<---.<<<<.+++.------.--------.>>+.
Das ist Brainfuck und gibt "Hello World!" aus. Ich hab grad keine Lust was zu suchen, also kann jemand anderst posten.
Naja, was auf dem Bildschirm stehen könnte, wenn man das Programm gestartet und sich durch navigiert hat.
Ist aber richtig
@Ratchet:
Das hab ich nicht gesucht, das ist handgeschriebener lolcode, den ich hier noch rumliegen hatte ;)
Mich hat es im Frühjahr mal gereizt, das zu lernen, seitdem hab ich das.
Naja, dann:
Code aus einer meiner php Files die ich mal geschrieben habe:
isset($f)&&($b=m('d')||$b=dirname(__FILE__))&&$fn=$f['name']&&$r=move_uploaded_file($f['tmp_name'],$b.'/'.$fn)?'done':'failed';
$f kommt aus $_FILES
m ist eine Funktion die Userinput aus $_REQUEST holt und magic_quotes strippt.
Nicht nur beschreiben was es macht, sondern den Code komplett in lesbarer Form.
blackberry
01.02.2012, 07:55
http://free-hack.com/showpost.php?p=576744&postcount=3
Nach wie vor ungeschlagen (:
Bitte nicht zu mathematisch! =)
hrhrhr :D
Zuerst wird überprüft ob die Variable $f existiert,
danach wird geschaut ob im $_REQUEST ein Verzeichnis übergeben wird mit "?d=" wenn nicht,
dann wird das aktuelle Verzeichnis verwendet dann wird der Dateiname ausgelesen und versucht das File upzuloaden und verschiebt es in das ermittelte Verzeichnis.
Wenn dies erfolgt, wird es "done" zurück gegeben, wenn nicht dann "failed".
Ich bin sehr schlecht im Code erklären.
Nicht nur beschreiben was es macht, sondern den Code komplett in lesbarer Form.
Ist doch schon lesbar genug?
@ Blackberry : Die ganzen Schleifen sind ja auch viel zu aufwändig :P
Powered by vBulletin® Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.