An astonoshing problem...

B

biplab

Sorry to bother again u people with the same code.....but another
astonishing problem arising....please help me....
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <mem.h>
#include <string.h>
#include <conio.h>
#include <fcntl.h>
#include <io.h>
#include <math.h>

unsigned char r[360],mini,mode;
unsigned char rgb[256][3],rgb2[256][3],**rgb1,t;
char *fullname;
char *fname;
int hist[256],tmp=0,sum=0;
unsigned int screen_width=320;
unsigned int first_row=0,first_column=0,last_row=0,last_column=0;
int handle,i,j,rem,color_bits;
long int
file_size,data_offset,size_info_header,width,height,compression,

image_size,xpelspermeter,ypelspermeter,colorsused,k,colorsimpt,p,index,max,min,**sum_hist;
float theta,temp;
void drawdot(int x, int y, int pal_index){
_AX=pal_index;
_CX=x;
_DX=y;
_AH=0x0c;
_BH=0x00;
geninterrupt(0x10);
}

void main(){

gets(fname);
strcpy(fullname,fname);strcat(fullname,".bmp");
handle=_open(fullname,O_RDONLY);if (handle==-1) exit(EXIT_FAILURE);
_read(handle,r,2);if (r[0] !='B' | r[1] !='M') exit(EXIT_FAILURE);
_read(handle,r,
4);file_size=r[0]+0x100*r[1]+0x10000*r[2]+0x1000000*r[3];
_read(handle,r,2);_read(handle,r,2);
_read(handle,r,
4);data_offset=r[0]+256*r[1]+65536*r[2]+0x1000000*r[3];
_read(handle,r,
4);size_info_header=r[0]+256*r[1]+65536*r[2]+0x1000000*r[3];
if (size_info_header !=40) exit(EXIT_FAILURE);
_read(handle,r,4);width=r[0]+0x100*r[1]+0x10000*r[2]+0x1000000*r[3];
if (width > screen_width) exit(0);
_read(handle,r,4);height=r[0]+0x100*r[1]+0x10000*r[2]+0x1000000*r[3];
_read(handle,r,2);if (r[0] != 1) exit(EXIT_FAILURE);
_read(handle,r,2);
color_bits=r[0];
_read(handle,r,4);
compression=r[0]+0x100*r[1]+0x10000*r[2]+0x1000000*r[3];
_read(handle,r,4);
image_size=r[0]+256*r[1]+256*256*r[2]+256*256*256*r[3];
_read(handle,r,4);
xpelspermeter=r[0]+0x100*r[1]+0x10000*r[2]+0x1000000*r[3];
_read(handle,r,4);
ypelspermeter=r[0]+0x100*r[1]+0x10000*r[2]+0x1000000*r[3];
_read(handle,r,4);
colorsused=r[0]+0x100*r[1]+0x10000*r[2]+0x1000000*r[3];
_read(handle,r,4);
colorsimpt=r[0]+0x100*r[1]+0x10000*r[2]+0x1000000*r[3];

_AX=0x1201;_BL=0x33;geninterrupt(0x10);//don't add RGB
_AX=0x0013;geninterrupt(0x10);//set mode 13 i.e. 320x200x256

for (i=0;i<256;i++) {
_read(handle,r,4);
rgb[0]=r[2]>>2;rgb[1]=r[1]>>2;rgb[2]=r[0]>>2;
}
rgb1=calloc(height,sizeof(char*));
for(i=0;i<height;i++)
rgb1=calloc(width,sizeof(char));
for (i=0;i<256;i++) {
rgb2[0]=i;rgb2[1]=i;rgb2[2]=i;
}
_ES=FP_SEG(rgb2);_DX=FP_OFF(rgb2);
_BX=0;_CX=0x100; _AX=0x1012;
geninterrupt(0x10);//set DAC from rgb
first_column=(screen_width-width)/2;
last_row=first_row+height-1;last_column=first_column+width-1;
rem=4 - (width % 4);
for (i=0;i<=height-1;i++) {
_read(handle,r,width);

for (j=0;j<=width-1;j++)
{
//drawdot(first_column+j,last_row-i,r[j]);
rgb1[j]=(rgb2[r[j]][0]+rgb2[r[j]][1]+rgb2[r[j]][2])/3;
//printf("%d\n",rgb1[j]);.................................(a)
//delay(100);
}
if (rem==1) _read(handle,r,1);
else if (rem==2) _read(handle,r,2);
else if (rem==3) _read(handle,r,3);//getch();
}

for(i=0;i<256;i++)
{
hist=0;
}
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
k=(long int)rgb1[j];
hist[k]=hist[k]+1;
}
}

for(i=0;i<256;i++)
{
if(hist!=0)
tmp++;
else continue;
}

sum_hist=(long int **)calloc(tmp,sizeof(long int*));
for(i=0;i<tmp;i++)
sum_hist=(long int *)calloc(2,sizeof(long int));

