Seite 1 von 2 12 Letzte »
Ergebnis 1 bis 20 von 30

Quellcode Beispiele und Snippets

  1. #1 Zitieren
    Nicht hilfreich  Avatar von walljumper
    Registriert seit
    Jun 2004
    Beiträge
    5.162
    In diesem Thread gehts darum das wir voneinander lernen und wiederkehrende Probleme nicht ständig neu implementieren müssen.

    Regeln:

    -Jeder kann und soll etwas beitragen. Kommentare und Verbesserungsvorschläge kommen in den Diskussionsthread

    -Erlaubt sind alle echten Programmiersprachen, kein HTML, es muss aber immer genannt werden um welche Sprache es sich handelt und welche Version(bei php z.B. v4 oder v5) bzw. auf welchem Compiler getestet wurde und welche Bibliotheken verwendet wurden.

    -Kommentiert bitte euren Code ausführlich und erklärt was er macht eventuell auch wie er es macht, es geht darum etwas zu lernen.

    -Es sollte für einen Algorithmus nur eine Implementierung vorhanden sein (einmal Bubblesort reicht), damit die Übersichtlichkeit erhalten bleibt.

    -Es wäre zwar schön, wenn der Thread schnell anwächst, aber trotzdem bitte nicht für jedes Triviale Problem einen Code posten.

    -Ich denke Codes bis 300 Zeilen im Forum sind ok größere Codes bitte extern verlinken und wenn möglich mit Syntax Highlighting versehen.

    -Verwendet bitte Variablen Bezeichnungen, die die Funktion der Variablen erklären.

    - Macht eure Signatur bitte aus

    walljumper ist offline Geändert von walljumper (26.06.2007 um 18:43 Uhr)

  2. #2 Zitieren
    Nicht hilfreich  Avatar von walljumper
    Registriert seit
    Jun 2004
    Beiträge
    5.162
    Und gleich ein Beispiel von mir, ich hoffe ihr verzeiht mit den Doppelpost.

    Sprache: C++
    Compiler: Borland
    Bibliotheken: Nur standard C++
    Algorithmus: Erastosthenes (nur anzugeben falls zutreffend)

    Das Programm sucht und zählt alle Primzahlen zwischen 0 und 1mio.
    Es besteht aus 3 Dateien in BitArray.h und BitArray.cpp ist die gleichnamige Klasse als Singelton implementiert, das heist das davon keine Instanzen erstellt werden können, es gibt nur ein Objekt.

    BitArray.h
    Code:
    //---------------------------------------------------------------------------
    
    #ifndef BitArrayH
    #define BitArrayH 
    typedef unsigned int TYPE;  //typedef damit einfach im ganzen Programm der Variablen Typ geändert werden kann
    const TYPE lim=1000000;   //Die Suchgrenze 
    
    class BitArray  // als Singelton
    {
    private:
    //Konstruktoren sind private damit keine Instanz erstellt werden kann
    BitArray();
    BitArray(const BitArray& op){}
    unsigned short* data;          //hier wird das Array gespeichert
    
    public:
    ~BitArray();
    static BitArray& getBitArray();   //dient dem Zugriff auf die einzige Instanz
    void setBit(TYPE addr);   //setzt das Bit an der Stelle addr
    void clrBit(TYPE addr);   //löscht das Bit an der Stelle addr
    bool getBit(TYPE addr);   //liefert zurück ob das Bit an der Stelle addr gesetzt ist
    };
    #define PrimeArray BitArray::getBitArray()
    //---------------------------------------------------------------------------
    #endif
    BitArray.cpp
    Code:
    //---------------------------------------------------------------------------
    
    #pragma hdrstop
    
    #include "BitArray.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    
    BitArray::BitArray()
    {
     data = new unsigned short[lim/16]; //jedes short kann 16 Bits aufnehmen daher werden nur lim/16 shorts benötigt
     for(TYPE i=0;i<lim/16;i++)
     	{
            data[i]=0xffff; // alle Bits werden auf 1 gesetzt 0xffff ist eine Hexzahl
        }
    }
    BitArray::~BitArray()
    {
    delete[] data;     //Speicher wieder freigeben
    }
    BitArray& BitArray::getBitArray()
    {
     static BitArray Instance;  
     return Instance;
    }
    void BitArray::setBit(TYPE addr)
    {
     switch(addr%16)        //Bit innerhalb eine short addressieren
     	{
            case 0: data[addr/16] |= 0x0001; break;   //short aus dem Array addressieren und durch Bitweise Veroderung Bit setzen
            case 1: data[addr/16] |= 0x0002; break; 
            case 2: data[addr/16] |= 0x0004; break; 
            case 3: data[addr/16] |= 0x0008; break; 
            case 4: data[addr/16] |= 0x0010; break; 
            case 5: data[addr/16] |= 0x0020; break; 
            case 6: data[addr/16] |= 0x0040; break; 
            case 7: data[addr/16] |= 0x0080; break; 
            case 8: data[addr/16] |= 0x0100; break; 
            case 9: data[addr/16] |= 0x0200; break; 
            case 10:data[addr/16] |= 0x0400; break; 
            case 11:data[addr/16] |= 0x0800; break; 
            case 12:data[addr/16] |= 0x1000; break; 
            case 13:data[addr/16] |= 0x2000; break; 
            case 14:data[addr/16] |= 0x4000; break; 
            case 15:data[addr/16] |= 0x8000; break; 
        }
    }
    void BitArray::clrBit(TYPE addr)
    {
     switch(addr%16)
     	{
            case 0: data[addr/16] &= 0xfffe; break; //short aus dem Array addressieren und durch Bitweise Verundung Bit setzen
            case 1: data[addr/16] &= 0xfffd; break; 
            case 2: data[addr/16] &= 0xfffb; break; 
            case 3: data[addr/16] &= 0xfff7; break; 
            case 4: data[addr/16] &= 0xffef; break; 
            case 5: data[addr/16] &= 0xffdf; break; 
            case 6: data[addr/16] &= 0xffbf; break; 
            case 7: data[addr/16] &= 0xff7f; break; 
            case 8: data[addr/16] &= 0xfeff; break; 
            case 9: data[addr/16] &= 0xfdff; break; 
            case 10:data[addr/16] &= 0xfbff; break; 
            case 11:data[addr/16] &= 0xf7ff; break; 
            case 12:data[addr/16] &= 0xefff; break; 
            case 13:data[addr/16] &= 0xdfff; break; 
            case 14:data[addr/16] &= 0xbfff; break; 
            case 15:data[addr/16] &= 0x7fff; break; 
        }
    }
    bool BitArray::getBit(TYPE addr)
    {
     switch(addr%16)
     	{
            case 0: if(data[addr/16] & 0x0001)return true;break;   //short aus dem Array addressieren durch Bitweise verundung wert feststellen
            case 1: if(data[addr/16] & 0x0002)return true;break; 
            case 2: if(data[addr/16] & 0x0004)return true;break; 
            case 3: if(data[addr/16] & 0x0008)return true;break; 
            case 4: if(data[addr/16] & 0x0010)return true;break; 
            case 5: if(data[addr/16] & 0x0020)return true;break; 
            case 6: if(data[addr/16] & 0x0040)return true;break; 
            case 7: if(data[addr/16] & 0x0080)return true;break; 
            case 8: if(data[addr/16] & 0x0100)return true;break; 
            case 9: if(data[addr/16] & 0x0200)return true;break; 
            case 10:if(data[addr/16] & 0x0400)return true;break; 
            case 11:if(data[addr/16] & 0x0800)return true;break; 
            case 12:if(data[addr/16] & 0x1000)return true;break; 
            case 13:if(data[addr/16] & 0x2000)return true;break; 
            case 14:if(data[addr/16] & 0x4000)return true;break; 
            case 15:if(data[addr/16] & 0x8000)return true;break; 
        }
     return false;
    }
    Unit1.cpp
    Code:
    //---------------------------------------------------------------------------
    #include<iostream>
    #include<cmath>
    #include<ctime>
    #pragma hdrstop
    #include "BitArray.h"
    using namespace std;
    
    //---------------------------------------------------------------------------
    /* Es wird der Primzahlsuchalgorithmus Sieb des Erastosthenes implementiert */
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
      //Vorbereitungen
      TYPE border = sqrt((long double)lim);
      TYPE zahl = 3; //kleinste Primzahl außer 2(Sonderfall)
      TYPE Primanzahl=1; // weil die 2 nicht erfasst wird
      PrimeArray.clrBit(0);  // 0 und 1 sind keine Primzahlen
      PrimeArray.clrBit(1);  //
      double start,ende;     //Speicherung der Zeit
    
      start = -clock();
      //Berechnung
      while(zahl<=border)
      	{
        if(PrimeArray.getBit(zahl))
        	{
            TYPE max= lim/zahl;
            for(TYPE multiplikator=zahl;multiplikator<=max;multiplikator+=2)
            	{
                    PrimeArray.clrBit(zahl*multiplikator);
                }
            }
        zahl +=2; //Es werden nur ungerade zahlen geprüft
        }
      ende = clock();
      //Auswertung;
      for(TYPE i=3;i<=lim;i+=2)if(PrimeArray.getBit(i))Primanzahl++;
      //Ausgabe
      cout<<"Es wurden "<<Primanzahl<<" Primzahlen in "<<(start+ende)/CLOCKS_PER_SEC<<" Sekunden gefunden";
      getchar();
        
      return 0;
    }
    //---------------------------------------------------------------------------
    Das Programm benötigt bei mir ca. 0,015 Sekunden, das kann man auf diese Weise nicht mehr genau messen. Den Suchbereich kann man ganz einfach erhöhren, indem man die Variable lim erhöht, wenn lim über 2^32 liegt muss der typedef geändert werden nach
    typedef unsigned long long TYPE;

    walljumper ist offline

  3. #3 Zitieren
    Auserwählter Avatar von haddock
    Registriert seit
    Aug 2005
    Ort
    /dev/null
    Beiträge
    6.575
    Ich hätte einen Vorschlag:
    Wenn möglich sollte man doch eine compilierte Version des Programms posten. Ich glaube kaum, dat jeder Lust hat, die alle noch zu compilen.

    Meine Apps im AppStore:
    [Bild: frantic.png]

    haddock ist offline

  4. #4 Zitieren
    Abenteurer
    Registriert seit
    Sep 2006
    Beiträge
    61
    Halte ich für überflüssig. Laut Thread-Titel geht es hier um Beispiele und Snippets, nicht um komplette Programme.

    Hier ist eins von mir:

    Sprache: C++
    Compiler: Jeder ANSI C++ 99 Kompatible (also so ziemlich jeder)
    Bibliotheken: C++ Standardbibliothek

    Beschreibung: Die Funktion konvertiert jeden Datentyp in einen String. Einzige Vorrausetzung ist, dass der

    ostream& operator<< (ostream&, const T&)

    vorhanden ist. Oder anders gesagt, jeder Datentyp der auch per cout ausgegeben werden kann, kann auch in einen String konvertiert werden.

    Code:
    #include <iostream>
    #include <sstream>
    #include <string>
    
    template<typename T> std::string toString (const T& t) 
    {
       std::ostringstream oss;  // Einen String-Stream erstellen
       oss << t;               // Argument dort reinschreiben
       return oss.str();     // Den vom String Stream verwalteten String zurückgeben.
    }
    Edit: Header vergessen.
    atheist ist offline Geändert von atheist (11.06.2007 um 18:13 Uhr)

  5. #5 Zitieren
    Schwertmeister Avatar von Hisoka999
    Registriert seit
    Jun 2007
    Ort
    Im Norden
    Beiträge
    853
    Sprache: Java
    Compiler: Java 1.5.0_update10 (Java 1.5 wird benötigt)

    Dieses Programm habe ich im Studium geschrieben. Es diente als Übung zu Listen. Es ist ein kleiner Notizblock auf Konsolenbasis. Das Programm ist aber schon recht alt und einiges könnte man weit besser lösen(Dafür sollte es recht leicht zu verstehen sein).

    Block Klasse und die main Methode
    Code:
    import java.util.*;
    
    public class Block
    {
        // instance variables - replace the example below with your own
        private ArrayList<Notiz> notizen;
    
        /**
         * Constructor for objects of class block
         */
        public Block()
        {
            // initialise instance variables
            notizen = new ArrayList<Notiz>();
        }
    
        public void addNotiz(String Tag,int Stunde,String Info)
        {
            Notiz tmp = new Notiz(Tag,Stunde,Info);
            notizen.add(tmp);
        }
        
        public void delNotiz(int n)
        {
            notizen.remove(n);
        }
        
        //Ausgabe aller Notizen mit Hilfe einer for-Schleife 
        public void zeigeAlleNotizen()
        {
            for (int i=0 ;i<notizen.size();i++)
            {
                Notiz tmp = notizen.get(i);
                System.out.println(tmp.getTag()+" "+tmp.getStunde()+" Uhr: "+tmp.getInfo());
            }
        }
        //Main Methode zum testen der Ausgabe
        public static void main(String[] args){
        	Block b = new Block();
        	b.addNotiz("Montag", 12, "Ich gehe nicht zu Englisch!!!!!");
        	b.addNotiz("Dienstag", 12, "BS Übungen sind nutzlos");
        	b.zeigeAlleNotizen();
        }
    
    }
    Notiz Klasse
    Code:
    public class Notiz
    {
        // instance variables - replace the example below with your own
        private String Tag;
        private String Info;
        private int Stunde;
        /**
         * Constructor for objects of class notiz
         */
        public Notiz(String Tag,int Stunde, String Info)
        {
            // initialise instance variables
            this.Tag = Tag;
            this.Stunde =Stunde;
            this.Info = Info;
        }
    
        public void setTag(String Tag)
        {
            this.Tag = Tag;
        }
        public String getTag()
        {
            return Tag;
        }
        public String getInfo()
        {
            return Info;
        }
        public int getStunde()
        {
            return Stunde;
        }
    
    }
    Download: http://area51.silver-boards.com/downloads/notizen.jar

    Wenn etwas unverständlich ist bitte Fragen
    Hisoka999 ist offline

  6. #6 Zitieren
    Lehrling
    Registriert seit
    Jun 2007
    Beiträge
    11
    Mal was spezielleres. Der folgende Code soll die auszugebenden Zeichen bei einer beliebigen Benutzereingabe durch Sternchen ersetzen, besonders bekannt bei Passworteingaben z.B.. Leider bewegt es sich durch getch () von Standard weg...

    Sprache: C++
    Compiler: MS Visual Studio, MinGW, GCC, Borland (Sofern conio.h mitgeliefert)
    Bibliotheken: conio.h

    Code:
    #include <iostream>
    #include <string>
    #include <conio.h>
    
    using namespace std;
    
    string sternchen()
    {
       string pw = ""; char eingabe;
       cout << "Passwort:";
    
       while(true)
       {
          // Einzelnes Zeichen echolos einlesen
          eingabe = getch();
          switch (eingabe)
          {
             // Sobald ENTER gedrückt wurde (ASCII 13), soll die eingelesene Zeichenkette zurück-
             // gegeben werden
             case 13 : return pw;
    
             // Sobald Backspace-Taste gedrückt wurde (ASCII 8), soll ein Leerzeichen an die letzte
             // Stelle gesetzt werden, und die Zeichenkette verkürzt sich
             case 8 : if(pw.length())
             {
                pw = pw.substr(0,pw.length()-1);
                cout << eingabe << " " << eingabe;
             }
             break;
             default: pw += eingabe; cout << "*";
          }
       }
    }
    
    int main ()
    {
        sternchen ();
    }
    mikey ist offline

  7. #7 Zitieren
    Nicht hilfreich  Avatar von walljumper
    Registriert seit
    Jun 2004
    Beiträge
    5.162
    @atheist
    du solltest vieleicht noch dazuschreiben, welche Header benötigt werden.

    Compilierte Programme denk ich bringts in den meisten Fällen nicht, da wohl nur selten nützliche Programme auftauchen werden.

    Und bitte Code Tags verwenden.

    walljumper ist offline

  8. #8 Zitieren
    Nicht hilfreich  Avatar von walljumper
    Registriert seit
    Jun 2004
    Beiträge
    5.162
    könnte vieleicht mal jemand den Thread anpinnen? sonst geht er noch unter.

    Sprache: C++
    Compiler: Borland
    Bibliotheken: <keine>
    Algorithmus: BubbleSort

    Code:
    #ifndef size_t
    typedef unsigned int size_t;
    #endif
    template<class T>
    void bubbleSort(T* data,size_t length)
    {
     T tmp;
     for(unsigned int i=length-1;i>0;i++)
     	for(unsigned int n=0;n<i;n++)
            if(data[n]>data[n+1])
            	{
                 tmp=data[n];
                 data[n]=data[n+1];
                 data[n+1]=tmp;
                }
    }

    walljumper ist offline

  9. #9 Zitieren
    Veteran Avatar von traxer
    Registriert seit
    Dec 2006
    Ort
    Aachen
    Beiträge
    643
    Name: WinPath.cs
    Sprache: C#
    Bibliotheken: .NET (v2 AFAIK)
    Betriebssystem: Windows (getestet mit XP Pro)
    Compiler: C#-Compiler aus dem .NET Framework (csc.exe /target:winexe WinPath.cs)
    Beschreibung: Ich arbeite viel mit Programmen, die ich über die Kommandozeile aufrufen möchte. Nicht alle solche Programme tragen sich aber in den Pfad für ausfürbare Dateien ein. Das muss ich oft manuell nachholen. Die Benutzeroberfläche, die Windows dafür zu Verfügung stellt, ist bei meinem Pfad (500 Zeichen) grauenhaft. Ich habe mir deshalb folgendes Programm geschrieben, das eine etwas angenehmere Oberfläche dazu anbietet.
    Bugs: Die Einstellungen werden nicht softort wirksam, nach einem Reboot stehen die Einstellungen aber zu Verfügung. Das Fenster kann zwar in der Größe verändert werden, das ändert aber nicht die Größe und Position der GUI-Elemente.

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WinPath
    {
        /**
         * Enthaelt den Einsprungpunkt in die Anwendung
         */
        static class Program {
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new WinPathForm());
            }
        }
    
        /**
         * Dialogfenster. Wegen der ueberschaubaren Groesse ist hier auch die
         * Anwedungslogik untergebracht
         */
        public class WinPathForm : Form {
            // Konstruktor
            public WinPathForm() {
                this.InitializeComponent();
                this.fillListFromSystem();
                this.updateButtonStates();
            }
    
            /**
             * Fuellt die Listenansicht anhand der aktuellen Systemeinstellungen
             */
            private void fillListFromSystem() {
                this.listBoxPath.Items.Clear();
                String strPath = this.getPath();
                String[] arrayPath = strPath.Split(';');
                this.listBoxPath.Items.AddRange(arrayPath);
            }
    
            /**
             * Hier wird zu jeder Schaltflaeche geprueft, ob sie anwaehlbar sein
             * soll oder nicht.
             */
            private void updateButtonStates() {
                int index = this.listBoxPath.SelectedIndex;
                int count = this.listBoxPath.Items.Count;
                if (index == -1 || count == 0) {
                    this.btUp.Enabled = false;
                    this.btDown.Enabled = false;
                    this.btRemove.Enabled = false;
                }
                else {
                    this.btUp.Enabled = true;
                    this.btDown.Enabled = true;
                    this.btRemove.Enabled = true;
                }
                if (index == 0) {
                    this.btUp.Enabled = false;
                }
                if (index == count - 1) {
                    this.btDown.Enabled = false;
                }
            }
    
            /**
             * Liest den Pfad fuer ausfuerbare Dateien aus der Registry.
             *
             * @return Der Pfad fuer ausfuerbare Dateien
             */
            private String getPath() {
                Microsoft.Win32.RegistryKey r1 = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System");
                Microsoft.Win32.RegistryKey r2 = r1.OpenSubKey("CurrentControlSet");
                Microsoft.Win32.RegistryKey r3 = r2.OpenSubKey("Control");
                Microsoft.Win32.RegistryKey r4 = r3.OpenSubKey("Session Manager");
                Microsoft.Win32.RegistryKey r5 = r4.OpenSubKey("Environment");
                String path = r5.GetValue("Path").ToString();
                r5.Close();
                r4.Close();
                r3.Close();
                r2.Close();
                r1.Close();
                return path;
            }
    
            /**
             * Speichert den Pfad fuer ausfuehrare Dateien in der Registry
             *
             * @param path Der neue Pfad fuer ausfuerbare Dateien
             */
            private void setPath(String path) {
                Microsoft.Win32.RegistryKey r1 = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System");
                Microsoft.Win32.RegistryKey r2 = r1.OpenSubKey("CurrentControlSet");
                Microsoft.Win32.RegistryKey r3 = r2.OpenSubKey("Control");
                Microsoft.Win32.RegistryKey r4 = r3.OpenSubKey("Session Manager");
                Microsoft.Win32.RegistryKey r5 = r4.OpenSubKey("Environment", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);
                r5.SetValue("Path", path, Microsoft.Win32.RegistryValueKind.ExpandString);
                r5.Close();
                r4.Close();
                r3.Close();
                r2.Close();
                r1.Close();
            }
    
            // Aufraeumen
            protected override void Dispose(bool disposing) {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
            // Dialog konfigurieren
            private void InitializeComponent() {
                // GUI-Elemente erzeugen und konfigurieren
                this.listBoxPath = new System.Windows.Forms.ListBox();
                this.btAdd = new System.Windows.Forms.Button();
                this.btRemove = new System.Windows.Forms.Button();
                this.btUp = new System.Windows.Forms.Button();
                this.btDown = new System.Windows.Forms.Button();
                this.btSave = new System.Windows.Forms.Button();
                this.btReset = new System.Windows.Forms.Button();
                this.btClose = new System.Windows.Forms.Button();
                this.groupBoxPath = new System.Windows.Forms.GroupBox();
                this.groupBoxPath.SuspendLayout();
                this.SuspendLayout();
                this.listBoxPath.Location = new System.Drawing.Point(6, 19);
                this.listBoxPath.Name = "listBoxPath";
                this.listBoxPath.Size = new System.Drawing.Size(387, 225);
                this.listBoxPath.TabIndex = 0;
                this.btAdd.Location = new System.Drawing.Point(417, 12);
                this.btAdd.Name = "btAdd";
                this.btAdd.Size = new System.Drawing.Size(75, 23);
                this.btAdd.TabIndex = 1;
                this.btAdd.Text = "Add ...";
                this.btAdd.UseVisualStyleBackColor = true;
                this.btRemove.Location = new System.Drawing.Point(417, 41);
                this.btRemove.Name = "btRemove";
                this.btRemove.Size = new System.Drawing.Size(75, 23);
                this.btRemove.TabIndex = 2;
                this.btRemove.Text = "Remove";
                this.btRemove.UseVisualStyleBackColor = true;
                this.btUp.Location = new System.Drawing.Point(417, 99);
                this.btUp.Name = "btUp";
                this.btUp.Size = new System.Drawing.Size(75, 23);
                this.btUp.TabIndex = 3;
                this.btUp.Text = "Up";
                this.btUp.UseVisualStyleBackColor = true;
                this.btDown.Location = new System.Drawing.Point(417, 128);
                this.btDown.Name = "btDown";
                this.btDown.Size = new System.Drawing.Size(75, 23);
                this.btDown.TabIndex = 4;
                this.btDown.Text = "Down";
                this.btDown.UseVisualStyleBackColor = true;
                this.btSave.Location = new System.Drawing.Point(417, 186);
                this.btSave.Name = "btSave";
                this.btSave.Size = new System.Drawing.Size(75, 23);
                this.btSave.TabIndex = 5;
                this.btSave.Text = "Save";
                this.btSave.UseVisualStyleBackColor = true;
                this.btReset.Location = new System.Drawing.Point(417, 215);
                this.btReset.Name = "btReset";
                this.btReset.Size = new System.Drawing.Size(75, 23);
                this.btReset.TabIndex = 6;
                this.btReset.Text = "Reset";
                this.btReset.UseVisualStyleBackColor = true;
                this.btClose.Location = new System.Drawing.Point(417, 244);
                this.btClose.Name = "btClose";
                this.btClose.Size = new System.Drawing.Size(75, 23);
                this.btClose.TabIndex = 7;
                this.btClose.Text = "Close";
                this.btClose.UseVisualStyleBackColor = true;
                this.groupBoxPath.Controls.Add(this.listBoxPath);
                this.groupBoxPath.Location = new System.Drawing.Point(12, 12);
                this.groupBoxPath.Name = "groupBoxPath";
                this.groupBoxPath.Size = new System.Drawing.Size(399, 255);
                this.groupBoxPath.TabIndex = 8;
                this.groupBoxPath.TabStop = false;
                this.groupBoxPath.Text = "Path";
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(504, 279);
    
                // Ereignisbehandlung einrichten
                this.listBoxPath.SelectedIndexChanged += new System.EventHandler(this.listBoxPath_SelectedIndexChanged);
                this.btAdd.Click += new System.EventHandler(this.btAdd_Click);
                this.btRemove.Click += new System.EventHandler(this.btRemove_Click);
                this.btUp.Click += new System.EventHandler(this.btUp_Click);
                this.btDown.Click += new System.EventHandler(this.btDown_Click);
                this.btSave.Click += new System.EventHandler(this.btSave_Click);
                this.btReset.Click += new System.EventHandler(this.btReset_Click);
                this.btClose.Click += new System.EventHandler(this.btClose_Click);
    
                // GUI-Elemente zum Dialog hinzufuegen
                this.Controls.Add(this.groupBoxPath);
                this.Controls.Add(this.btClose);
                this.Controls.Add(this.btReset);
                this.Controls.Add(this.btSave);
                this.Controls.Add(this.btDown);
                this.Controls.Add(this.btUp);
                this.Controls.Add(this.btRemove);
                this.Controls.Add(this.btAdd);
    
                this.Name = "WinPathForm";
                this.Text = "WinPath";
                this.groupBoxPath.ResumeLayout(false);
                this.ResumeLayout(false);
            }
            // Die Anwendung soll ohne Speichern beendet werden
            private void btClose_Click(object sender, EventArgs e) {
                Application.Exit();
            }
            // Es soll ein Verzeicnis in den Pfad aufgenommen werden
            private void btAdd_Click(object sender, EventArgs e) {
                FolderBrowserDialog dialog = new FolderBrowserDialog();
                dialog.Description = "Select the folder you want to add to the path.";
                dialog.ShowNewFolderButton = false;
                DialogResult result = dialog.ShowDialog(this);
                if (result != DialogResult.OK) {
                    return;
                }
                String path = dialog.SelectedPath;
                int index = this.listBoxPath.SelectedIndex;
                if (! this.listBoxPath.Items.Contains(path))
                    this.listBoxPath.Items.Insert(index + 1, path);
                this.updateButtonStates();
            }
            // Das gewaehlte Verzeichnis soll aus dem Pfad entfernt werden
            private void btRemove_Click(object sender, EventArgs e) {
                int index = this.listBoxPath.SelectedIndex;
                if (index == -1)
                    return;
                this.listBoxPath.Items.RemoveAt(index);
                if (this.listBoxPath.Items.Count <= index)
                    index = this.listBoxPath.Items.Count - 1;
                this.listBoxPath.SelectedIndex = index;
                this.updateButtonStates();
            }
            // Das gewaehlte Verzeicnis soll eine Position nach oben wandern
            private void btUp_Click(object sender, EventArgs e) {
                int index = this.listBoxPath.SelectedIndex;
                if (index <= 0)
                    return;
                String s = this.listBoxPath.Items[index].ToString();
                this.listBoxPath.Items.RemoveAt(index);
                this.listBoxPath.Items.Insert(index - 1, s);
                this.listBoxPath.SelectedIndex = index - 1;
                this.updateButtonStates();
            }
            // Das gewaehlte Verzeicnis soll eine Position nach unten wandern
            private void btDown_Click(object sender, EventArgs e) {
                int index = this.listBoxPath.SelectedIndex;
                if (index >= this.listBoxPath.Items.Count - 1 || index == -1)
                    return;
                String s = this.listBoxPath.Items[index].ToString();
                this.listBoxPath.Items.RemoveAt(index);
                this.listBoxPath.Items.Insert(index + 1, s);
                this.listBoxPath.SelectedIndex = index + 1;
                this.updateButtonStates();
            }
            // Der zustand vor der letzten Speicherung soll hergestellt werden
            private void btReset_Click(object sender, EventArgs e) {
                this.fillListFromSystem();
                this.updateButtonStates();
            }
            // Der Pfad soll gespeichert werden
            private void btSave_Click(object sender, EventArgs e) {
                String strPath = "";
                foreach (String item in this.listBoxPath.Items)
                {
                    strPath += ";" + item;
                }
                char[] trimmer = { ';' };
                strPath = strPath.Trim( trimmer );
                this.setPath(strPath);
    
                Application.Exit();
            }
            // Der Benutzer hat in der Listenansicht ein anderes Element ausgewaehlt
            private void listBoxPath_SelectedIndexChanged(object sender, EventArgs e) {
                this.updateButtonStates();
            }
            // Die GUI-Elemente
            private System.ComponentModel.IContainer components = null;
            private System.Windows.Forms.ListBox listBoxPath;
            private System.Windows.Forms.Button btAdd;
            private System.Windows.Forms.Button btRemove;
            private System.Windows.Forms.Button btUp;
            private System.Windows.Forms.Button btDown;
            private System.Windows.Forms.Button btSave;
            private System.Windows.Forms.Button btReset;
            private System.Windows.Forms.Button btClose;
            private System.Windows.Forms.GroupBox groupBoxPath;
        }
    }
    The opinions I expressed are not necessarily mine.
    traxer ist offline Geändert von traxer (18.06.2007 um 22:24 Uhr)

  10. #10 Zitieren
    Ehrengarde Avatar von TruckerB
    Registriert seit
    Dec 2004
    Ort
    Heute hier morgen dort
    Beiträge
    2.105
    Villeicht noch eine Sig-Aus Regel??? Und einen Diskussionsthread um eine bessere Übersicht zu bewahren???

    Name: Datum Umwandeln
    Sprache: PHP
    Typ: Funktion
    Version: >=PHP4
    Beschreibung:
    Ein Datum, das im Format date("Y-m-d H:i:s") oder in MySQL in DATETIME gespeichert ist wird auseinander genommen und in Zeit und Datum in "richtiger" Reienfolge wiedergegeben. In $date wird das Datum im genannten Format eingetragen. Die Funktion gibt entweder die Zeit oder das Datum zurück. Bei der Zeit habe ich die Sekunden weggelassen. Normalerweise sind sie recht unwichtig. Wer sie trotzdem anzeigen lassen will muss hinter $datumzeit[1] nur :$datumzeit[2] eintragen. Je nach eingegebenem $show Wert.
    0->Datum
    1->Zeit

    PHP-Code:
     function datum($date,$show=1) {
      
    $datum=explode(" "$date);
       
    $datumjahr=explode("-"$datum[0]);
       
    $datumzeit=explode(":"$datum[1]);
       if(
    $show==0) {
       return 
    "$datumjahr[2].$datumjahr[1].$datumjahr[0]"//Jahr
       
    } else {
       return 
    "$datumzeit[0]:$datumzeit[1]"//Zeit
       
    }
     } 
    TruckerB ist offline Geändert von TruckerB (25.06.2007 um 20:01 Uhr)

  11. #11 Zitieren
    Abenteurer
    Registriert seit
    Sep 2006
    Beiträge
    61
    Sprache: C++
    Compiler: Jeder ANSI C++ 99 Kompatible (also so ziemlich jeder)
    Bibliotheken: C++ Standardbibliothek

    Beschreibung: Diese Funktion lädt eine Datei in einen String und gibt diesen zurück.

    Code:
    #include <string>
    #include <fstream>
    #include <sstream>
    
    std::string loadFile (const std::string& filename)
    {
       std::ifstream in(filename.c_str());
       std::stringstream ss;
       ss << in.rdbuf();
       return ss.str();
    }
    atheist ist offline

  12. #12 Zitieren
    Ritter
    Registriert seit
    Dec 2005
    Beiträge
    1.806
    Sprache: Python (getestet unter 2.5)

    Beschreibung: Konvertiere einen String zu einem Tuple.
    Code:
    def str2tuple(string):
        return tuple(int(s) for s in string[1:-1].split(','))
    Es wird der Teil des Strings in den Klammern an den Kommas gesplittet und ein Tuple erzeugt.

    Ist ein recht kleiner Codeschnipsel, aber vielleicht hilft er ja trotzdem jemandem
    Akaz ist offline

  13. #13 Zitieren
    Deus Avatar von Daepilin
    Registriert seit
    Oct 2006
    Ort
    NRW
    Beiträge
    11.619
    Sprache: C++
    Compiler: MinGw( Der von DEVCPP)
    Bibliotheken: die Windows.h, und ein paar andere
    Beschreibung: es ist ein Vokabeltrainer zum üben von Vokabeln. Die fertige version, findet ihr übrigends im meinem Thread 'Kurze Frage zu C++' auf der 5. Seite.
    Kommentar zum Code: Ich weiß, dass der Code nicht so schön ist, aber ich bin grade dabei, mich etwas in die WinApi einzuarbeiten, und hab vor das ganze damit noch zu verschönern, weshalb ich den Code nicht noch groß verbessere.
    Code:
    //Vokabeltrainer
    #include <iostream>
    #include<fstream>
    #include<string>
    #include<map>
    #include<windows.h>
    #include<cstdlib>
    #include<ctime>
    #include<time.h> 
    using namespace std;
    
    int neue_erstellen()
    {
        string Pfad, Endung, Dateiname;
        Pfad = "Vokabeln/";
        Endung = ".voc";
        cout<<"\nGib bitte einen Dateinamen fuer die Vokabeldatei ein.( Ohne Pfad und Endung): ";
        cin >> Dateiname;
        Dateiname = Pfad + Dateiname + Endung;
        string tmp1, tmp2;
        multimap<string, string> eintragen;
        multimap<string, string>::iterator it;
        int auswahl;
        
        fstream voc(Dateiname.c_str(), ios::out); 
        do
        {
        cout<<"\nMoechtest du eine Vokabel hinzufuegen?\n";
        cout<<"Ja: 1\n";
        cout<<"Nein(Abbruch und Vokabeln in die Datei schreiben): 2\n";
        cout<<"Auswahl :";
        cin >> auswahl;
        switch(auswahl)
        {
            case 1:
                cout<<"\nGib die Englische Vokabel an\n(Hinweis: Anstatt Lehrzeichen bitte dieses Zeichen verwenden: _ ): ";
                cin >> tmp1;
                cout<<"\nUnd jetzt die deutsche Bedeutung\n(Hinweis: Anstatt Lehrzeichen bitte dieses Zeichen verwenden: _ ): ";
                cin >> tmp2;
                eintragen.insert(pair<string, string> (tmp1, tmp2));
                break;
            case 2:
                break;
        };
        }while(auswahl == 1);
        for(it = eintragen.begin(); it != eintragen.end(); it++)
                {
                     voc<<it->first<<" "<<it->second<<endl;
                }
    }
    
    int vorhandene_erweitern()
    {
        string Pfad, Dateiname, Endung;
        string tmp1, tmp2;
        multimap<string, string> erweitern;
        multimap<string, string>::iterator it;
        multimap<string, string>::iterator iter;
        Pfad = "Vokabeln/";
        Endung = ".voc";
        cout<<"\nGib den Dateinamen der zu erweiternden Datei ein.( Ohne Pfad und Endung): ";
        cin >> Dateiname;
        Dateiname = Pfad + Dateiname + Endung;
        ifstream voc(Dateiname.c_str());
        if(voc.fail())
        {
            cout<<"Fehler beim oeffnen";
        }
        while(!voc.eof())
        {    
            voc>>tmp1;
            voc>>tmp2;
            erweitern.insert(pair<string,string>(tmp1,tmp2));
        }
              
        voc.close();
        it = erweitern.begin();
        iter = erweitern.begin();
        iter++;
        while(iter != erweitern.end())
         {
             if(it->first == iter->first)
             {
                 if(it->second==iter->second)
                 {
                     erweitern.erase(it);
                 }
             }
           it++;
           iter++;        
         }    
        int iAuswahl;
        
        do{ 
        cout<<"\nWas moechtest du machen?\n";
        cout<<"Inhalt der Datei anzeigen: 1\n";
        cout<<"Vokabel hinzufuegen: 2\n";
        cout<<"Abbrechen und Aenderungen speichern: 3\n";
        cout<<"Auswahl: ";
        cin >> iAuswahl;
        switch(iAuswahl){
            case 1:
                cout<<"\nInhalt der Datei:\n";
                 for( it = erweitern.begin(); it !=erweitern.end(); it++)
                 {
                     cout<<it->first<<" "<<it->second<<endl;
                 }
                 break;
             case 2:
                cout<<"\nGib die Englische Vokabel an\n(Hinweis: Anstatt Lehrzeichen bitte dieses Zeichen verwenden: _ ): ";
                cin >> tmp1;
                cout<<"\nUnd jetzt die deutsche Bedeutung\n(Hinweis: Anstatt Lehrzeichen bitte dieses Zeichen verwenden: _ ): ";
                cin >> tmp2;
                erweitern.insert(pair<string, string> (tmp1, tmp2));
                 break;
             case 3:
                 ofstream voc(Dateiname.c_str());
                 for(it = erweitern.begin(); it !=erweitern.end(); it++)
                     {
                         voc<<it->first<<" "<<it->second<<endl;
                     }    
                 break;
             }
         }while(iAuswahl != 3 );                   
    }
    
    int vokabeln_abfragen()
    {
       string Pfad, Dateiname, Endung;
       Pfad = "Vokabeln/";
       Endung = ".voc";
       cout<<"\nAus welcher Datei moechtest du lernen?( ohne Pfad und Endung angeben): ";
       cin >> Dateiname;
       Dateiname= Pfad + Dateiname + Endung;
       ofstream voc(Dateiname.c_str(), ios_base::app);
       multimap<string,string> Vokabeln;
       string tmp1, tmp2;
       
       ifstream in(Dateiname.c_str(),ios::in);
       while(!in.eof())
          {
             in>>tmp1;
             in>>tmp2;
             Vokabeln.insert(pair<string,string>(tmp1,tmp2));
         }
        multimap<string, string>::iterator it; 
        multimap<string, string>::iterator iter;
        it = Vokabeln.begin();
        iter = Vokabeln.begin();
        iter++;
        while(iter != Vokabeln.end())
         {
             if(it->first == iter->first)
             {
                 if(it->second==iter->second)
                 {
                     Vokabeln.erase(it);
                 }
             }
           it++;
           iter++;        
         }
         
       while(!Vokabeln.empty()){
       srand( (unsigned)time( NULL ) );
       int iEintraege = Vokabeln.size(); 
       int zufall; 
       zufall = (rand()%iEintraege) ;
       
       getchar(); 
       it = Vokabeln.begin();
       for (int i = 0; i < zufall; ++i) ++it;
       pair<string, string>(it->first, it -> second);
       
       string tmpVokKey = it->first;
       
       cout<<" \nNenne die deutsche Bedeutung von "<<tmpVokKey<<"\n(Hinweis: Anstatt Lehrzeichen bitte dieses Zeichen verwenden: _ ): ";
       string tmpVokValue;
       cin >> tmpVokValue;
       it=Vokabeln.find(tmpVokKey);
       unsigned int count = Vokabeln.count(tmpVokKey); 
       if(it==Vokabeln.end())
           {
               cout<<"Vokabel nicht gefunden";
               getchar();
               getchar();
               return 0;
           }
           
       for(unsigned int i=0; i<count;i++,it++)
       {
           
           if (tmpVokValue == it->second)
               {
                    cout<<it->second << " ist richtig\n";
                    
                    i = count;
                    
                    Vokabeln.erase(it);
               }
           else 
               {
                    cout<<tmpVokValue<< " ist falsch.\n Richtig ist: "<<it->second;
                    
                    i = count; 
                    
                    Vokabeln.erase(it);
               }
           }    
        }
        
        getchar(); 
      } 
      
        
    
    
    
    
    int main(int argc, char *argv[])
    {
       SetConsoleTitleW (L"Vokabeltrainer");
       int AuswahlMenue;
       cout<<"Was moechtest du tun?\n";
       cout<<"Eine neue Vokabeldatei anlegen: 1\n";
       cout<<"Eine vorhandene Vokabeldatei erweitern: 2\n";
       cout<<"Vokabeln lernen: 3\n";
       cout<<"Informationen zur Software: 4\n";
       cout<<"Auswahl :";
       cin >> AuswahlMenue;
       switch(AuswahlMenue)
       {
           case 1:
               neue_erstellen();
               break;
           case 2:
               vorhandene_erweitern();
               break;
           case 3:
               vokabeln_abfragen();
               break;
           case 4:
               cout<<"\nDas Copyright zu dieser Software liegt bei Daepilin.\nVersion 1.0.0\nVom 26.06.2007";
               getchar();
               break;
       }    
       getchar();
       
       return 0;
        
    }

    Daepilin ist offline Geändert von Daepilin (06.09.2012 um 20:01 Uhr)

  14. #14 Zitieren
    Ehrengarde Avatar von TruckerB
    Registriert seit
    Dec 2004
    Ort
    Heute hier morgen dort
    Beiträge
    2.105
    Name: Besucher Counter
    Sprache: PHP, MySQL
    Version: >=PHP4
    Beschreibung: Der Folgende Code ermöglicht es eine kleine Statistik über die Besucherzahlen aufzubauen. Nach dem einbau stehen euch folgende Funktionen zur verfügung:
    user_ges() ->User Gesammt, also alle die auf der Seite waren
    user_gestern() ->User von gestern
    user_heute() ->User heute online
    user_online() ->Wieviele User sind online (aktivität der letzten 5 Minuten)


    Funktionen:
    PHP-Code:
    //User Online
     
    function user_ges() {
     
    $result=mysql_query("SELECT * FROM user_on");
     
    $count=mysql_num_rows($result);
     return 
    $count;
     }
     
     function 
    user_gestern() {
     
    $gestern date('Y-m-d'time() - 60 60 24);
     
    $result=mysql_query("SELECT * FROM user_on");
     
    $i=0;
     while(
    $row=mysql_fetch_assoc($result)) {
     
    $datum=$row['datum'];
     
    $datum=explode(" "$datum);
     if (
    $datum[0]==$gestern) {
     
    $i++;
     }

     }
     return 
    $i;
     }

     function 
    user_heute() {
     
    $gestern date('Y-m-d');
     
    $result=mysql_query("SELECT * FROM user_on");
     
    $i=0;
     while(
    $row=mysql_fetch_assoc($result)) {
     
    $datum=$row['datum'];
     
    $datum=explode(" "$datum);
     if (
    $datum[0]==$gestern) {
     
    $i++;
     }
     }
     return 
    $i;
     }
     
     function 
    user_count($id) {
     
    $action=false;
     if (
    mysql_query("INSERT INTO user_on VALUES ('$id', '$_SERVER[REMOTE_ADDR]', NOW(), NULL)")) {
     
    $action=true;
     }
     return 
    $action;
     }
     
     function 
    user_count_update() {
     
    $action=false;
     if (
    mysql_query("UPDATE user_on SET datum=NOW() WHERE id='".$_COOKIE['counted']."'")) {
     
    $action=true;
     }
     return 
    $action;
     }
     
     function 
    user_online() {
     
    $min date('Y-m-d H:i:s'time() - 60 5);
     
    $result=mysql_query("SELECT * FROM user_on WHERE datum>='".$min."'");
     
    $count=mysql_num_rows($result);
     return 
    $count;
     } 
    Folgender Code sollte bei jedem Seitenwechsel aufgerufen werden. Am besten in eine von allen Seiten benutzte datei einfügen.
    PHP-Code:
    if (!isset($_COOKIE['counted'])) {
    $id=time();
    user_count($id);
    setcookie("counted",$id$id+86400);
    } else {
    user_count_update();

    Dafür aber ein recht kurzer MySQL-Teil wobei id eigendlichschon garnicht gebraucht wird^^:
    Code:
    CREATE TABLE user_on (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    datum DATETIME
    );
    TruckerB ist offline

  15. #15 Zitieren
    Kämpfer Avatar von Tray
    Registriert seit
    Aug 2006
    Beiträge
    395
    Sprachelitz Basic
    Compiler litz basic 2d/3d

    Also ich wollte ma zeigen wie man nen simplen taschenrechner proggt

    Code:
    Graphics 640,480
    print " Zahl 1"
    Zahl1= input()
    Print "Zahl 2"
    Zahl2=input()
    Eingabe1= Zahl1 + Zahl2
    print "Wenn du + rechnen wolltes is das ergebnis "+Eingabe1
    Eingabe2=Zahl1 - Zahl2
    print"Wenn - dann "+Eingabe2
    Eingabe3= Zahl1 * Zahl2
    Print "wenn * dann "+Eingabe3
    Eingabe4=Zahl1 / Zahl2
    print "wenn : dann "+Eingabe4 
    Waitkey
    End
    Vlt. auch hilfreich aba naja viel spaß mit
    [SIGPIC][/SIGPIC]
    Tray ist offline

  16. #16 Zitieren

    Chef Zauberer
    Avatar von Sweil
    Registriert seit
    Apr 2004
    Ort
    Glasgow
    Beiträge
    8.249
    Sprache: SQL
    Datenbanken: vermutlich die meisten (getestet nur mit MySQL)

    Problem: Ziel ist es eine Reihe von Daten auszugeben, zusammen mit der Anzahl wie oft eine bestimmte Bedingung für einen Datensatz erfüllt wird. Das Problem besteht darin, dass bei eienr Abfrage mit COUNT und EQUI/INNER JOIN nur Datensätze berücksichtigt werden, die min. 1 mal die Bedingung erfüllen.

    Lösung:
    Code:
    SELECT SUM(<Bedingung>) AS <Bezeichner>, <Spalte1>, <...> FROM <Tabelle1>, <Tabelle2>, <...> GROUP BY <Spalte1>, <...>
    Erklärung: So wird jeder Datensatz ausgelesen und innerhalb von SUM die Bedingung geprüft. Zu nutzen machen wir uns hier die Tatsache, dass eine erfüllte Bedingung 1, eine nicht erfüllte Bedingung 0 zurückgibt. Zählt man alle Nullen und Einsen zusammen (mit SUM) erhält man das selbe Ergebnis, wie wenn man alle Datensetze gezählt (COUNT) hätte, nur eben auch mit Nullen.
    [Bild: TW3_Ev_04.jpg]
    »Jeder sollte einen Milgo zu Hause haben, denn er verursacht nur sehr geringe Kosten.«
    Sweil ist offline Geändert von Sweil (24.01.2010 um 12:30 Uhr)

  17. #17 Zitieren
    Waldläufer Avatar von EX to the TASY
    Registriert seit
    May 2006
    Beiträge
    166
    Sprache: Python (2.5)
    Caesar-Verschlüsselung

    Code:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    
    #Caesar-Verschluesselung in Python
    
    
    encryption = { "a":"d", "b":"e", "c":"f", "d":"g", "e":"h", "f":"i", "g":"j",
    	"h":"k", "i":"l", "j":"m", "k":"n", "l":"o", "m":"p", "n":"q",
    	"o":"r", "p":"s", "q":"t", "r":"u", "s":"v", "t":"w", "u":"x",
    	"v":"y", "w":"z", "x":"a", "y":"b", "z":"c" }
    
    
    #Zur späteren Entschluesselung des Textes wird aus "encryption" ein weiteres
    #dictonary "decryption" generiert; Keys (Schluessel) und zugehoerige Werte
    #(Values) werden einfach vertauscht.
    decryption = {}
    for a, b in encryption.iteritems():
    	decryption[b] = a
    
    
    #Die Funktion iteriert den uebergebenen String und prueft jedes Element auf
    #Vorhandensein in "encryption", ist es enthalten, so wird es durch den zuge-
    #hoerigen Wert in "encryption" ersetzt, andernfalls beibehalten. Abschließend
    #wird der verschluesselte Text ausgegeben.
    def encrypt(text):
    	encryptedtext = ""
    	for a in text.lower():
    		if encryption.has_key(a):
    			encryptedtext += encryption[a]
    		else:
    			encryptedtext += a
    	print "\nEncryption:\n",encryptedtext, "\n"
    	
    
    #s.o. nur mit "decryption".
    def decrypt(text):
    	decryptedtext = ""
    	for a in text.lower():
    		if decryption.has_key(a):
    			decryptedtext += decryption[a]
    		else:
    			decryptedtext += a
    	print "\nDecryption:\n", decryptedtext, "\n"
    
    
    #Die Hauptfunktion; sie wird aufgerufen, falls das Modul nicht von einem
    #anderen Modul importiert wird.*
    def main():
    	print "encrypt -- encrypt entered text"
    	print "decrypt -- decrypt entered text"
    	print "help    -- display help"
    	print "exit    -- exit program\n"
    	while True:
    		option = str.lower(raw_input("_:"))
    		if option == "exit":
    			break
    		elif option == "encrypt":
    			text = raw_input("Enter text:\n")
    			encrypt(text)
    		elif option == "decrypt":
    			text = raw_input("Enter text:\n")
    			decrypt(text)
    		elif option == "help":
    			print "encrypt -- encrypt entered text"
    			print "decrypt -- decrypt entered text"
    			print "help    -- display help"
    			print "exit    -- exit program\n"
    		else:
    			pass
    
    
    #*
    if __name__ == "__main__":
    	main()
    EX to the TASY ist offline Geändert von EX to the TASY (01.08.2007 um 09:39 Uhr)

  18. #18 Zitieren
    Schwertmeister Avatar von wurzel^2
    Registriert seit
    Oct 2006
    Beiträge
    908
    Php version 5

    Seite die anzeigt, welche dateien in einem Ordner sind. Es ist möglcih diese ausgaebn nach typ oder name zu sortieren. Es werden auch größe + letzte änderung angezeigt
    Eignet sich zbum es für eine Download - Seite einzusetzen


    Code:
    <html>
    <?php
        
        $dir    = 'Unterordner';    //ordner der angezeigt werden soll
        $name   = 'index.php';        //name dieser datei
    
        echo "<head><title>$dir</title></head><body>";
    
        
        $k = 0;        //Zähler
        $fin = 1;    //Ende?
        $dateien = 0;    //Anzahl Dateien
        
        $show = $_GET['show'];
    
        
        
        echo "<h1>Dateien in \"$dir\"</h1></br></br>";
        
        
        
        
        $files = scandir($dir);    // dateien aus verzeichniss lesen
        
        
        
        natcasesort($files);       // Alphabetisch sortieren
        $files = array_values($files);
        
        
        if($files == FALSE)
        {
            echo "Error 101";
            exit();
        }
        
        $fin = 1;
        $k = 2;
        
        if($show == 1)
        {
            
            // Dateiendungen sortieren
    
            $endings = array(substr($files[$k], strrpos($files[$k], ".") + 1, strlen ($files[$k]) - 1));
            
            $k++;
            
            while($k < count($files))
            {
            
                if(in_array(substr($files[$k], strrpos($files[$k], ".") + 1, strlen ($files[$k]) - 1),$endings))
                {
                    $k++;
                }
                else
                {
                    $endings[] = substr($files[$k], strrpos($files[$k], ".") + 1, strlen ($files[$k]) - 1);
                    $k++;
                }
            }
            sort($endings);
        }
        
    // TAbelle anlegen
        
        echo "<table border=\"1\" width=\"100%\">";
        echo "<colgroup><col width=\"3*\"><col width=\"1*\"><col width=\"1*\"><col width=\"2*\"></colgroup>";
        echo "<tr bgcolor=\"#C0C0C0\"><th><a href=\"$name\">Name</a></th><th>Größe</th><th><a href=\"$name?show=1\">Typ</a></th><th>Geändert am</th><tr>";
        
        $fin = 1;
        $k = 0;
        
        
        // Ausgabe der TAbelle, mit auslesen von größe + änderungsdatum
        
        
        while($fin == 1)
        {
            
            if($show == 1)
            {
                $end = 0;
                
                while($end < count($endings))
                {
                    while($k < count($files))
                    {
                        
                        if(($files[$k] != "..") AND ($files[$k] != "."))
                        {
                            
                            $file_size = filesize("$dir/$files[$k]"); 
                            $file_size = $file_size / 1024;
                            $file_size = round($file_size, 2);
    
                            $file_type = filetype("$dir/$files[$k]");
                
                            if($file_type != "dir")
                            {
                    
                                $file_type = substr($files[$k], strrpos($files[$k], ".") + 1, strlen ($files[$k]) - 1);
                        
                                if($file_type != "lnk")
                                {
                                    $file_date = date ("F d Y - H:i", filemtime("$dir/$files[$k]"));
                                    
                                    if($file_type == $endings[$end])
                                    {
                                        $dateien++;
                                        echo "<tr><th><a href=\"$dir/$files[$k]\">$files[$k]</a></th><th>$file_size KB</th><th>$file_type</th><th>$file_date</th></tr>";
                                    }
                                }
                            }
                        }
                        
                        $k++;
                    }
                    
                    $k = 0;
                    $end++;
                }
                
                $fin = 0;
            }
            else
            {
            
                if(($files[$k] != "") AND ($files[$k] != "..") AND ($files[$k] != "."))
                {
                
                
                    $file_size = filesize("$dir/$files[$k]"); 
                    $file_size = $file_size / 1024;
                    $file_size = round($file_size, 2);
    
                    $file_type = filetype("$dir/$files[$k]");
                
                    if($file_type != "dir")
                    {
                    
                        $file_type = substr($files[$k], strrpos($files[$k], ".") + 1, strlen ($files[$k]) - 1);
                        
                        if($file_type != "lnk")
                        {
                        
                        
                            $file_date = date ("F d Y - H:i", filemtime("$dir/$files[$k]"));
                    
                            echo "<tr><th><a href=\"$dir/$files[$k]\">$files[$k]</a></th><th>$file_size KB</th><th>$file_type</th><th>$file_date</th></tr>";
                            $dateien++;
                        }
                    }
                }
                elseif($files[$k] == "..")
                {
                    $k++;
                }
                elseif($files[$k] == ".")
                {
                    $k++;
                }    
                else
                {
                    $fin = 2;
                }
                    $k++;
            }
            
            
        }
            
        
        
        echo "</table></br><b>$dateien Dateie(n) gefunden.</b></br></br>";
        
        
    ?>
    </body>
    </html>
    wurzel^2 ist offline

  19. #19 Zitieren
    Nicht hilfreich  Avatar von walljumper
    Registriert seit
    Jun 2004
    Beiträge
    5.162
    Sprache: C++
    Compiler: erprobt mit dem Borland Builder 2006
    Bibliotheken: <string> , <stringstream>

    Problem: dieser Code bildet das Internationale Einheiten System in C++ ab.

    Code:
    //---------------------------------------------------------------------------
    
    #ifndef si_unitH
    #define si_unitH
    #include<string>
    #include<sstream>
    using std::string;
    using std::stringstream;
    template<int meter,int kg,int sekunden,int ampere,int kelvin> class si_unit
    {
    public:
    si_unit(double val): value(val){}
    si_unit():value(0){}
    double get()
    {
    	return value;
    }
    void set(double val)
    {
    	value = val;
    }
    
    private:
    double value;
    };
    
    template<int meter1,int kg1,int sekunden1,int ampere1,int kelvin1,int meter2,int kg2,int sekunden2,int ampere2,int kelvin2>
    si_unit<meter1+meter2,kg1+kg2,sekunden1+sekunden2,ampere1+ampere2,kelvin1+kelvin2> operator *(const si_unit<meter1,kg1,sekunden1,ampere1,kelvin1>& op1,const si_unit<meter2,kg2,sekunden2,ampere2,kelvin2>& op2)
    {
    	return si_unit<meter1+meter2,kg1+kg2,sekunden1+sekunden2,ampere1+ampere2,kelvin1+kelvin2>(op1.get()*op2.get());
    }
    template<int meter1,int kg1,int sekunden1,int ampere1,int kelvin1,int meter2,int kg2,int sekunden2,int ampere2,int kelvin2>
    si_unit<meter1-meter2,kg1-kg2,sekunden1-sekunden2,ampere1-ampere2,kelvin1-kelvin2> operator /(const si_unit<meter1,kg1,sekunden1,ampere1,kelvin1>& op1,const si_unit<meter2,kg2,sekunden2,ampere2,kelvin2>& op2)
    {
    	return si_unit<meter1-meter2,kg1-kg2,sekunden1-sekunden2,ampere1-ampere2,kelvin1-kelvin2>(op1.get()/op2.get());
    }
    template<int meter,int kg,int sekunden,int ampere,int kelvin>
    si_unit<meter,kg,sekunden,ampere,kelvin> operator +(const si_unit<meter,kg,sekunden,ampere,kelvin>& op1,const si_unit<meter,kg,sekunden,ampere,kelvin>& op2)
    {
    	return si_unit<meter,kg,sekunden,ampere,kelvin>(op1.get()+op2.get());
    }
    template<int meter,int kg,int sekunden,int ampere,int kelvin>
    si_unit<meter,kg,sekunden,ampere,kelvin> operator *(const si_unit<meter,kg,sekunden,ampere,kelvin>& op1,double op2)
    {
        return si_unit<meter,kg,sekunden,ampere,kelvin>(op1.get()*op2);
    }
    template<int meter,int kg,int sekunden,int ampere,int kelvin>
    si_unit<meter,kg,sekunden,ampere,kelvin> operator /(const si_unit<meter,kg,sekunden,ampere,kelvin>& op1,double op2)
    {
        return si_unit<meter,kg,sekunden,ampere,kelvin>(op1.get()/op2);
    }
    
    template<int meter,int kg,int sekunden,int ampere,int kelvin>
    si_unit<meter,kg,sekunden,ampere,kelvin> operator -(const si_unit<meter,kg,sekunden,ampere,kelvin>& op1,const si_unit<meter,kg,sekunden,ampere,kelvin>& op2)
    {
    	return si_unit<meter,kg,sekunden,ampere,kelvin>(op1.get()-op2.get());
    }
    template<int meter,int kg,int sekunden,int ampere,int kelvin> string get_name(si_unit<meter,kg,sekunden,ampere,kelvin> const&)
    {
     stringstream erg;
     if(meter != 0)
    	{
    	 erg<<"m^"<<meter<<" ";
    	}
     if(kg != 0)
    	{
    	 erg<<"kg^"<<kg<<" ";
    	}
     if(sekunden != 0)
    	{
    	 erg<<"s^"<<sekunden<<" ";
    	}
     if(ampere != 0)
    	{
    	 erg<<"C^"<<ampere<<" ";
    	}
     if(kelvin != 0)
    	{
    	 erg<<"K^"<<kelvin<" ";
    	}
     return erg.str();
    }
    
    
    #define SI_TYPEDEF(m, kg, s, c,k, name, name2)  \
    	typedef si_unit<m, kg, s, c,k> name;  \
    	std::string get_name(name const&){return name2;}
    
    SI_TYPEDEF(1,0,0,0,0,Laenge," m")
    SI_TYPEDEF(0,1,0,0,0,Masse," kg")
    SI_TYPEDEF(0,0,1,0,0,Zeit," s")
    SI_TYPEDEF(0,0,0,1,0,Strom," A")
    SI_TYPEDEF(0,0,0,0,1,Temperatur," K")
    SI_TYPEDEF(2,0,0,0,0,Flaeche," m^2")
    SI_TYPEDEF(3,0,0,0,0,Raum," m^3")
    SI_TYPEDEF(1,0,-1,0,0,Geschwindigkeit," m/s")
    SI_TYPEDEF(1,0,-2,0,0,Beschleunigung," m/s^2")
    SI_TYPEDEF(1,1,-2,0,0,Kraft," N")
    SI_TYPEDEF(2,1,-2,0,0,Energie," J")
    SI_TYPEDEF(2,1,-3,0,0,Leistung," W")
    SI_TYPEDEF(0,0,-1,0,0,Frequenz," Hz")
    SI_TYPEDEF(-1,1,-2,0,0,Druck," Pa")
    SI_TYPEDEF(2,1,-3,-1,0,Spannung," V")
    SI_TYPEDEF(0,0,1,1,0,Ladung," C")
    SI_TYPEDEF(2,1,-2,-1,0,mag_Fluss," Wb")
    SI_TYPEDEF(2,1,-3,-2,0,Widerstand," Ohm")
    SI_TYPEDEF(-2,-1,3,2,0,Leitwert," S")
    SI_TYPEDEF(2,1,-2,-2,0,Induktivitaet," H")
    SI_TYPEDEF(-2,-1,4,2,0,Kapazitaet," F")
    SI_TYPEDEF(0,1,-2,-1,0,Induktion," T")
    
    //---------------------------------------------------------------------------
    #endif
    durch das einbinden des Headers ist sowas möglich

    Code:
    //---------------------------------------------------------------------------
    #include<iostream>
    #pragma hdrstop
    using namespace std;
    #include"si_unit.h"
    //---------------------------------------------------------------------------
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
    
    Spannung U(12);
    Widerstand R(200);
    Strom I;
    
    I = U/R;
    
    cout<<I.get()<<get_name(I);
    
    	getchar();
    	return 0;
    }
    //---------------------------------------------------------------------------

    der Code stammt nicht zu 100% von mir, hab ihn neu gecodet

    walljumper ist offline Geändert von walljumper (02.09.2007 um 16:30 Uhr)

  20. #20 Zitieren
    Dragonslayer Avatar von Boromir
    Registriert seit
    Jan 2005
    Ort
    Kaaks
    Beiträge
    4.075
    Zufallsbild

    Sprache: PHP

    Wenn die Funktion aufgerufen wird, dann prüft sie ob die Datei "imgList.txt" vorhanden ist. Ist das der Fall, wird die Datei eingelesen, die anzahl Zeilen der Datei bestimmt und dann ein Zufallswert zwischen 0 und der Anzahl der Zeilen - 1 generiert. Mit diesem Zufallswert lässt sich ein Bild bestimmen. Hier wird dann auch noch überprüft ob das Bild existiert und dann wird das es in einem HTML gerechten Format zurückggegeben. Sprich: <img src="images.Bild01.jpg">

    Damit das Programm auch funktioniert, muss natürlich die Bilderliste (txt-Datei) und die Bilder selbst existieren.

    Ich habs selber programmiert, da ich es für eine Seite brauche
    Wenn ihr es benutzen wollt müsst ihr halt sehen ob ihr mich erwähnen wollt oder nicht ^^

    Funktion getRandomPic():
    Code:
    function getRandomPic(){
    
      if(file_exists("imgList.txt")){ 
           $file     = file('imgList.txt');
           $count    = count($file);
           $random   = rand(0,($count - 1)); 
           $img = trim($file[$random]);
      }
      
      if (file_exists($img)){ 
          return "<img src=\"". $img ."\" />";      
      }else{	  
          return "Datei nicht gefunden!";        
      }
    }
    Die Aufrufstelle:
    Code:
    $img = getRandomPic();
    echo $img;
    oder auch

    Code:
    echo getRandomPic();
    Inhalt der imgList.txt:
    Code:
    images/Bild01.jpg
    images/Bild02.jpg
    images/Bild03.jpg
    "Du bestimmst unser aller Schicksal, kleiner Mann."
    Boromir ist offline Geändert von Boromir (30.11.2010 um 11:15 Uhr)

Seite 1 von 2 12 Letzte »

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •