Posts Tagged ‘tiny c’

BD-shell 1.0.0 released

Sunday, September 14th, 2008

I'm very pleased to announce the final release of my tiny C Unix Shell. Every requirement has been satisfied. I hope I will find the time to expand it

http://bd-things.net/projects/bd-shell/

  • Share/Save/Bookmark

An example of mutual recursion using C

Tuesday, February 26th, 2008

The first lecture of DSA was already interesting for me, I learned something about "Mutual Recursion" (when two procedures call each other). The pseudo-code example was about checking if a number is either even or odd.
Given that

  • 0 is even
  • N is even if n-1 is odd
  • N is odd if n-1 is even

And the algorithm:

even
INPUT: n – a natural number.
OUTPUT: true if n is even; false otherwise 

odd(n)
  if n = 0 then return FALSE
  return even(n-1)
even(n)
  if n = 0 then return TRUE
  else return odd(n-1)

I implemented a tiny C program which uses it:

#include <stdio.h>
int main (int argc, char const *argv[])
{
        // set an integer number here
        int number = 23945;
        // if the number is odd (1 = TRUE)
        if(odd(number)==1)
                printf("%d is odd\n",number);
        else
                printf("%d is even\n",number);
        return 0;
}

// returns 0 if the given number becomes 0, so the given number is odd
// returns even(number - 1) elsewhere
int odd(int number){
        if (number==0)
                return 0;
        else
                return even(number-1);
}

// returns 0 if the given number becomes 0, so the given number is even
// returns odd(number - 1) elsewhere
int even(int number){
        if(number==0)
                return 1;
        else
                return odd(number-1);
}
 

Let's see if I can keep understanding things at DSA :D

  • Share/Save/Bookmark

Sorting array elements with C language

Saturday, February 23rd, 2008

UPDATE 17:19: it seems that the program I implemented today uses a kind of Bubble Sort algorithm, give it a try, it's quite interesting!

After 3 long days studying C, I think I've assimilated a good knowledge base for the incoming semester.
So there is a tiny C program that sorts the elements of a given integer array, using pointers:

Download the source code (well commented)

#include <stdio.h>
void sortArray(int *firstElement, int *lastElement);
void swapArrayElements(int *firstElement, int *secondElement);
void printArray(int array[], int arraySize);

void sortArray(int *firstElement, int *lastElement){
        int *currentElement = firstElement;
        while (firstElement != lastElement){
                while(currentElement != lastElement){
                        if(*currentElement < *firstElement){
                                swapArrayElements(currentElement,firstElement);
                        }
                        currentElement++;
                }
                firstElement++;
                currentElement = firstElement;
        }
}

void swapArrayElements(int *firstElement, int *secondElement){
        int tmp;
        tmp = *firstElement;
        *firstElement = *secondElement;
        *secondElement = tmp;
}

void printArray(int array[], int arraySize){
        int counter = 0;
        while(counter<arraySize){
                printf("%d\n",array[counter]);
                counter++;
        }
}

int main (int argc, char *argv[]){
        int array[] = {2929393,1,23239,-66,15,4,3,0,112,45,3,1000,19};
        int arraySize = sizeof(array)/sizeof(array[0]);
        int *firstElement = &array[0];
        int *lastElement = firstElement + arraySize;
        printf("-------------------------------------------------\n");
        printf("Elements of the array:\n");
        printf("-------------------------------------------------\n");
        printArray(array,arraySize);
        printf("-------------------------------------------------\n");
        sortArray(firstElement,lastElement);
        printf("Elements sorted:\n");
        printf("-------------------------------------------------\n");
        printArray(array,arraySize);
        printf("-------------------------------------------------\n");
}

 

A better program should ask the user to input the array elements, and a better algorithm should not scan every array element n times, where n is the number of the elements.
But I wrote it just for fun and for learning C pointers. I will learn to do better in the Data Structures and Algorithms course in the next semester ;)

  • Share/Save/Bookmark