Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:总是RUNTIME ERROR,那位高手指点一下

Posted by newbie at 2005-10-05 12:54:21 on Problem 1002
In Reply To:总是RUNTIME ERROR,那位高手指点一下 Posted by:hj at 2005-10-04 20:07:16
偶的程序也是runtime error,受不了了,本地跑得好好的啊,我也贴出来,高手看看吧!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXNUM 100000
#define LENGTH 16
typedef struct _resultPair{
	char outString[LENGTH];
	int countSum;
}resultPair;



void changeForm(const char *inputString, char *outputString)
{
	unsigned short i, strWidth;
	char currentChar;
	char *tempChar=(char *)malloc(2);

	strWidth=strlen(inputString);


	for(i=0; i<strWidth; i++)
	{
		currentChar=inputString[i];
		if(strlen(outputString)==3)
			strcat(outputString, "-");
		if(currentChar>='0'&&currentChar<='9')
		{
			sprintf(tempChar, "%c", currentChar);
			strcat(outputString, tempChar );
		}

		
		else
			
		switch(currentChar)
		{
		case 'A':
		case 'B':
		case 'C':
			strcat(outputString, "2");
			break;

		case 'D':
		case 'E':
		case 'F':
			strcat(outputString, "3");
			break;

		case 'G':
		case 'H':
		case 'I':
			strcat(outputString, "4");
			break;

		case 'J':
		case 'K':
		case 'L':
			strcat(outputString, "5");
			break;

		case 'M':
		case 'N':
		case 'O':
			strcat(outputString, "6");
			break;

		case 'P':
		case 'R':
		case 'S':
			strcat(outputString, "7");
			break;

		case 'T':
		case 'U':
		case 'V':
			strcat(outputString, "8");
			break;	
			
		case 'W':
		case 'X':
		case 'Y':
			strcat(outputString, "9");
			break;
		default:
			strcat(outputString, "");
		}
			
	}	
	
}

int 
main(int argc, char **argv)
{
	unsigned char inputCount;
	char (*inputString)[MAXNUM];
	char (*standardForm)[MAXNUM];
	unsigned char *myFlag;//对于每个字符串对应一个flag,置为0表示该串还没有统计;置为1表示该串已经统计
	unsigned short i,j,k=0;
	unsigned short *resultNum;
	unsigned short *A;
	resultPair currentMin;
	char tempChar[LENGTH];
	int temp;
	resultPair *pResultPair;
	

	scanf("%d", &inputCount);

	resultNum=(unsigned short *)malloc(sizeof(unsigned short)*inputCount);
	myFlag=(unsigned char*)malloc(sizeof(unsigned char)*inputCount);
	A=(unsigned short *)malloc(sizeof(unsigned short)*inputCount);
	pResultPair=(resultPair*)malloc(sizeof(resultPair)*(inputCount/2));
	inputString = (char (*)[MAXNUM])malloc(MAXNUM*LENGTH) ;
	standardForm = (char (*)[MAXNUM])malloc(MAXNUM*LENGTH) ;


	memset(A, -1, sizeof(unsigned short)*inputCount);
	memset(resultNum, 0, sizeof(unsigned short)*inputCount);
	memset(myFlag, 0, inputCount);
	memset(standardForm, 0, MAXNUM*LENGTH);
	memset(inputString, 0, MAXNUM*LENGTH);
	
	for(i=0; i<inputCount; i++)
		scanf("%s", inputString[i]);
	

	for(i=0; i<inputCount; i++)

	{	
	//	printf("the input: %s\n", inputString[i]);
		changeForm(inputString[i], standardForm[i]);
	
	}
	
	
	for(i=0; i<inputCount; i++)
		for(j=i+1; j<inputCount; j++)
		{
			if(myFlag[i]==0)
			{
				if(strcmp(standardForm[i], standardForm[j])==0)
				{
					resultNum[i]++;
					myFlag[j]=1;
				}
			}
		}
	
	for(i=0; i<inputCount; i++)
	{
		if(myFlag[i]==0)
			continue;
		else
			break;
	}
	if(i==inputCount)
	{
		printf("No duplicates.\n");
		free(myFlag);
		free(resultNum);
		return 0;
	}
	
	for(i=0; i<inputCount; i++)	
		if(resultNum[i]!=0)
		{
			strcpy(pResultPair[k].outString, standardForm[i]);
			pResultPair[k].countSum=resultNum[i]+1;
			k++;		
		}

	for(i=0;i<k;i++)//按字典顺序输出
	{
		
		strcpy(currentMin.outString, pResultPair[i].outString);
		currentMin.countSum=pResultPair[i].countSum;
	
		for(j=i+1;j<k;j++)
			if(strcmp(pResultPair[j].outString,currentMin.outString)<0)
			{
				strcpy(tempChar, currentMin.outString);
				strcpy(currentMin.outString,pResultPair[j].outString);
				strcpy(pResultPair[j].outString, tempChar);
				temp=currentMin.countSum;
				currentMin.countSum=pResultPair[j].countSum;
				pResultPair[j].countSum=temp;
			}
		printf("%s %d\n", currentMin.outString, currentMin.countSum);
	}

		free(myFlag);
		free(resultNum);
		free(A);
		free(pResultPair);
		free(inputString);
		free(standardForm);

	return 0;
}
	

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator