求看这那错了,编译没错,但运行后显示内存不足什么的??
本帖最后由 u011223096 于 2013-10-28 15:57:34 编辑
编译没错;运行后内存
#include <stdio.h>
#include <iostream.h>
#include <iomanip.h>
#include <cstdlib>
#include <ctime>
void main()
{
int TempH=3;
int TempW=3;
int TempCX=1;
int TempCY=1;
int m_imgWidth=14;
int m_imgHeight=14;
int lineByte =14;
int tempLen=TempW*TempH;
int m_pImgData[14][14];
unsigned char* m_pImgDataOut,* pDst,* pSrc;
float value,valuen;
//申请缓冲区
m_pImgDataOut=new unsigned char[lineByte*m_imgHeight];
//生成随机的数组并显示
srand((unsigned)time(NULL));
for(int c=0;c<14;c++){
for(int d=0;d<14;d++){
m_pImgData[c][d]=rand()%255;
}
}
for(int g=0;g<14;g++){
for(int f=0;f<14;f++){
cout<<setw(5)<<m_pImgData[g][f];
}
cout<<endl;
}
//进行3*3模板处理
int i,j,k,l;
//行处理(去掉边缘几行)
for ( i = TempCY; i < m_imgHeight - TempH + TempCY + 1; i++)
{
//列处理(去掉边缘几列)
for ( j = TempCX; j < m_imgWidth - TempW + TempCX + 1; j++)
{
//模板数组
for (int k = 0; k < TempH; k++)
{
for (int l = 0; l < TempW; l++)
{
value+=m_pImgData[i-TempCY+k][j-TempCX+l];
}
}
valuen=value/9;
//局部二值化
for(int m=0;m<TempH;m++)
{
for(int n=0;n<TempW;n++)
{
pDst=m_pImgDataOut + lineByte * (m_imgHeight - 1 - i+TempCY-m) + j-TempCX+n;
if(*pSrc<valuen)
*pDst=0;
else
*pDst=255;
}
}
}
}
}
#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main() {
int a,b[11];//本来是b[10],为判断哪句越界,故意声明为b[11]
srand((unsigned int)time(NULL));//按两次F11,等黄色右箭头指向本行时,调试、新建断点、新建数据断点,地址:&b[10],字节计数:4,确定。
while (1) {//按F5,会停在下面某句,此时a的值为10,b[10]已经被修改为对应0..4之一。
b[(a=rand()%11)]=0;
Sleep(100);
b[(a=rand()%11)]=1;
Sleep(100);
b[(a=rand()%11)]=2;
Sleep(100);
b[(a=rand()%11)]=3;
Sleep(100);
b[(a=rand()%11)]=4;
Sleep(100);
}
return 0;
}
/*
以下是题目详情: 子序列的定义:对于一个序列a=a[1],a[2],......a[n],
则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列,其中1<=p1<p2<.....<pm<=n。
例如:4,14,2,3和14,1,2,3都为4,13,14,1,2,3的子序列。 对于给出序列a,有些子序列可能是相同的,
这里只算做1个,要求输出a的不同子序列的数量。 输入: 长度为n的数组1<=n<=100,数组元素0<=a[i]<=110
输出:子序列 的个数对1000000007取余数的结果(由于答案比较大,输出Mod 1000000007的结果即可)。
函数头部: C/C++: int run(cons int *a,int n); java public static int run(int [] a);
*/
/*
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <stdarg.h>
#define M 1000000007
int run(const int *a,int n)
{
long long SubArray[120] = {0};
int LastIndex[120] = {0};
int iter = 0;
for(iter = 1; iter <= n; iter++)
{
switch(LastIndex[a[iter - 1]])
{
case 0:
{
SubArray[iter] = (2 * SubArray[iter - 1] + 1) % M;
break;
}
default:
{
SubArray[iter] = (2 * SubArray[iter - 1] - SubArray[LastIndex[a[iter - 1]] - 1] + M) % M;
break;
}
}
LastIndex[a[iter - 1]] = iter;
}
return SubArray[n] % M;
}
int sum(int a,...)
{
va_list ap;
int count = 0;
va_start(ap, a);
for(int i = 0; i < a; i ++)
{
count += va_arg(ap, int);
}
va_end(ap);
return count;
}
int main(void)
{
//int a[5] = {1, 2, 2, 3 ,3};
/*int a[100] = {87,110,85,32,6,2,49,105,79,96,63,37,90,102,64,5,21,65,6,102,106,51,84,59,13,109,43,13,57,24,87,33,75,61,6,81,63,108,16,32,93,21,10,72,12,74,18,85,29,24,18,24,75,43,25,29,41,68,43,98,92,19,72,109,80,20,79,85,17,37,6,51,58,68,64,11,31,82,96,1,106,55,78,11,99,103,40,81,60,24,69,93,95,82,91,65,102,1,91,60};
printf("the result is %d\n", run(a, 100));
printf("%d", sum(7, 1,2,3,4,1,1));
getch();
return 0;
} */
/*
int main()
{
}*/
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
void main()
{
int TempH=3;
int TempW=3;
int TempCX=1;
int TempCY=1;
int m_imgWidth=14;
int m_imgHeight=14;
int lineByte =14;
int tempLen=TempW*TempH;
int m_pImgData[14][14];
unsigned char* m_pImgDataOut,* pDst,* pSrc;
float value = 0.0,valuen;
//申请缓冲区
m_pImgDataOut=new unsigned char[lineByte*m_imgHeight];
pSrc = new unsigned char (1);
pSrc[1] = '0';
//生成随机的数组并显示
srand((unsigned)time(NULL));
for(int c=0;c<14;c++){
for(int d=0;d<14;d++){
m_pImgData[c][d]=rand()%255;
}
}
for(int g=0;g<14;g++){
for(int f=0;f<14;f++){
cout<<setw(5)<<m_pImgData[g][f];
}
cout<<endl;
}
//进行3*3模板处理
int i,j,k,l = 0;
//行处理(去掉边缘几行)
for ( i = TempCY; i < m_imgHeight - TempH + TempCY + 1; i++)
{
//列处理(去掉边缘几列)
for ( j = TempCX; j < m_imgWidth - TempW + TempCX + 1; j++)
{
//模板数组
for (int k = 0; k < TempH; k++)
{
for (int l = 0; l < TempW; l++)
{
value+=m_pImgData[i-TempCY+k][j-TempCX+l];
}
}
valuen=value/9;
//局部二值化
for(int m=0;m<TempH;m++)
{
for(int n=0;n<TempW;n++)
{
pDst=m_pImgDataOut + lineByte * (m_imgHeight - 1 - i+TempCY-m) + j-TempCX+n;
if(*pSrc<valuen)
*pDst=0;
else
*pDst=255;
}
}
}
}
}