コード例 #1
0
ファイル: 327.c プロジェクト: treblih/oj
int main(int argc, const char *argv[])
{
#ifdef DB
	fp = fopen("input.txt", "r");
#endif
	int i;
	int ch;
	while ((ch = getchar()) != EOF) {
		/* expr end with var not operator, 
		 * add '+' to make them pairs */
		expr[0] = '+';
		expr[1] = (char)ch;
		/* start from idx 2 */
		for (i = 2; (ch = getchar()) != '\n'; i++) {
			expr[i] = (char)ch;
		}
		expr[i] = '\0';
		p = expr + 1;		/* skip to the adding '+' */
		printf("Expression: %s\n", p);
		alpha_init();
		inc_dec_2_spc();	
		p = expr;
		total = 0;
		expression();
		printf("    value = %d\n", total);
		for (i = 0; i < 26; i++) {
			if (alpha[i].used) {
				printf("    %c = %d\n", 
				       i + 0x61, 
				       alpha[i].val + alpha[i].inc_dec);
			}
		}
	}
	return 0;
}
コード例 #2
0
ファイル: strmat_alpha.c プロジェクト: cherry-wb/strmat
int get_alpha_size(int alpha)
{
  if (alpha_tables == NULL)
    if (!alpha_init(-1))
      return -1;

  if (alpha < 1 || alpha >= table_size) {
    fprintf(stderr, "Error:  The program is using an invalid alphabet.\n");
    return -1;
  }

  if (alpha_tables[alpha].init_flag == UNINITIALIZED)
    if (!alpha_init(alpha))
      return -1;

  if (alpha_tables[alpha].init_flag == UNUSED) {
    fprintf(stderr, "Error:  The program is using an invalid alphabet.\n");
    return -1;
  }

  return alpha_tables[alpha].alpha_size;
}
コード例 #3
0
ファイル: strmat_alpha.c プロジェクト: cherry-wb/strmat
char rawmapchar(int alpha, char ch)
{
  if (alpha_tables == NULL)
    if (!alpha_init(-1))
      return -1;

  if (alpha < 1 || alpha >= table_size) {
    fprintf(stderr, "Error:  The program is using an invalid alphabet.\n");
    return -1;
  }

  if (alpha_tables[alpha].init_flag == UNINITIALIZED)
    if (!alpha_init(alpha))
      return -1;

  if (alpha_tables[alpha].init_flag == UNUSED) {
    fprintf(stderr, "Error:  The program is using an invalid alphabet.\n");
    return -1;
  }

  return alpha_tables[alpha].rawmap[(int) ch];
}
コード例 #4
0
ファイル: strmat_alpha.c プロジェクト: cherry-wb/strmat
int add_alphabet(char *characters)
{
  int i, j, alpha;
  char *s;
  ALPHABET *tptr;

  if (alpha_tables == NULL)
    if (!alpha_init(-1))
      return -1;

  for (alpha=1; alpha < table_size; alpha++)
    if (alpha_tables[alpha].init_flag == UNUSED)
      break;

  if (alpha == table_size) {
    table_size += table_size;
    if ((alpha_tables = realloc(alpha_tables,
                                table_size * sizeof(ALPHABET))) == NULL) {
      fprintf(stderr, "Ran out of memory.  Cannot create new alphabet.\n");
      return -1;
    }

    for (i=alpha; i < table_size; i++)
      alpha_tables[i].init_flag = UNUSED;
  }

  tptr = &alpha_tables[alpha];
  for (i=0; i < 128; i++) {
    tptr->rawmap[i] = 0;
    tptr->map[i] = -1;
  }
  for (s=characters; *s; s++)
    tptr->rawmap[(int) *s] = *s;
  for (i=0,j=0; i < 128; i++)
    if (tptr->rawmap[i] != '\0')
      tptr->map[i] = (char) j++;

  tptr->alpha_size = j;
  tptr->init_flag = INITIALIZED;

  return alpha;
}