Skip to main content

Posts

A programming puzzle

I'd like to share a programming puzzle that I've encountered recently. The requirement was interesting and I was thinking over it. Finally, I got a way to deal with these non-conventional requirements. The requirement is something like below: 1. I need a program, which will launch another program from the command line (I mean Windows command line). I know this is not a big deal. But this requirement has two parts, which forced me to think: 1a. Once the user double clicks on the software, then a command prompt will launch and execute another program say notepad, and the command prompt will not return until the program launched (notepad) is closed by the user. 1b. If the user launches the program from an already open command prompt, then the prompt will not open another command prompt but launch another program (in this case notepad) and will not return until the launched program/process is closed. This is a relationship of parent-child. The parent is looking afte

Still in a learning process, not better than a mediocre student

I've spent a good amount of time in this Industry. Learned how to write good simple program and trying to learn more to reach to intermediate level. Journey was mix of reward and hardwork. Met people with different dimension, different skill set and lately realized I'm not only the person who wants to excel truly by learning the system more and more. Anyway in few upcomming series, I'll reveal some good approaches which I've learned so far by introspection. Will look more into the digital system and will see how it similar to our daily concepts.

Playing with WebBrowser class (C#.net)

Over the period of time C# really became a mature programming language. Compared to other standard programming language it's new but it has already offered lots to the programmer and many more new features are being added in Framework 4.0. I was exploring today, how I can work with websites like "Gmail" through my program. This is not a hack but a standard way of logging into the website, to do our work and logout. In this section, I tried to show, using the C#.net 'web browser' class, how anyone can log in to the site by providing a username/password and logging out. In this section I've not shown any other operation, I'll try to cover that in the future. Add the WebBrowser control on a WinForm Add three Buttons, one for UserName/PWD, the second button for login, and the third button for logout from Gmail. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using Sy

ASCII Magic for Upper and Lower case

We've 26 alphabets in English and using ASCII code we're representing it in the computer system. As an example, 'A' is represented as 65 in decimal, and 'a' is represented as '97' in decimal. Now check the binary counterpart of 65 and 97. 65 = 01000001 97 = 01100001 From the above binary representation, it's quite clear that the upper case letter differs from the lower case letter in binary representation, exactly in a one-bit position. The above example shows these two codes differ in the 5th bit. This is true for all 26 English alphabets and can easily be deduced to an implementation in C++ to convert any lower-case English letter to an upper-case letter. The following code demonstrates it: #define toUpper(ch) ((ch >= 'a' && ch <='z') ? ch & 0x5f : ch) int _tmain(int argc, _TCHAR* argv[]) { printf("Upper case conversion: %c\n", toUpper('b')); return 0; } *Inspired by Great Peo

Exceptions of floating point normalization

Floating point normalization has a great usage for computing anything very near to accuracy. A floating point number is consists of: Mantissa or significand. Exponent. Say, I've a number 123.75. Its a floating point number. It has integer significand, 12375 and exponent -2. So arithmatic representation is 12375 x 10 -2 . How to normalize a floating point number? - By shifting the mantissa to left until a 1 appears in most significant bits(HO). Hence, the normalized representation will be 1.2375 x 10 +2 . Most of the time for normalized number this bit is hidden as it happens to be 1. This is hidden bit. Now the question when we can't normalize a floating point number? - There are two such situations: We can't normalize zero(0). The floating point representation of Zero doesn't contain any 1 bit. However, IEEE representation for +0 and -0 has different significance. We also can't normalize a floating point number whose most significant bits in mant

MBCS/Unicode enabled C++ string class.

TCHAR, the generic text mapping data type. This is Microsoft specific extension and is not ANSI-compatible. I have used this extension to create my small prototype MBCS/Unicode compatible class. This class consists of all the basic functionality required to represent a minimal string class. I have given the name for this class as "CStringUNI". // Header File #pragma once const int INIT_ALLOC_SIZE = 10; class CStringUNI { private: TCHAR *m_szBuffer; TCHAR *AllocateMemory(size_t size); public: CStringUNI(); CStringUNI(const CStringUNI&); CStringUNI(const TCHAR*); CStringUNI& operator=(const TCHAR*); CStringUNI& operator=(const CStringUNI&); CStringUNI& operator+=(const CStringUNI&); // Access Operator TCHAR operator[](const size_t n)const; TCHAR *GetBuffer() const; bool operator==(const TCHAR*) const; bool operator==(const CStringUNI&) const; virtual ~CStringUNI(); friend CStringUNI operator+(const CStringUNI& lhs, const

Importance of 'const' in C++

Lets declare a class 'Demo' class Demo { private: char a; void TestConst(char* const pData) const { // pData = "test"; // char* const protects // pData++; // pointer! // a = 'a'; // const for function // protects data member. } }; So, when we are working with C++, all data members irrespective of access specification, can be protected with 'const', appended to the declaration/definition.