Beispiel #1
0
Datei: ex13.c Projekt: saisai/c-2
int main(int argc, char *argv[]) {
  if (argc < 2) {
    printf("ERROR: You need at least one argument.\n");
    return 1;
  }

  int i = 0;
  int j = 0;
  char letter;
  char original_letter;

  for (j = 1; j < argc; j++) {
  
    for (i = 0; argv[j][i] != '\0'; i++) {
      letter = original_letter = argv[j][i];
      if (is_uppercase(letter)) letter += CASE_OFFSET;  
      
      switch(letter) {
        case 'a':
          printf("%d: %c\n", i, original_letter);
          break;

        case 'e':
          printf("%d: %c\n", i, original_letter);
          break;

        case 'i':
          printf("%d: %c\n", i, original_letter);
          break;

        case 'o':
          printf("%d: %c\n", i, original_letter);
          break;

        case 'u':
          printf("%d: %c\n", i, original_letter);
          break;

        case 'y':
          if (i > 2) {
            printf("%d: %c\n", i, original_letter);
          }
          break;

        default:
          printf("%d: %c is not a vowel\n", i, letter);
      }
    }
  }

  return 0;
}
Beispiel #2
0
int		ft_str_is_uppercase(char *str)
{
	int i;

	i = 0;
	while (str[i] != '\0')
	{
		if (!(is_uppercase(str[i])))
			return (0);
		i++;
	}
	return (1);
}
Beispiel #3
0
void CGraphmatFile :: InitNonContextDescriptors (CGraLine& L)
{
	bool	fl_ra=false,  /* rus alpha */
		fl_la=false,  /* lat alpha */
		fl_lw=false,  /* lower alpha */
		fl_up=false,  /* upper alpha */
		fl_decimal_number=false;   

	size_t TokenLength = L.GetTokenLength();
	const char* Token = L.GetToken();
	BYTE first_char = (BYTE)Token[0];


	if  (L.IsSpace())
	{
		L.SetDes (ODel);
		L.SetDes (OSpc);
		return;
	}

	if  (L.IsEOLN())
	{
		L.SetDes (ODel);
		L.SetDes (OEOLN);
		return;
	}

	if  (L.IsIdent())
	{
		L.SetDes (ODgCh);
		return;
	}



	if  (L.IsNotPrint())
	{
		L.SetDes ( ODel);
		if (L.IsParagraphChar ())
			L.SetDes (OParagraph);
		else
			L.SetDes (ONil);

		return;
	}

	

	if (L.IsPunct()) 
	{

		L.SetDes (OPun);

		int BracketClassNo = isbracket(first_char);

		if (BracketClassNo)
			L.SetDes( (BracketClassNo == 1) ? OOpn : OCls);
		else
			if (first_char==cHyphenChar) 
				L.SetDes(OHyp);


		if ( TokenLength > 1 ) 
			L.SetDes(OPlu);

		return;
	}

	for (int i=0; i<TokenLength; i++)
	{
		if ((BYTE)Token[i] == 39) continue;
		if (m_Language == morphRussian)
		{
			if (is_russian_alpha((BYTE)Token[i]))
				fl_ra = true;
			else
				if (is_latin_alpha((BYTE)Token[i]))
					fl_la = true;
		}
		else
			fl_la = fl_la || is_latin_alpha((BYTE)Token[i]);

		fl_decimal_number = fl_decimal_number || isdigit((BYTE)Token[i]);

		if	(		 (m_Language != morphGerman) 
				|| (		( (BYTE)Token[i] != szlig) // ignore these symbols, they are equal in uppercase an in lowercase
						&&	( (BYTE)Token[i] != Nu)
					)
			)
		{
			fl_lw = fl_lw || is_lowercase((BYTE)Token[i]);
			fl_up = fl_up || is_uppercase((BYTE)Token[i]);
		};

	}

	if (		!fl_decimal_number  
			&&	(fl_ra	||	fl_la)
		)
	{

		if (fl_ra&&fl_la)  // встретились русские и латинские буквы
			if (!m_bForceToRus) // если не надо приводить к русскому алфавиту
				L.SetDes(OUnk); // установить дескриптор "вопрос"
			else // попробовать привести слово к русскому алфав.
			{
				char s[255];
				if (!force_to_rus(s, Token, TokenLength)) // если не удалось привести
					L.SetDes(OUnk);
				else
				{
					memcpy (const_cast<char*>(Token),s, TokenLength); // приводим
					L.SetDes(ORLE);  // говорим, что это русская лексема
				}
			}
		else
			if (fl_ra) 
				L.SetDes(ORLE);
			else 
				L.SetDes(OLLE);

		if ( fl_lw && !fl_up ) 
			L.SetDes(OLw);

		if ( !fl_lw && fl_up ) 
			L.SetDes(OUp);

		if (fl_lw && is_uppercase(first_char))
			L.SetDes(OUpLw);

		return;
	}

	if  (		((BYTE) first_char == '\'') 
		&&	(TokenLength == 1)
		)
	{
		L.SetDes(ODel);
		L.SetDes (OPun);
	};


	if ( (fl_decimal_number  && !fl_la   && !fl_ra) )
		L.SetDes(ODg);

	if (fl_decimal_number && (fl_ra || fl_la)) L.SetDes(ODgCh);

	if (L.GetDescriptors() == 0) L.SetDes(OUnk);
}