Sunday, April 6, 2014
Wednesday, April 2, 2014
Errors in programs of computer graphics related to GRAPHICS.H
Some of the Errors Startup and New Programmers face while writing Graphics programs in C or C++ :
- Messages like " Cannot open include file < graphics.h > " .
- Linker errors relating to < graphics.h > .
- Messages like : Graphics not initialized .
- Copy the file [ egavga.bgi ] from the folder BGI to BIN folder
- GoTo OPTIONS > LINKER > LIBRARIES and mark the Graphics option
- Use int gdriver , gmode = DETECT; initgraph( &gdriver, &gmode, "" ) ; before writing any graphics code ;
Labels:
c,
c++,
computer graphics,
Troubleshoot
Tuesday, April 1, 2014
Implementation of Dijkstra's Single Source Shortest Path Algorithm in C++
#include<iostream.h>
#include<limits.h>
#include<assert.h>
#define max_vertex 100
#define infinite 999999999
typedef struct Node
{
int vertex,distance;
}Node;
Node heap[1000000];
int visited[max_vertex];
int heapSize;
void Init()
{
heapSize = 0;
heap[0].distance = -INT_MAX;
heap[0].vertex = -1;
}
void Insert(Node element)
{
heapSize++;
heap[heapSize] = element;
int now = heapSize;
while(heap[now/2].distance > element.distance)
{
heap[now] = heap[now/2];
now /= 2;
}
heap[now] = element;
}
Node DeleteMin()
{
Node minElement,lastElement;
int child,now;
minElement = heap[1];
lastElement = heap[heapSize--];
for(now = 1; now*2 <= heapSize ;now = child)
{
child = now*2;
if(child != heapSize && heap[child+1].distance < heap[child].distance )
{
child++;
}
if(lastElement.distance > heap[child].distance)
{
heap[now] = heap[child];
}
else /* It fits there */
{
break;
}
}
heap[now] = lastElement;
return minElement;
}
int main()
{
int graph[max_vertex][max_vertex],size[max_vertex]={0},distance[max_vertex]={0},cost[max_vertex][max_vertex];
int vertices,edges,weight;
int iteration;
cin>>vertices>>edges;
int from,to;
for(iteration=0;iteration<edges;iteration++)
{
cin>>from>>to>>weight;
assert(from>=0 && from<vertices);
assert(to>=0 && to<vertices);
graph[from][size[from]] = to;
cost[from][size[from]] = weight;
size[from]++;
}
int source;
cin>>source;
Node temp;
for(iteration=0;iteration<vertices;iteration++)
{
if(iteration==source)
{
temp.distance = 0;
distance[0]=0;
}
else
{
temp.distance = infinite;
distance[iteration]= infinite;
}
temp.vertex = iteration;
Insert(temp);
}
while(heapSize)
{
Node min = DeleteMin();
int presentVertex = min.vertex;
if(visited[presentVertex])
{
continue;
}
visited[presentVertex] = 1;
for(iteration=0;iteration<size[presentVertex];iteration++)
{
int to = graph[presentVertex][iteration];
if(distance[to] > distance[presentVertex] + cost[presentVertex][iteration])
{
distance[to] = distance[presentVertex] + cost[presentVertex][iteration];
temp.vertex = to;
temp.distance = distance[to];
Insert(temp);
}
}
}
for(iteration=0;iteration<vertices;iteration++)
{
cout<<"vertex is "<<iteration<<" , its distance is "<<iteration,distance[iteration]<<endl;
}
return 0;
}
Labels:
algorithm,
c++,
Dynamic Programming
Subscribe to:
Comments (Atom)