Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

1

21.10.2003, 20:55

BitWriter 1.0

Hi,

ich hatte mal 15 min Langeweile und so ist ein kleines Programm entstanden ;D

Ich nenne es "BitWriter" da man einen Text eingeben muss und dieser wird dann als Binär ausgegeben.

Es ist nicht vollkommen, aber ich wollte es der Community geben und zeigen, wie einfach man mit C++ sowas hinbekommt was eigentlich zur Grundkenntnis von C++ gehören sollte :)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Datei:           main.cpp
// //////////////////////////////////////////////////////////////////////////////////
// Autor:           Patrick Ullmann                             © Xarent Interactive
// Erstellt:        21.10.03
// Änderungen:     21.10.03    (Patrick)   Datei erstellt
// //////////////////////////////////////////////////////////////////////////////////
// Beschreibung:    Hauptdatei

// I N C L U D E S //////////////////////////////////////////////////////////////////
    // Standardheader (_ohne_ *.h)
#include <iostream>
#include <sstream>

    // Wird zwar KEIN bischen von benutzt, aber für 
    // die Übungen brauchbar.
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif

// D E F I N I T I O N E N //////////////////////////////////////////////////////////
    // Deutsche Umlaute definieren
namespace UMLAUTS 
{ 
    const unsigned char AE = static_cast < unsigned char > ( 142 ); 
    const unsigned char ae = static_cast < unsigned char > ( 132 ); 
    const unsigned char OE = static_cast < unsigned char > ( 153 ); 
    const unsigned char oe = static_cast < unsigned char > ( 148 ); 
    const unsigned char UE = static_cast < unsigned char > ( 154 ); 
    const unsigned char ue = static_cast < unsigned char > ( 129 ); 
    const unsigned char ss = static_cast < unsigned char > ( 225 ); 
}

    // Bestimmte ASCII Zeichen definieren
namespace SIGNS
{
    const unsigned char SMILE1 = static_cast < unsigned char > ( 001 ); 
    const unsigned char SMILE2 = static_cast < unsigned char > ( 002 ); 
    const unsigned char BORDERLINE = static_cast < unsigned char > ( 196 ); 
}

// F U N K T I O N E N //////////////////////////////////////////////////////////////
std::string TextToBinaer(std::string Text)  
{  
    std::stringstream Buffer;
    
    for (std::string::iterator i = Text.begin(); i != Text.end(); ++i)
    {
        int a = static_cast<int>(*i);  
       
        for (int j=0; j<8; ++j)   
        {     
            if ((a%2) == 0)
                Buffer << "0";
            else
                Buffer << "1";

            a = a/2;  
        };  
        Buffer << " ";       
    };  

    return (Buffer.str());
 } 

int main (int argc, char *argv[])
{
    std::string     Word;

    std::cout << "Willkommen zum BitWriter v1.0a   von Patrick Ullmann" << std::endl;
        
    for (int i=0; i<52; ++i)
        std::cout << SIGNS::BORDERLINE;

    std::cout << std::endl << "Bitte Wort eingeben: ";
    std::cin >> Word;

    std::cout << std::endl << "Dein Text in Bin" << UMLAUTS::ae << "r:" << std::endl;
    std::cout << std::endl << TextToBinaer (Word) << std::endl; 

        // Damit sich die Console nicht so schnell
        // schließt unter Windows.
#ifdef _WIN32
    int x;
    std::cin >> x;
#endif

    return 0;
}


Er ist wie oben schon gesagt nicht vollkommen, aber wer gerne ein paar Übungsaufgaben haben will, hier bitte: ;D

- Der User sollte einen Dateinamen eingeben können und der Text aus dieser Datei eingelesen werden.
- Der Eingelesene Text soll in Binärform in eine 2. Datei gespeichert werden (Userabfragen sollen auch nicht fehlen).
- Ein bischen Farbe (OS Funktionen und Header durch #ifdef, #elseif, #else und #endif abgrenzen)
- Zum Schreiben/Lesen der Dateien nur Streams benutzen und keine einzige Funktion benutzen aus ANSI C. (Feinstes C++ halt ;D)
- Klassen/Interfaces (Ja etwas Größenwahn muss immer sein ;D)
- uvm.

Jeder kann beitragen, seine Verbesserungen posten und BitWriter immer mehr verbessern :) Nennen wir es mal ein kleines "Community Projekt" zum Lernen ;D

Ich glaube/hoffe das paar mitmachen, denn durch so ne Übung lernt man viel über C++ und vorallem für C++ Neulinge könnte diese Übung mehr Kenntnisse einbringen :)

In diesem Sinne,
Happy Coding und auf Wiedersehen :)

Anonymous

unregistriert

2

21.10.2003, 21:27

