in c
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 908
Exceptions in C 0.1.5
Exceptions in C implements powerful and customizable exceptions for the C programming language. more>>
Exceptions in C implements fully-functional nested exceptions with these constructs:
try
except
on
throw
Also, it allows to define various datatypes for exception object (default is int, can be anything from char * to struct foo *).
Compiling and running
Precodey straight forward.
admp@sols:~/excc/example$ gcc exception.c -c
admp@sols:~/excc/example$ gcc exception.o example.c -o example
admp@sols:~/excc/example$ ./example
Usage: ./example A B
admp@sols:~/excc/example$ ./example 100 2
100/2=50
Program is going to end its short life.
admp@sols:~/excc/example$ ./example 100 0
Caught up division by zero (100/0).
Program is going to end its short life.
Attributions:
Felix Ogg for inspiring me to write finally, also detailed feedbacks and ideas for documentation (diagrams too!). Though I havent completed that - for almost a year now; I am not sure I ever will.
<<lesstry
except
on
throw
Also, it allows to define various datatypes for exception object (default is int, can be anything from char * to struct foo *).
Compiling and running
Precodey straight forward.
admp@sols:~/excc/example$ gcc exception.c -c
admp@sols:~/excc/example$ gcc exception.o example.c -o example
admp@sols:~/excc/example$ ./example
Usage: ./example A B
admp@sols:~/excc/example$ ./example 100 2
100/2=50
Program is going to end its short life.
admp@sols:~/excc/example$ ./example 100 0
Caught up division by zero (100/0).
Program is going to end its short life.
Attributions:
Felix Ogg for inspiring me to write finally, also detailed feedbacks and ideas for documentation (diagrams too!). Though I havent completed that - for almost a year now; I am not sure I ever will.
Download (0.015MB)
Added: 2006-03-16 License: GPL (GNU General Public License) Price:
1318 downloads
A Sudoku Solver in C 1.11
A Sudoku Solver in C is a console-based Linux program, written in C language, that solves Su Doku puzzles using deductive logic. more>>
A Sudoku Solver in C is a console-based Linux program, written in C language, that solves Su Doku puzzles using deductive logic. It will only resort to trial-and-error and backtracking approaches upon exhausting its deductive moves.
Puzzles must be of the standard 9x9 variety using the (ASCII) characters 1 through 9 for the puzzle symbols. Puzzles should be submitted as 81 character strings which, when read left-to-right will fill a 9x9 Sudoku grid from left-to-right and top-to-bottom. In the puzzle specification, the characters 1 - 9 represent the puzzle givens or clues. Any other non-blank character represents an unsolved cell.
The puzzle solving algorithm is home grown. I did not borrow any of the usual techniques from the literature, e.g. Donald Knuths "Dancing Links." Instead I rolled my own from scratch as a personal challenge. As such, its performance can only be blamed on yours truly. Still, I feel it is quite fast. On a 333 MHz Pentium II Linux box it solves typical medium force puzzles in approximately 800 microseconds or about 1,200 puzzles per second, give or take. On an Athlon XP 3000 it solves about 6,600 puzzles per sec. (Solving time is dependent upon degree of difficulty, so YMMV.)
Description of Algorithm:
The puzzle algorithm initially assumes every unsolved cell can assume every possible value. It then uses the placement of the givens to refine the choices available to each cell. I call this the markup phase.
After markup completes, the algorithm then looks for singleton cells with values that, due to constraints imposed by the row, column, or 3x3 region, may only assume one possible value. Once these cells are assigned values, the algorithm returns to the markup phase to apply these changes to the remaining candidate solutions. The markup/singleton phases alternate until either no more changes occur, or the puzzle is solved. I call the markup/singleton elimination loop the Simple Solver because in a large percentage of cases it solves the puzzle.
If the simple solver portion of the algorithm doesnt produce a solution, then more advanced deductive rules are applied.
Ive implemented two additional rules as part of the deductive puzzle solver. The first is subset elimination wherein a row/column/region is scanned for X number of cells with X number of matching candidate solutions. If such subsets (or tuples) are found in the row, column, or region, then the candidates values from the subset may be eliminated from all other unsolved cells within the row, column, or region, respectively.
The next deductive rule examines each region looking for candidate values that exclusively align themselves along a single row or column, i.e. a vector. If such candidate values are found, then they may be eliminated from the cells outside of the region that are part of the aligned row or column.
Note that each of the advanced deductive rules calls all preceeding rules, in order, if that advanced rule has effected a change in puzzle markup.
Finally, if no solution is found after iteratively applying all deductive rules, then we begin trial-and-error using recursion for backtracking. A working copy is created from our puzzle, and using this copy the first cell with the smallest number of candidate solutions is chosen. One of the solutions values is assigned to that cell, and the solver algorithm is called using this working copy as its starting point. Eventually, either a solution, or an impasse is reached.
If we reach an impasse, the recursion unwinds and the next trial solution is attempted. If a solution is found (at any point) the values for the solution are added to a list. Again, so long as we are examining all possibilities, the recursion unwinds so that the next trial may be attempted. It is in this manner that we enumerate puzzles with multiple solutions.
Note that it is certainly possible to add to the list of applied deductive rules. The techniques known as "X-Wing" and "Swordfish" come to mind. On the other hand, adding these additional rules will, in all likelihood, slow the solver down by adding to the computational burden while producing very few results. Ive seen the law of diminishing returns even in some of the existing rules, e.g. in subset elimination I only look at two and three valued subsets because taking it any further than that degraded performance.
Enhancements:
- Code optimization has resulted in a 30% increase in speed.
<<lessPuzzles must be of the standard 9x9 variety using the (ASCII) characters 1 through 9 for the puzzle symbols. Puzzles should be submitted as 81 character strings which, when read left-to-right will fill a 9x9 Sudoku grid from left-to-right and top-to-bottom. In the puzzle specification, the characters 1 - 9 represent the puzzle givens or clues. Any other non-blank character represents an unsolved cell.
The puzzle solving algorithm is home grown. I did not borrow any of the usual techniques from the literature, e.g. Donald Knuths "Dancing Links." Instead I rolled my own from scratch as a personal challenge. As such, its performance can only be blamed on yours truly. Still, I feel it is quite fast. On a 333 MHz Pentium II Linux box it solves typical medium force puzzles in approximately 800 microseconds or about 1,200 puzzles per second, give or take. On an Athlon XP 3000 it solves about 6,600 puzzles per sec. (Solving time is dependent upon degree of difficulty, so YMMV.)
Description of Algorithm:
The puzzle algorithm initially assumes every unsolved cell can assume every possible value. It then uses the placement of the givens to refine the choices available to each cell. I call this the markup phase.
After markup completes, the algorithm then looks for singleton cells with values that, due to constraints imposed by the row, column, or 3x3 region, may only assume one possible value. Once these cells are assigned values, the algorithm returns to the markup phase to apply these changes to the remaining candidate solutions. The markup/singleton phases alternate until either no more changes occur, or the puzzle is solved. I call the markup/singleton elimination loop the Simple Solver because in a large percentage of cases it solves the puzzle.
If the simple solver portion of the algorithm doesnt produce a solution, then more advanced deductive rules are applied.
Ive implemented two additional rules as part of the deductive puzzle solver. The first is subset elimination wherein a row/column/region is scanned for X number of cells with X number of matching candidate solutions. If such subsets (or tuples) are found in the row, column, or region, then the candidates values from the subset may be eliminated from all other unsolved cells within the row, column, or region, respectively.
The next deductive rule examines each region looking for candidate values that exclusively align themselves along a single row or column, i.e. a vector. If such candidate values are found, then they may be eliminated from the cells outside of the region that are part of the aligned row or column.
Note that each of the advanced deductive rules calls all preceeding rules, in order, if that advanced rule has effected a change in puzzle markup.
Finally, if no solution is found after iteratively applying all deductive rules, then we begin trial-and-error using recursion for backtracking. A working copy is created from our puzzle, and using this copy the first cell with the smallest number of candidate solutions is chosen. One of the solutions values is assigned to that cell, and the solver algorithm is called using this working copy as its starting point. Eventually, either a solution, or an impasse is reached.
If we reach an impasse, the recursion unwinds and the next trial solution is attempted. If a solution is found (at any point) the values for the solution are added to a list. Again, so long as we are examining all possibilities, the recursion unwinds so that the next trial may be attempted. It is in this manner that we enumerate puzzles with multiple solutions.
Note that it is certainly possible to add to the list of applied deductive rules. The techniques known as "X-Wing" and "Swordfish" come to mind. On the other hand, adding these additional rules will, in all likelihood, slow the solver down by adding to the computational burden while producing very few results. Ive seen the law of diminishing returns even in some of the existing rules, e.g. in subset elimination I only look at two and three valued subsets because taking it any further than that degraded performance.
Enhancements:
- Code optimization has resulted in a 30% increase in speed.
Download (0.025MB)
Added: 2006-03-27 License: GPL (GNU General Public License) Price:
1332 downloads
C/Invoke 1.0
C/Invoke is a library for connecting to C libraries at runtime. more>>
C/Invoke is a library for connecting to C libraries at runtime. This differs from the typical method of interfacing with C, which involves writing static definitions which are then compiled to a machine-dependant format. C/Invoke provides a runtime facility to build descriptions of C functions and to call them, passing them appropriate data and retrieving results.
C/Invoke provides a central repository of code to handle the platform-dependant details of marshaling C parameters and return values. Currently C/Invoke has been ported to GCC (GNU/Linux, *BSD) on the x86 and amd64 architectures, Microsoft Windows on x86, and Mac OS X on PowerPC. The development team is interested in adding more ports as they gain access to more diverse hardware.
Audience
The main audience of C/Invoke are users of high-level programming languages who wish to interface with C. At the moment, most languages can be extended with C libraries only by authoring modules in C using language-specific APIs. There are many problems with this approach; writing extension modules requires knowledge of the C language instead of the language the application is being written in, the APIs needed to implement the modules are often involved and complex, and the resulting libraries must be built and maintained on many different platforms.
However, once C/Invoke is integrated into a language, the situation changes dramatically; users of Lua (for example) can interface to C by writing Lua code alone. This means that the advantages of Lua (or other high-level languages) such as portability and ease of use can be combined with the low-level power of C. To call a C function, one merely declares a C prototype in the high-level code, similar to the P/Invoke functionality of Microsofts .NET Framework. A subroutine is then created in the high-level environment which hooks into a proxy generated to correctly call the given C function.
There are two ways to integrate C/Invoke into a language. One is to use the existing extension module interface of the language in the normal manner. This is the preferred method to integrate with a language which is already established and which would be hard to modify, such as Perl, Python, Ruby, Tcl, etc. The other way would be to link C/Invoke directly into the language runtime and make the declarative C services part of the syntax of the language.
The C/Invoke developers are always looking for volunteers to integrate with an existing language, or programming language authors who are interested in using C/Invoke directly.
Enhancements:
- Support for the SPARC architecure was added, and many bugs were fixed in the Lua language binding.
<<lessC/Invoke provides a central repository of code to handle the platform-dependant details of marshaling C parameters and return values. Currently C/Invoke has been ported to GCC (GNU/Linux, *BSD) on the x86 and amd64 architectures, Microsoft Windows on x86, and Mac OS X on PowerPC. The development team is interested in adding more ports as they gain access to more diverse hardware.
Audience
The main audience of C/Invoke are users of high-level programming languages who wish to interface with C. At the moment, most languages can be extended with C libraries only by authoring modules in C using language-specific APIs. There are many problems with this approach; writing extension modules requires knowledge of the C language instead of the language the application is being written in, the APIs needed to implement the modules are often involved and complex, and the resulting libraries must be built and maintained on many different platforms.
However, once C/Invoke is integrated into a language, the situation changes dramatically; users of Lua (for example) can interface to C by writing Lua code alone. This means that the advantages of Lua (or other high-level languages) such as portability and ease of use can be combined with the low-level power of C. To call a C function, one merely declares a C prototype in the high-level code, similar to the P/Invoke functionality of Microsofts .NET Framework. A subroutine is then created in the high-level environment which hooks into a proxy generated to correctly call the given C function.
There are two ways to integrate C/Invoke into a language. One is to use the existing extension module interface of the language in the normal manner. This is the preferred method to integrate with a language which is already established and which would be hard to modify, such as Perl, Python, Ruby, Tcl, etc. The other way would be to link C/Invoke directly into the language runtime and make the declarative C services part of the syntax of the language.
The C/Invoke developers are always looking for volunteers to integrate with an existing language, or programming language authors who are interested in using C/Invoke directly.
Enhancements:
- Support for the SPARC architecure was added, and many bugs were fixed in the Lua language binding.
Download (0.070MB)
Added: 2007-01-22 License: GPL (GNU General Public License) Price:
1007 downloads
Linkage 0.1.4
Linkage is a Gtk+ BitTorrent client written in C++. more>>
Linkage is a Gtk+ BitTorrent client written in C++.
Linkage is a BitTorrent using gtkmm and libtorrent. Features include DHT, PEX, UPnP, desktop notifications and torrent creation.
<<lessLinkage is a BitTorrent using gtkmm and libtorrent. Features include DHT, PEX, UPnP, desktop notifications and torrent creation.
Download (0.53MB)
Added: 2007-08-20 License: GPL (GNU General Public License) Price:
799 downloads
AspeCt-oriented C 0.7
AspeCt-oriented C implements an aspect-oriented extension to C. more>>
AspeCt-oriented C project implements an aspect-oriented extension to C and offers one possible language design for an aspect-oriented C language.
Main features:
- an aspect-oriented extension to C, aspect-oriented software development for C, and an ACC language design option
- full ANSI-C compliance and gcc source-compatibility;
- compiler and generated code portability;
- seamless Linux, Solaris and Windows support;
- simple integration in existing builds and code transparency through source-to-source transformations;
- an open source license and compiler.
AspeCt-oriented C enables:
- modularization of crosscutting concerns for C-based software;
- research on concern separation tailored to C and imperative programming;
- research on aspect-orientation on C-based systems;
- development of highly customizable and easily configurable software in C;
- development of feature-rich software product lines in C.
Enhancements:
- set()/get() join point and pointcut support was added for global variables, and compiler options were added for manipulating join points.
<<lessMain features:
- an aspect-oriented extension to C, aspect-oriented software development for C, and an ACC language design option
- full ANSI-C compliance and gcc source-compatibility;
- compiler and generated code portability;
- seamless Linux, Solaris and Windows support;
- simple integration in existing builds and code transparency through source-to-source transformations;
- an open source license and compiler.
AspeCt-oriented C enables:
- modularization of crosscutting concerns for C-based software;
- research on concern separation tailored to C and imperative programming;
- research on aspect-orientation on C-based systems;
- development of highly customizable and easily configurable software in C;
- development of feature-rich software product lines in C.
Enhancements:
- set()/get() join point and pointcut support was added for global variables, and compiler options were added for manipulating join points.
Download (19.7MB)
Added: 2007-08-07 License: GPL (GNU General Public License) Price:
810 downloads
Iris 0.80
Iris is a video conversion utility in C++ that works as a front-end to mencoder. more>>
Iris is a video conversion utility in C++ that works as a front-end to mencoder. Iris can run in command-line or graphical modes and currently supports conversion to DVD MPEG, VCD MPEG, and DivX AVI.
ToDo:
- Cancel button does not always work
- More output formats
- Reset values for command-line format paramater
- re-work stderr redirection
- catch and identify mencoder conditions
<<lessToDo:
- Cancel button does not always work
- More output formats
- Reset values for command-line format paramater
- re-work stderr redirection
- catch and identify mencoder conditions
Download (0.11MB)
Added: 2006-07-05 License: BSD License Price:
1216 downloads
Inline::CPP 0.25
Inline::CPP is a Perl module that can write Perl subroutines and classes in C++. more>>
Inline::CPP is a Perl module that can write Perl subroutines and classes in C++.
SYNOPSIS
use Inline CPP;
print "9 + 16 = ", add(9, 16), "n";
print "9 - 16 = ", subtract(9, 16), "n";
__END__
__CPP__
int add(int x, int y) {
return x + y;
}
int subtract(int x, int y) {
return x - y;
}
The Inline::CPP module allows you to put C++ source code directly "inline" in a Perl script or module. You code classes or functions in C++, and you can use them as if they were written in Perl.
<<lessSYNOPSIS
use Inline CPP;
print "9 + 16 = ", add(9, 16), "n";
print "9 - 16 = ", subtract(9, 16), "n";
__END__
__CPP__
int add(int x, int y) {
return x + y;
}
int subtract(int x, int y) {
return x - y;
}
The Inline::CPP module allows you to put C++ source code directly "inline" in a Perl script or module. You code classes or functions in C++, and you can use them as if they were written in Perl.
Download (0.024MB)
Added: 2006-07-06 License: Perl Artistic License Price:
1205 downloads
inotify-cxx 0.7.2
inotify-cxx program is the inotify C++ interface. more>>
inotify-cxx program is the inotify C++ interface. It is designed for easy use of the Linux inotify technology in C++ applications.
You need not to deal with file descriptors and such uncomfortable things. Instead you can use a few simple C++ classes.
<<lessYou need not to deal with file descriptors and such uncomfortable things. Instead you can use a few simple C++ classes.
Download (0.066MB)
Added: 2007-04-19 License: MIT/X Consortium License Price:
920 downloads
SimBar 1.0
SimBar project is a fast and customizable dockbar for Linux. more>>
SimBar project is a fast and customizable dockbar for Linux.
SimBar is a fast and customizable dockbar. Allows the user to launch applications showing some eye-candy animation. It is written in c++ and wxWidgets and fits well in Gnome but works on most desktop environments. Does not require Compiz nor 3D acceleration.
<<lessSimBar is a fast and customizable dockbar. Allows the user to launch applications showing some eye-candy animation. It is written in c++ and wxWidgets and fits well in Gnome but works on most desktop environments. Does not require Compiz nor 3D acceleration.
Download (0.24MB)
Added: 2007-06-15 License: GPL (GNU General Public License) Price:
866 downloads
SimDock 1.2
SimDock project is a fast and fully configurable dock bar for Linux. more>>
SimDock project is a fast and fully configurable dock bar for Linux. It is written in C++ and wxWidgets, and does not require 3D acceleration to run.
<<less Download (0.12MB)
Added: 2007-07-08 License: GPL (GNU General Public License) Price:
859 downloads
Drome Engine 0.3.3
Drome Engine is a 3D game engine thats written in C++ and uses OpenGL for graphics rendering. more>>
Drome Engine is a 3D game engine thats written in C++ and uses OpenGL for graphics rendering. Its currently under constant development; the main focus at this time is to improve and stabilize the application programming interface (API).
<<less Download (0.43MB)
Added: 2005-09-22 License: GPL (GNU General Public License) Price:
1497 downloads
SimPat 0.20
SimPat - Simple Patricia trie a.k.a. crit-bit tree routines (written in C) to map bit-strings to values. more>>
SimPat - Simple Patricia trie a.k.a. crit-bit tree routines (written in C) to map bit-strings to values. PATRICIA is a funky acronym for ``Practical Algorithm to Retrieve Information Coded In Alphanumeric.
The project is license under Mozilla Public License 1.1 (MPL) license.
<<lessThe project is license under Mozilla Public License 1.1 (MPL) license.
Download (0.041MB)
Added: 2007-07-04 License: MPL (Mozilla Public License) Price:
847 downloads
Enter 0.0.9
Enter aims at beign lightweight, yet highly configurable login manager for X. more>>
Enter aims at beign lightweight, yet highly configurable login manager for X. Supporting many different desktop setups. It is written in C with minimal dependencies, making it an excellent choice when using other lightweight window managers, such as fluxbox.
<<less Download (MB)
Added: 2007-03-27 License: GPL (GNU General Public License) Price:
941 downloads
GANDI 0.5.3
GANDI (Gathering of Additional Ncurses Development Implements) is a collection of widgets written in C for ncurses. more>>
GANDI (Gathering of Additional Ncurses Development Implements) is a collection of widgets written in C for ncurses.
GANDI is designed to ease writing new ncurses software with a user-friendly interface. GANDI is a library for developers and not an application for end-users.
Enhancements:
- The configure script was completely rewritten using autotools/libtool.
- Some bugfixes were made.
<<lessGANDI is designed to ease writing new ncurses software with a user-friendly interface. GANDI is a library for developers and not an application for end-users.
Enhancements:
- The configure script was completely rewritten using autotools/libtool.
- Some bugfixes were made.
Download (0.091MB)
Added: 2006-02-27 License: LGPL (GNU Lesser General Public License) Price:
1335 downloads
Epiphany Game 0.6.1
Epiphany project is a multiplatform clone of the game Boulderdash. more>>
Epiphany project is a multiplatform clone of the game Boulderdash.
It is written entirely in C++, using Clanlib as its graphic library.
The player must collect all valuable minerals scattered in levels, while avoiding being hit by a falling boulder or a bomb.
<<lessIt is written entirely in C++, using Clanlib as its graphic library.
The player must collect all valuable minerals scattered in levels, while avoiding being hit by a falling boulder or a bomb.
Download (1.4MB)
Added: 2007-06-22 License: GPL (GNU General Public License) Price:
856 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above in c search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed