Zum Inhalt springen

Whiz-zarD

Mitglieder
  • Gesamte Inhalte

    2.020
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    48

Reputationsaktivitäten

  1. Like
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in XOR Verschlüsselung / symmetrische verschlüsselung   
    Wie soll auch das funktionieren, wenn dein Text länger ist als dein Key?
    output[i] = eingabe[i]^key[i]; //XOR verschlüsselung Dein Key muss zwangsläufig genauso lang sein, wie dein zu verschlüsselnder Text.
    In anderen Sprachen würdest du eine "Index out of Range"-Exception bekommen. C hat aber keine Bereichsüberprüfung und er greift nun mit key[i] auf einen ungeschützten Bereich, wenn der Text länger ist, als der Schlüssel.
     
  2. Like
    Whiz-zarD hat eine Reaktion von maestro impostor erhalten in Adresse in der 3. Normalform ist ja nicht zum Blicken   
    Nur zur Info: Es ist nicht immer gewünscht die Tabellen stark zu Normalisieren. Normalisierungen bedeutet auch immer eine schlechtere Performance, weil die SQL-Statements komplizierter werden. Darum findet man in der Praxis kaum etwas höheres, als die 3. NF. Weil hier die Kosten (sowohl in der Planung, als auch später bei der Ausführung) noch überschaubar sind. Es ist also ein guter Kompromis.
    Für bestimmte Zwecke denormalisieren wir sogar teile unseres Datawarehouses von der 3. NF in die 1. NF, um eine bessere Performance und eine einfachere Schreibweise der SQL-Statements zu ermöglichen.
  3. Positiv
    Whiz-zarD hat eine Reaktion von StefanE erhalten in XOR Verschlüsselung / Symmetrische Verschlüsselung in C   
    Ein Zeiger ist eine Variable, die statt den konkreten Wert die Speicheradresse zu diesem Wert besitzt. Eine Speicheradresse kann man sich vorstellen, wie eine Hausnummer, nur dass anstatt wir hier häuser Bytes haben. Die Adresse 0x1 (Hexadezimalschreibweise) ist das erste Byte im Speicher.
    int i1 = 3; // i1 hat den Wert 3 int* i2 = &i; // i2 hat als Wert die Speicheradresse von i1 Das &-Zeichen ist der sog. Adressoperator. Mit dem können wir die Adresse einer Variable abrufen. Darum geben wir bei scanf() die Adresse an, wohin der Wert geschrieben werden soll.
    Ich persönlich finde die Schreibweise von Zeigern, die man häufig in C-Beispielen findet, nicht so schöb, weil der Stern etwas tückisch ist. Der wird nämlich für zweierlei Dinge verwendet. Einmal für die Kennzeichnung eines Zeigers und einmal den konkreten Wert eines Zeigers zu ermitteln. Daher schreibe ich eher
    int* i2 = &i1; anstatt
    int *i2 = &i1; So wird es für mich deutlicher, dass es sich um einen Int-Zeiger handelt und der Stern nicht zum Variablennamen dazugehört.
    int main() { int i1 = 3; // i1 hat den Wert 3 int* i2 = &i1; // i2 hat als Wert die Speicheradresse von i1 printf("Wert i1: %d\n", i1); printf("Adresse i1: %p\n", &i1); printf("Wert i2: %p\n", i2); printf("Adresse i2: %p\n", &i2); printf("Inhalt i2: %d\n", *i2); return 0; } Da kommt jetzt z.B. sowas raus:
    Wert i1: 3 Adresse i1: 0x7ffd27627e44 Wert i2: 0x7ffd27627e44 Adresse i2: 0x7ffd27627e48 Inhalt i2: 3 i2 hat jetzt nun als Wert die Speicheradresse von i1. Liegt aber in einem anderen Speicherbereich und der konkrete Inhalt ist die Zahl 3.
    Ein String wird in C als Array von Characters dargestellt. Ein Array ist wiederum eine Sonderform eines Zeigers. Die Variable zeigt auf das erste Element des Arrays.
    int main() { char text[] = "Hallo Welt"; printf("Inhalt text: %c\n", *text); printf("Wert text: %p\n", text); return 0; } Da kommt z.B. das dabei raus.
    Inhalt text: H Wert text: 0x7fff5582eead Der Inhalt ist einfach 'H' und als Wert die Adresse.
    Die Eckigen Klammern, z.B. bei text[2] ist ein indexierter Zugriff. Wir haben es dann hier mit einer Zeiger-Aritmethik zu tun und zwar wird der Zeiger um zwei Stellen verschoben. Da er weiß, dass es sich hier um ein Char-Array handelt und ein Char ein Byte groß ist, weg er nun von der Speicheradresse zwei Bytes weiter. In unserem Beispiel wäre dies das Zeichen 'l'.
  4. Positiv
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in XOR Verschlüsselung / Symmetrische Verschlüsselung in C   
    Ein Zeiger ist eine Variable, die statt den konkreten Wert die Speicheradresse zu diesem Wert besitzt. Eine Speicheradresse kann man sich vorstellen, wie eine Hausnummer, nur dass anstatt wir hier häuser Bytes haben. Die Adresse 0x1 (Hexadezimalschreibweise) ist das erste Byte im Speicher.
    int i1 = 3; // i1 hat den Wert 3 int* i2 = &i; // i2 hat als Wert die Speicheradresse von i1 Das &-Zeichen ist der sog. Adressoperator. Mit dem können wir die Adresse einer Variable abrufen. Darum geben wir bei scanf() die Adresse an, wohin der Wert geschrieben werden soll.
    Ich persönlich finde die Schreibweise von Zeigern, die man häufig in C-Beispielen findet, nicht so schöb, weil der Stern etwas tückisch ist. Der wird nämlich für zweierlei Dinge verwendet. Einmal für die Kennzeichnung eines Zeigers und einmal den konkreten Wert eines Zeigers zu ermitteln. Daher schreibe ich eher
    int* i2 = &i1; anstatt
    int *i2 = &i1; So wird es für mich deutlicher, dass es sich um einen Int-Zeiger handelt und der Stern nicht zum Variablennamen dazugehört.
    int main() { int i1 = 3; // i1 hat den Wert 3 int* i2 = &i1; // i2 hat als Wert die Speicheradresse von i1 printf("Wert i1: %d\n", i1); printf("Adresse i1: %p\n", &i1); printf("Wert i2: %p\n", i2); printf("Adresse i2: %p\n", &i2); printf("Inhalt i2: %d\n", *i2); return 0; } Da kommt jetzt z.B. sowas raus:
    Wert i1: 3 Adresse i1: 0x7ffd27627e44 Wert i2: 0x7ffd27627e44 Adresse i2: 0x7ffd27627e48 Inhalt i2: 3 i2 hat jetzt nun als Wert die Speicheradresse von i1. Liegt aber in einem anderen Speicherbereich und der konkrete Inhalt ist die Zahl 3.
    Ein String wird in C als Array von Characters dargestellt. Ein Array ist wiederum eine Sonderform eines Zeigers. Die Variable zeigt auf das erste Element des Arrays.
    int main() { char text[] = "Hallo Welt"; printf("Inhalt text: %c\n", *text); printf("Wert text: %p\n", text); return 0; } Da kommt z.B. das dabei raus.
    Inhalt text: H Wert text: 0x7fff5582eead Der Inhalt ist einfach 'H' und als Wert die Adresse.
    Die Eckigen Klammern, z.B. bei text[2] ist ein indexierter Zugriff. Wir haben es dann hier mit einer Zeiger-Aritmethik zu tun und zwar wird der Zeiger um zwei Stellen verschoben. Da er weiß, dass es sich hier um ein Char-Array handelt und ein Char ein Byte groß ist, weg er nun von der Speicheradresse zwei Bytes weiter. In unserem Beispiel wäre dies das Zeichen 'l'.
  5. Like
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in XOR Verschlüsselung / Symmetrische Verschlüsselung in C   
    Wieso ist in xorencrypt() key ein Zeiger auf ein Integer?
    Was erwartest du denn in, was bei key[i % keylen] rauskommen soll?
  6. Like
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Caesar Ver und Entschlüsselungs probleme   
    Nein, denn genau das ist der Witz: Es ist ein Ring.
    Wenn ich ein Zeichen um 12 Stellen verschiebe, um wie viele Stellen muss ich es weiterschieben, um wieder auf den Ursprung zu kommen?
  7. Like
    Whiz-zarD hat eine Reaktion von allesweg erhalten in Erfahrungen zur Umschulung neben dem Beruf   
    Eigentlich wollte ich nur mal herauskitzeln, ob diese Begründung fundiert oder nur eine Nacherzählung von einem Bekannten, der einen kennt, der einen kennt, ist. Denn reden wir von einem FH- oder von einem Uni-Studium? Beim Uni-Studium gehe ich mit. Bei einem FH-Studium, sehe ich es aber aber nicht so. Wenn, dann eher, dass man in der Fachinformatiker-Ausbildung mehr lernt, was man später nicht mehr benötigt.
    Wenn wir dann von Mathematik sprechen, ist die FH-Mathematik schon sehr sinnvoll. Je nach Anwendungsbereich in der Informatik wird man schon z.B. mit Lineare Algebra zu tun haben. z.B. im Bereich der Computergrafik. Und so viel wissenschaft kommt bei einem FH-Studium nicht vor.
  8. Positiv
    Whiz-zarD hat eine Reaktion von pr0gg3r erhalten in Caesar Ver und Entschlüsselungs probleme   
    Nein, denn genau das ist der Witz: Es ist ein Ring.
    Wenn ich ein Zeichen um 12 Stellen verschiebe, um wie viele Stellen muss ich es weiterschieben, um wieder auf den Ursprung zu kommen?
  9. Positiv
    Whiz-zarD hat eine Reaktion von Visar erhalten in Ist ein Informatik Studium Zeitverschwendung im Vergleich zu einer guten Ausbildung? Sowohl fachlich als auch gehaltstechnisch?   
    Ich denke, man muss endlich verstehen, dass ein Studium keine Berufsausbildung ist. Ein Studium ist auch keine Vorbereitung zur Selbstständigkeit. Ein Studium ist in erster Linie eine Vorbereitung für die Forschung und nicht für die Wirtschaft.
    Ein Studium für ein FISI ist tatsächlich Zeitverschwendung, weil der FISI ein sehr praktischer Beruf ist. Es geht hier um Konfiguration, Administration und Pflege von IT-Systemen und Netzwerken. Das lernt man nicht in einem Studium. Für FIAE kann (muss aber nicht) ein FH(!)-Studium vom Vorteil sein, da man eben Grundlagenforschung auf einer praktischen Ebene betreibt und u.a. Algorithmen und Datenstrukturen durchleuchtet. Ich lehne mich mal weit aus dem Fenster und ich behaupte mal, dass viele FIAE-Azubis nicht so tief reinschauen. Ich glaube nicht, dass viele z.B. mal eine verkettete Liste selber implementieren oder mal schauen, wie ein balancierter Baum funktioniert. Ein Uni-Studium für ein FIAE ist auch wieder Zeitverschwendung, da es hier nicht um praktische Anwendung geht, sondern eher um theoretische Informatik, die doch sehr weit von der Praxis entfernt ist.
    Wie auch mit der Ausbildung kommt es darauf an, was man hinterher daraus macht. Ich kenne viele Diplom-Informatiker, die man einfach gegen die Wand klatschen könnte, da sie mit ihrem Studiumwissen von vor 20 Jahren stehengeblieben sind und sich auch nicht weitergebildet haben. Vor einigen Jahren hatte ich mal ein Gespräch mit einem Diplom-Informatiker gehabt, der geschwärmt hat, wie cool doch die Generische Programmierung sei und ich musste mich echt zusammenreißen, um nicht zu fragen, ob er die letzten 20 Jahre hinter dem Mond gelebt hat.
    Und ich finde, genau da sollte man genauer hinschauen und nicht nur auf den Abschluss. Es kann doch nicht sein, nur weil da ein Entwickler 10+ Jahre in einer Firma angestellt ist, sich dann Senior Entwickler nennen darf und mehr Geld verdient aber sich von Junior Entwicklern schulen lassen muss, weil der Senior Entwickler die letzten Jahre gepennt haben. Das trifft bei weitem nicht auf alle Senior Entwickler zu aber ich denke, fast jeder kennt den einen oder anderen Entwickler, auf dem genau dies zutrifft. Und mir ist es auch klar, dass ein Senior Entwickler nicht alle neuesten Technologien und Frameworks kennen muss, weil die gerade durchs Dorf gescheucht werden aber Sprachen, das darunterliegende Ökosystem und deren Werkzeuge (IDEs, ...) entwickeln sich ja auch weiter.
  10. Like
    Whiz-zarD hat eine Reaktion von StefanE erhalten in Ist ein Informatik Studium Zeitverschwendung im Vergleich zu einer guten Ausbildung? Sowohl fachlich als auch gehaltstechnisch?   
    Ich denke, man muss endlich verstehen, dass ein Studium keine Berufsausbildung ist. Ein Studium ist auch keine Vorbereitung zur Selbstständigkeit. Ein Studium ist in erster Linie eine Vorbereitung für die Forschung und nicht für die Wirtschaft.
    Ein Studium für ein FISI ist tatsächlich Zeitverschwendung, weil der FISI ein sehr praktischer Beruf ist. Es geht hier um Konfiguration, Administration und Pflege von IT-Systemen und Netzwerken. Das lernt man nicht in einem Studium. Für FIAE kann (muss aber nicht) ein FH(!)-Studium vom Vorteil sein, da man eben Grundlagenforschung auf einer praktischen Ebene betreibt und u.a. Algorithmen und Datenstrukturen durchleuchtet. Ich lehne mich mal weit aus dem Fenster und ich behaupte mal, dass viele FIAE-Azubis nicht so tief reinschauen. Ich glaube nicht, dass viele z.B. mal eine verkettete Liste selber implementieren oder mal schauen, wie ein balancierter Baum funktioniert. Ein Uni-Studium für ein FIAE ist auch wieder Zeitverschwendung, da es hier nicht um praktische Anwendung geht, sondern eher um theoretische Informatik, die doch sehr weit von der Praxis entfernt ist.
    Wie auch mit der Ausbildung kommt es darauf an, was man hinterher daraus macht. Ich kenne viele Diplom-Informatiker, die man einfach gegen die Wand klatschen könnte, da sie mit ihrem Studiumwissen von vor 20 Jahren stehengeblieben sind und sich auch nicht weitergebildet haben. Vor einigen Jahren hatte ich mal ein Gespräch mit einem Diplom-Informatiker gehabt, der geschwärmt hat, wie cool doch die Generische Programmierung sei und ich musste mich echt zusammenreißen, um nicht zu fragen, ob er die letzten 20 Jahre hinter dem Mond gelebt hat.
    Und ich finde, genau da sollte man genauer hinschauen und nicht nur auf den Abschluss. Es kann doch nicht sein, nur weil da ein Entwickler 10+ Jahre in einer Firma angestellt ist, sich dann Senior Entwickler nennen darf und mehr Geld verdient aber sich von Junior Entwicklern schulen lassen muss, weil der Senior Entwickler die letzten Jahre gepennt haben. Das trifft bei weitem nicht auf alle Senior Entwickler zu aber ich denke, fast jeder kennt den einen oder anderen Entwickler, auf dem genau dies zutrifft. Und mir ist es auch klar, dass ein Senior Entwickler nicht alle neuesten Technologien und Frameworks kennen muss, weil die gerade durchs Dorf gescheucht werden aber Sprachen, das darunterliegende Ökosystem und deren Werkzeuge (IDEs, ...) entwickeln sich ja auch weiter.
  11. Like
    Whiz-zarD hat eine Reaktion von Bitschnipser erhalten in Ist ein Informatik Studium Zeitverschwendung im Vergleich zu einer guten Ausbildung? Sowohl fachlich als auch gehaltstechnisch?   
    Ich denke, man muss endlich verstehen, dass ein Studium keine Berufsausbildung ist. Ein Studium ist auch keine Vorbereitung zur Selbstständigkeit. Ein Studium ist in erster Linie eine Vorbereitung für die Forschung und nicht für die Wirtschaft.
    Ein Studium für ein FISI ist tatsächlich Zeitverschwendung, weil der FISI ein sehr praktischer Beruf ist. Es geht hier um Konfiguration, Administration und Pflege von IT-Systemen und Netzwerken. Das lernt man nicht in einem Studium. Für FIAE kann (muss aber nicht) ein FH(!)-Studium vom Vorteil sein, da man eben Grundlagenforschung auf einer praktischen Ebene betreibt und u.a. Algorithmen und Datenstrukturen durchleuchtet. Ich lehne mich mal weit aus dem Fenster und ich behaupte mal, dass viele FIAE-Azubis nicht so tief reinschauen. Ich glaube nicht, dass viele z.B. mal eine verkettete Liste selber implementieren oder mal schauen, wie ein balancierter Baum funktioniert. Ein Uni-Studium für ein FIAE ist auch wieder Zeitverschwendung, da es hier nicht um praktische Anwendung geht, sondern eher um theoretische Informatik, die doch sehr weit von der Praxis entfernt ist.
    Wie auch mit der Ausbildung kommt es darauf an, was man hinterher daraus macht. Ich kenne viele Diplom-Informatiker, die man einfach gegen die Wand klatschen könnte, da sie mit ihrem Studiumwissen von vor 20 Jahren stehengeblieben sind und sich auch nicht weitergebildet haben. Vor einigen Jahren hatte ich mal ein Gespräch mit einem Diplom-Informatiker gehabt, der geschwärmt hat, wie cool doch die Generische Programmierung sei und ich musste mich echt zusammenreißen, um nicht zu fragen, ob er die letzten 20 Jahre hinter dem Mond gelebt hat.
    Und ich finde, genau da sollte man genauer hinschauen und nicht nur auf den Abschluss. Es kann doch nicht sein, nur weil da ein Entwickler 10+ Jahre in einer Firma angestellt ist, sich dann Senior Entwickler nennen darf und mehr Geld verdient aber sich von Junior Entwicklern schulen lassen muss, weil der Senior Entwickler die letzten Jahre gepennt haben. Das trifft bei weitem nicht auf alle Senior Entwickler zu aber ich denke, fast jeder kennt den einen oder anderen Entwickler, auf dem genau dies zutrifft. Und mir ist es auch klar, dass ein Senior Entwickler nicht alle neuesten Technologien und Frameworks kennen muss, weil die gerade durchs Dorf gescheucht werden aber Sprachen, das darunterliegende Ökosystem und deren Werkzeuge (IDEs, ...) entwickeln sich ja auch weiter.
  12. Like
    Whiz-zarD hat eine Reaktion von allesweg erhalten in Ist ein Informatik Studium Zeitverschwendung im Vergleich zu einer guten Ausbildung? Sowohl fachlich als auch gehaltstechnisch?   
    Ich denke, man muss endlich verstehen, dass ein Studium keine Berufsausbildung ist. Ein Studium ist auch keine Vorbereitung zur Selbstständigkeit. Ein Studium ist in erster Linie eine Vorbereitung für die Forschung und nicht für die Wirtschaft.
    Ein Studium für ein FISI ist tatsächlich Zeitverschwendung, weil der FISI ein sehr praktischer Beruf ist. Es geht hier um Konfiguration, Administration und Pflege von IT-Systemen und Netzwerken. Das lernt man nicht in einem Studium. Für FIAE kann (muss aber nicht) ein FH(!)-Studium vom Vorteil sein, da man eben Grundlagenforschung auf einer praktischen Ebene betreibt und u.a. Algorithmen und Datenstrukturen durchleuchtet. Ich lehne mich mal weit aus dem Fenster und ich behaupte mal, dass viele FIAE-Azubis nicht so tief reinschauen. Ich glaube nicht, dass viele z.B. mal eine verkettete Liste selber implementieren oder mal schauen, wie ein balancierter Baum funktioniert. Ein Uni-Studium für ein FIAE ist auch wieder Zeitverschwendung, da es hier nicht um praktische Anwendung geht, sondern eher um theoretische Informatik, die doch sehr weit von der Praxis entfernt ist.
    Wie auch mit der Ausbildung kommt es darauf an, was man hinterher daraus macht. Ich kenne viele Diplom-Informatiker, die man einfach gegen die Wand klatschen könnte, da sie mit ihrem Studiumwissen von vor 20 Jahren stehengeblieben sind und sich auch nicht weitergebildet haben. Vor einigen Jahren hatte ich mal ein Gespräch mit einem Diplom-Informatiker gehabt, der geschwärmt hat, wie cool doch die Generische Programmierung sei und ich musste mich echt zusammenreißen, um nicht zu fragen, ob er die letzten 20 Jahre hinter dem Mond gelebt hat.
    Und ich finde, genau da sollte man genauer hinschauen und nicht nur auf den Abschluss. Es kann doch nicht sein, nur weil da ein Entwickler 10+ Jahre in einer Firma angestellt ist, sich dann Senior Entwickler nennen darf und mehr Geld verdient aber sich von Junior Entwicklern schulen lassen muss, weil der Senior Entwickler die letzten Jahre gepennt haben. Das trifft bei weitem nicht auf alle Senior Entwickler zu aber ich denke, fast jeder kennt den einen oder anderen Entwickler, auf dem genau dies zutrifft. Und mir ist es auch klar, dass ein Senior Entwickler nicht alle neuesten Technologien und Frameworks kennen muss, weil die gerade durchs Dorf gescheucht werden aber Sprachen, das darunterliegende Ökosystem und deren Werkzeuge (IDEs, ...) entwickeln sich ja auch weiter.
  13. Like
    Whiz-zarD hat eine Reaktion von 0x00 erhalten in Ist ein Informatik Studium Zeitverschwendung im Vergleich zu einer guten Ausbildung? Sowohl fachlich als auch gehaltstechnisch?   
    Ich denke, man muss endlich verstehen, dass ein Studium keine Berufsausbildung ist. Ein Studium ist auch keine Vorbereitung zur Selbstständigkeit. Ein Studium ist in erster Linie eine Vorbereitung für die Forschung und nicht für die Wirtschaft.
    Ein Studium für ein FISI ist tatsächlich Zeitverschwendung, weil der FISI ein sehr praktischer Beruf ist. Es geht hier um Konfiguration, Administration und Pflege von IT-Systemen und Netzwerken. Das lernt man nicht in einem Studium. Für FIAE kann (muss aber nicht) ein FH(!)-Studium vom Vorteil sein, da man eben Grundlagenforschung auf einer praktischen Ebene betreibt und u.a. Algorithmen und Datenstrukturen durchleuchtet. Ich lehne mich mal weit aus dem Fenster und ich behaupte mal, dass viele FIAE-Azubis nicht so tief reinschauen. Ich glaube nicht, dass viele z.B. mal eine verkettete Liste selber implementieren oder mal schauen, wie ein balancierter Baum funktioniert. Ein Uni-Studium für ein FIAE ist auch wieder Zeitverschwendung, da es hier nicht um praktische Anwendung geht, sondern eher um theoretische Informatik, die doch sehr weit von der Praxis entfernt ist.
    Wie auch mit der Ausbildung kommt es darauf an, was man hinterher daraus macht. Ich kenne viele Diplom-Informatiker, die man einfach gegen die Wand klatschen könnte, da sie mit ihrem Studiumwissen von vor 20 Jahren stehengeblieben sind und sich auch nicht weitergebildet haben. Vor einigen Jahren hatte ich mal ein Gespräch mit einem Diplom-Informatiker gehabt, der geschwärmt hat, wie cool doch die Generische Programmierung sei und ich musste mich echt zusammenreißen, um nicht zu fragen, ob er die letzten 20 Jahre hinter dem Mond gelebt hat.
    Und ich finde, genau da sollte man genauer hinschauen und nicht nur auf den Abschluss. Es kann doch nicht sein, nur weil da ein Entwickler 10+ Jahre in einer Firma angestellt ist, sich dann Senior Entwickler nennen darf und mehr Geld verdient aber sich von Junior Entwicklern schulen lassen muss, weil der Senior Entwickler die letzten Jahre gepennt haben. Das trifft bei weitem nicht auf alle Senior Entwickler zu aber ich denke, fast jeder kennt den einen oder anderen Entwickler, auf dem genau dies zutrifft. Und mir ist es auch klar, dass ein Senior Entwickler nicht alle neuesten Technologien und Frameworks kennen muss, weil die gerade durchs Dorf gescheucht werden aber Sprachen, das darunterliegende Ökosystem und deren Werkzeuge (IDEs, ...) entwickeln sich ja auch weiter.
  14. Danke
    Whiz-zarD hat eine Reaktion von SuperMarios erhalten in Frage zu SQL-Aufgabe WHERE Datumsangaben   
    SELECT ... FROM ... WHERE AufnahmeDatum < DATE '2020-03-01' AND EntlassDatum > DATE '2020-02-01' Es werden die weggefiltert, die nach dem Februar 2020 aufgenommen und die, die vor dem Februar 2020 entlassen worden sind. Übrig bleiben die, die in den Betten lagen.
    Wenn es mit DATE nicht gemacht werden darf:
    SELECT ... FROM ... WHERE (MONTH(AufnahmeDatum) < 3 AND YEAR(AufnahmeDatum) = 2020) AND (MONTH(EntlassDatum) >= 2 AND YEAR(EntlassDatum) = 2020)  
  15. Like
    Whiz-zarD hat eine Reaktion von SuperMarios erhalten in Frage zu SQL-Aufgabe WHERE Datumsangaben   
    Stimmt. 😅
    Auch das stimmt. Bin zu sehr Oracle geschädigt. Da schreibt man es mit DATE. 😅
  16. Positiv
    Whiz-zarD hat eine Reaktion von SuperMarios erhalten in Frage zu SQL-Aufgabe WHERE Datumsangaben   
    Letzendlich ist alles eine Zahl.
    Ich bin mir jetzt nicht so ganz sicher, ob es zum SQL-Standard gehört aber für gewöhnlich verwenden die RDBMS das ISO 8601-Fomat. Also YYYY-MM-DD. Für andere Formate muss man eine Konvertierung vornehmen. In Oracle DB z.B. die TO_DATE()-Funktion.
    Wie das jetzt in der Abschlussprüfung bewertet wird, kann ich nicht sagen. Ist vermutlich auch unterschiedlich.
     
  17. Like
    Whiz-zarD reagierte auf Rienne in Frage zu SQL-Aufgabe WHERE Datumsangaben   
    Ein kleiner Fehler hat sich noch eingeschlichen: Beim Aufnahmedatum sollte das Jahr kleiner gleich 2020 sein und nicht nur gleich 2020.
    Ich glaube DATE benötigt es im klassischen SQL gar nicht. Lediglich die Formatierung muss passen. D.h. die Abfrage müsste lauten:
    SELECT ... FROM ... WHERE AufnahmeDatum <'2020-03-01' AND EntlassDatum >= '2020-02-01' Nachzulesen hier: https://www.w3schools.com/sql/sql_dates.asp
  18. Positiv
    Whiz-zarD hat eine Reaktion von SuperMarios erhalten in Frage zu SQL-Aufgabe WHERE Datumsangaben   
    Ist das nicht diese Aufgabe?
     
  19. Haha
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C   
    Damit behebt man das Problem aber nur bedingt. scanf() scant solange den stdin, bis ein newline gefunden wird. Bei "%c" würde man also jedes Zeichen einzeln zurückgeben. Deswegen erscheit auch der Text zwei Mal, weil im Gegensatz zu Unix Windows ein anderes Vorgehen für new line hat. Wenn man nämlich '1' + Enter eingibt, werden drei Zeichen übertragen: '1', carriage return und new line. Also gibt scanf() zurück '1' zurück und dann carriage return. In deinem Beispiel würde er zwar carriage return ignorieren aber das Problem bestünde weiterhin, wenn der Benutzer z.B. "12" eingibt. Dann wird die Schleife wieder zwei Mal ausgeführt und dementsprechend wird der Text auch zwei Mal ausgewiesen.
    Wenn man das Problem in den Griff bekommen möchte, muss man etwas weiter ausholen, denn mit einem scanf() alleine kommt man hier nicht weit. scanf() ist auch nicht unbedingt dafür gedacht, Benutzereingaben entgegenzunehmen, sondern ist fürs Parsing von stdin gedacht. Das Parsing setzt aber schon voraus, dass die Daten in einer Strukturierten Form vorliegen. Das ist aber bei Benutzereingaben nicht der Fall. Die sind sehr willkürlich.
    Man könnte jetzt auf die Idee kommen, einfach per scanf() einen string einzulesen anstatt ein einzelnes Zeichen:
    char s[1]; scanf("%s", s); printf("%s", s); Dies ist aber nicht vor Speicherüberläufen geschützt. Wenn man jetzt "123" eingibt, würde "123" auch rauskommen, obwohl der String nur ein Zeichen belegt und die anderen beiden außerhalb des Bereiches liegen und somit vollkommen ungeschützt.
    Der ideale Weg wäre mit fgets() die stdin in einem Puffer zu lesen und diesen dann zu parsen. fgets() ist nämlich sicher vor Speicherüberläufen. Er stoppt, wenn der Puffer gefüllt ist, new line oder end of file erreicht ist. Jenachdem, was zu erst eintritt.
    Hier mal eine Funktion, die sicherstellt, dass der Benutzer auch wirklich nur ein Zeichen eingegeben hat:
    int readChar(char *c) { char puffer[10]; char temp[10]; fgets(puffer, sizeof(puffer), stdin); sscanf(puffer, "%s", temp); int length = strlen(temp); if(length == 1) { *c = temp[0]; return 0; } if(length == 0) return -1; if(length > 1) return 1; } Der Rückgabewert ist ein für C typisches Pattern um Fehlermeldungen darzustellen, da es ja keine Exceptions gibt. Bei 0 ist alles in Ordnung. Bei -1 hat der Benutzer nur die Enter-Taste gedrückt und bei 1 wurden zu viele Zeichen eingeben.
    Und nein, das hat alles nichts mit irgendwelchen Eigenheiten von C zu tun, sondern C ist eine ist zwar eine Hochsprache aber in einem sehr niedrigen Level und das was man mit anderen Sprachen mit einer Zeile machen kann, muss man hier schon selber schreiben.

  20. Danke
    Whiz-zarD hat eine Reaktion von JustALurker erhalten in Nur auszuwählende Zeichen akzeptieren C   
    Damit behebt man das Problem aber nur bedingt. scanf() scant solange den stdin, bis ein newline gefunden wird. Bei "%c" würde man also jedes Zeichen einzeln zurückgeben. Deswegen erscheit auch der Text zwei Mal, weil im Gegensatz zu Unix Windows ein anderes Vorgehen für new line hat. Wenn man nämlich '1' + Enter eingibt, werden drei Zeichen übertragen: '1', carriage return und new line. Also gibt scanf() zurück '1' zurück und dann carriage return. In deinem Beispiel würde er zwar carriage return ignorieren aber das Problem bestünde weiterhin, wenn der Benutzer z.B. "12" eingibt. Dann wird die Schleife wieder zwei Mal ausgeführt und dementsprechend wird der Text auch zwei Mal ausgewiesen.
    Wenn man das Problem in den Griff bekommen möchte, muss man etwas weiter ausholen, denn mit einem scanf() alleine kommt man hier nicht weit. scanf() ist auch nicht unbedingt dafür gedacht, Benutzereingaben entgegenzunehmen, sondern ist fürs Parsing von stdin gedacht. Das Parsing setzt aber schon voraus, dass die Daten in einer Strukturierten Form vorliegen. Das ist aber bei Benutzereingaben nicht der Fall. Die sind sehr willkürlich.
    Man könnte jetzt auf die Idee kommen, einfach per scanf() einen string einzulesen anstatt ein einzelnes Zeichen:
    char s[1]; scanf("%s", s); printf("%s", s); Dies ist aber nicht vor Speicherüberläufen geschützt. Wenn man jetzt "123" eingibt, würde "123" auch rauskommen, obwohl der String nur ein Zeichen belegt und die anderen beiden außerhalb des Bereiches liegen und somit vollkommen ungeschützt.
    Der ideale Weg wäre mit fgets() die stdin in einem Puffer zu lesen und diesen dann zu parsen. fgets() ist nämlich sicher vor Speicherüberläufen. Er stoppt, wenn der Puffer gefüllt ist, new line oder end of file erreicht ist. Jenachdem, was zu erst eintritt.
    Hier mal eine Funktion, die sicherstellt, dass der Benutzer auch wirklich nur ein Zeichen eingegeben hat:
    int readChar(char *c) { char puffer[10]; char temp[10]; fgets(puffer, sizeof(puffer), stdin); sscanf(puffer, "%s", temp); int length = strlen(temp); if(length == 1) { *c = temp[0]; return 0; } if(length == 0) return -1; if(length > 1) return 1; } Der Rückgabewert ist ein für C typisches Pattern um Fehlermeldungen darzustellen, da es ja keine Exceptions gibt. Bei 0 ist alles in Ordnung. Bei -1 hat der Benutzer nur die Enter-Taste gedrückt und bei 1 wurden zu viele Zeichen eingeben.
    Und nein, das hat alles nichts mit irgendwelchen Eigenheiten von C zu tun, sondern C ist eine ist zwar eine Hochsprache aber in einem sehr niedrigen Level und das was man mit anderen Sprachen mit einer Zeile machen kann, muss man hier schon selber schreiben.

  21. Like
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C   
    Wozu willst du das Zeichen '1' noch in eine 1 umwandeln? Ich sehe hier keinen Bedarf für.
     
  22. Like
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C   
    Ist vielleicht schon zu viel aber man könnte daraus auch Konstante, mittels der #define Direktive machen.
     
     
  23. Positiv
    Whiz-zarD hat eine Reaktion von JustALurker erhalten in Nur auszuwählende Zeichen akzeptieren C   
    Wozu willst du das Zeichen '1' noch in eine 1 umwandeln? Ich sehe hier keinen Bedarf für.
     
  24. Like
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C   
    Ein char ist intern auch nur ein Zahlenwert, der exakt ein Byte groß ist. Komischer Zufall, wa? Historisch betrachtet ist ein Byte die Menge an Bits, die benötigt werden, um ein Zeichen darzustellen.  Mit Hilfe der ASCII-Tabelle weiß die Grafikkarte nun, wie das Zeichen mit dem Wert 98 aussieht. Es ist nämlich ein b. Der Weg geht auch andersrum. Man kann ein Zeichen in Hochkommata setzen und der Compiler wandelt es zurück in eine Zahl.  Du kannst dann also z.B.
    while (auswahl != 'b') { schreiben und der Compiler macht aus 'b' eine 98. Dasselbe gilt auch für deine if-Abfragen.
    Du kannst ja mal folgenden Code testen:
    printf("%d", 'b'); Du siehst, als Ergebnis kommt 98 raus.
  25. Like
    Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C   
    %i ist aber auch nicht richtig. Ist b eine Zahl?
    Was hindert dich, die Eingabe zu machen, diese Eingabe auszuwerten, deine Ausgabe zu machen und dann wieder von vorne anzufangen?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...