Hi,

coole Idee so ein Workshop :)

meine Änderung ist diese hier:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
int main (int argc, char *argv[])
{
    // Only for Win32 Console Application :D
#ifdef _WIN32
        // Consolen Handle abfragen
    HANDLE Handle = GetStdHandle(STD_OUTPUT_HANDLE);
   
        // Farbe setzen
    SetConsoleTextAttribute(Handle, FOREGROUND_RED  | 
                                    FOREGROUND_BLUE  |
                                    FOREGROUND_GREEN  |
                                    FOREGROUND_INTENSITY |                                  
                                    BACKGROUND_BLUE); 
#endif

    std::cout << "Willkommen zum BitWriter v1.0a   von Patrick Ullmann" << std::endl;

    // Only for Win32 Console Application :D
#ifdef _WIN32   
        // Farbe setzen
    SetConsoleTextAttribute(Handle, FOREGROUND_RED  | 
                                    FOREGROUND_BLUE  |
                                    FOREGROUND_GREEN  |
                                    FOREGROUND_INTENSITY); 
#endif

    std::string     Word;

    std::cout << std::endl << "Bitte Wort eingeben: ";
    std::cin >> Word;

    std::cout << std::endl << "Dein Text in Bin" << UMLAUTS::ae << "r:" << std::endl;
    std::cout << std::endl << TextToBinaer (Word) << std::endl; 

        // Damit sich die Console nicht so schnell
        // schließt unter Windows.
#ifdef _WIN32
    int x;
    std::cin >> x;
#endif

    return 0;
}


Ein bischen Farbe schadet nie :)

Geändert wurde:
- Farbe wurde hinzugefügt,
- Alte Linie entfernt
- Programmkopf verschönert (Weiße Schrift auf blauem Hintergrund)
- Hellerer Text

David

Frischling

Beiträge: 5

Wohnort: Graz

Beruf: Schüler

  • Private Nachricht senden

3

21.10.2003, 21:34

Find ich ne geile Idee so ein Workshop!

Ich hab leider grad keine Zeit was dran zu ändern aber werds mir demnächst anschauen und mal meine Änderungsvorschläge beitragen!

Wollt nur sagen, dass es ne echt geile Idee ist =)

mfg
[ Xarent Interactive | mail: David@Xarent.net | ICQ#: 111473489 ]

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

21.10.2003, 21:38

Guter Beitrag Deadlus :)

Jo David mach das :) Jeder darf Beitragen wer will, denn nur so wird BitWriter ein nützliches Programm :)

5

21.10.2003, 22:03

Und was bringt einem das, den Text in 1en und 0en zu haben ?

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

6

21.10.2003, 22:21

*g* ich weis sieht doof aus, erfüllt aber seinen Zweck! z.B. Wieviele wissen net, WIE man einen char in Binär umwandelt (erschreckend! ;D)

Nebenbei geht es mehr um den C++ Lernfaktor z.B. Iteratoren, Streams, Strings, Filehandling, OS Spezifische Sachen uvm. :)

Das mit 1&0 mag zwar öde sein, aber das Konzept hat auch einen Hintergedanken der sich "von anderen lernen" nennt :)

Kannst ja mal versuchen die 1 und 0 einzulesen und daraus wieder einen Char zu machen :) So einfach ist das nicht :angel:

Es geht halt ums Lernen, von anderen Lernen, einen Beitrag zu leiste, evtl. auch Teamwork entstehen zu lassen und besser die Programmiersprache C++ verstehen :)

Also 1 und 0 ist sogesehen nur nebensache :) Aber viele wissen halt net wie es geht *g*

Anonymous

unregistriert

7

21.10.2003, 22:59

hi,
versuch mal statt:

Quellcode

1
2
3
4
5
6
if ((a%2) == 0) 
  Buffer << "0"; 
else 
  Buffer << "1"; 

a = a/2;


das hier:

Quellcode

1
2
3
4
5
6
if (a & 0x01) 
  Buffer << "1"; 
else 
  Buffer << "0"; 

a >>= 1;


habe es jetzt nicht ausprobiert,
aber sollte eigentlich so funktionieren.
Laufzeittechnisch wird das jedenfalls um einiges schneller werden ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

21.10.2003, 23:15

Ist ja witzig. Genau das wollte ich auch gerade vorschlagen (mit & und <<). Es dürfte dann auch ein bisschen offensichtlicher sein, was man erreichen will.

Anonymous

unregistriert

9

21.10.2003, 23:25

Geil ey, voll sauber gemacht, Patrick, voll jut, ey. :)

Und gefallen tuts mir auch. :)

:roll:

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

21.10.2003, 23:28

Mis2Com, Du hier? :)
Welch eine Ehre!

Werbeanzeige