for(i=0;i<256;i++)
{
if(hist!=0)
{
sum_hist[sum][0]=(long int)i;
sum_hist[sum][1]=(long int)hist;
sum++;
}
else continue;
}


for(i=1;i<tmp;i++)
sum_hist[1]+=sum_hist[i-1][1];


min=sum_hist[0][1];
max=sum_hist[0][1];
for(i=1;i<tmp;i++)
{
if(min>sum_hist[1])
min=sum_hist[1];
else continue;
}
for(i=1;i<tmp;i++)
{
if(max<sum_hist[1])
max=sum_hist[1];
else continue;
}

p=((height*width)-min);

for(i=0;i<height;i++)............................(b)
{
for(j=0;width;j++)
{
printf("%d\n",rgb1[j]);
delay(100);
}
}
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
t=rgb1[j];
//printf("%d\n",t);
//delay(100);
for(i=0;i<tmp;i++)
{
if(sum_hist[0]==t)
index=sum_hist[1];
}
index=index-min;
rgb1[j]=abs(index*255/p);
//printf("%d %d\n",t,rgb1[j]);
//delay(100);
}
}
/*for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
drawdot(first_column+j,last_row-i,rgb1[j]);
}*/

_close(handle);
getch();
_AX=0x1201;_BL=0x33;geninterrupt(0x10);//don't add RGB
_AX=0x0003;geninterrupt(0x10);//set mode 3 i.e. 16-color text

}
Here, when I am assigning values in any matrix and printing the values
within the same block..it is giving the correct result...but if I try
to print the values separately in another block...some garbage values
are getting printed....say forr rgb1[][]....it is giving correct
values in ..(a)..bt some garbage values are there in .........
(b).......and no code beyond
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
t=rgb1[j];
//printf("%d\n",t);
//delay(100);
for(i=0;i<tmp;i++)
{
if(sum_hist[0]==t)
index=sum_hist[1];
}
index=index-min;
rgb1[j]=abs(index*255/p);
//printf("%d %d\n",t,rgb1[j]);
//delay(100);
}
}
is running.......
plz clarify once as from the previous discussion....I somehow not
getting a clear view of solutions of my problems...plz sort it out
once again...
thanking you..
 
I

Ian Collins

biplab said:
Sorry to bother again u people with the same code.....but

Who's "u people"?

Why don't you fix what you've been told to fix, or are you just an
ineffective troll?
 
B

biplab

Who's "u people"?

Why don't you fix what you've been told to fix, or are you just an
ineffective troll?

U people means the experts here...And I am new to C.....therefore
finding these tips a bit tough...plz help me out....
 
I

Ian Collins

biplab said:
U people means the experts here...And I am new to C.....therefore
finding these tips a bit tough...plz help me out....

Tip 1 - don't post in txt baby speak.
Tip 2 - don't quote signatures.
Tip 3 - go back to your original post and ask about the corrections that
were offered.
 
B

Barry Schwarz

U people means the experts here...And I am new to C.....therefore
finding these tips a bit tough...plz help me out....

Being new to C is no excuse for posting the same code repeatedly under
different subjects and ignoring the corrections you have already
received. If you want help, play nice. If not, many will choose to
ignore you.
 
K

Keith Thompson

biplab said:
U people means the experts here...And I am new to C.....therefore
finding these tips a bit tough...plz help me out....

We're trying to help. If you continue to post the same code while
ignoring the good advice you're given, we *can't* help.
 
A

August Karlstrom

biplab said:
Sorry to bother again u people with the same code.....but another
astonishing problem arising....please help me....
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
[...]

My advice is to first break up the code into separate functions, where
each function has a clearly defined purpose, and then test each function
independently.

The article "Program Development by Stepwise Refinement" by Niklaus
Wirth might also be of interest:

http://sunnyday.mit.edu/16.355/wirth-refinement.html


August
 
J

James Kuyper

biplab said:
U people means the experts here...And I am new to C.....therefore
finding these tips a bit tough...plz help me out....

People have tried to give you help, giving you tips about things that
need to be fixed. If you really want help, why are you ignoring the help
you've already received?
 
C

CBFalconer

biplab said:
Sorry to bother again u people with the same code.....but another
astonishing problem arising....please help me....

Why? You paid no attention to the earlier help given.
 
T

Thomas Austad

biplab said:
for(i=0;i<height;i++)............................(b)
{
for(j=0;width;j++)
{
printf("%d\n",rgb1[j]);
delay(100);
}
} ....
Here, when I am assigning values in any matrix and printing the values
within the same block..it is giving the correct result...but if I try
to print the values separately in another block...some garbage values
are getting printed....say forr rgb1[][]....it is giving correct
values in ..(a)..bt some garbage values are there in .........
(b).......and no code beyond


I guess that the inner loop in (b) is printing a __lot__ more than it
really should *cough* infinite loop *cough* :)

But you should seriously listen to what the people in this news group
are trying to tell you!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,954
Messages
2,570,116
Members
46,704
Latest member
BernadineF

Latest Threads

Top