Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2012, 01:57   #1
Johny91
Пользователь
 
Регистрация: 21.11.2009
Сообщений: 37
По умолчанию программа(строки) на С

Залание
Даны строки A и B. Если в A есть русские буквы, а в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к алфавитному, и удалить русские буквы из A; в остальных случаях продублировать латинские буквы в В и упорядочить символы А в алфавитном порядке.
знакомлюсь с си. проблема в том что не получается найти русский символ во введённой строке, для того чтобы переключить переменную (ie).
возможно как-то неправильно объявляю (abc).


Код:
//---------------------------------------------------------------------------

#include <stdio.h>

main()
{
int i,j,n,g,la,lb,ia,l,lenb;
char min,max,a[80],b[80],d[80],
abc[]="ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю";
printf("VVedite stroku A: ");
gets(a);
printf("\n");
printf("VVedite stroku B: ");
gets(b);
printf("\n");
/* определение длин строк */
la = strlen(a);
lb = strlen(b);
ia=0;
for (i=0; i<=la-1; i++)
{  if  ((strchr(abc,a[i])==1))

   ia = 1; /* если есть совпадение */
   else
   {
/*Проверка строки B на повторяющиеся символы*/
for(j=i+1;j<=lb;j++)
  if(b[i]!=b[j])
   ia=1;
   }
}
if (ia == 1)
{
for (i=0; i<=lb-2; i++) /* упорядочивание по убыванию */
	{
	 min=b[i];
	 n = i;
	 for (j=i+1; j<=lb-1; j++)
	  if (b[j]>min)
	   {
	min = b[j];
	n = j;
	   }
	b[n] = b[i];
	b[i] = min;
	}
/*Удаление русских букв из A*/
n=0;
for(i=0;i<=lb;i++)
{if(strchr(abc,b[i])==0)
{
 d[n]=b[i];
n=n+1;
}
b[0]='\0';
d[n]='\0';
strcpy(b,d);}

printf("Stroka B uporadochena v obratnom k alfavitnomu poryadke\n");
printf("V stroke A udaleni russkie bukvi");
}
else /* упорядочивание по возрастанию */
  {
  for(i=0;i<la-1;i++)
  for(j=i+1;j<la;j++)
   if(a[i]>a[j])
	{
	max=a[i]; a[i]=a[j]; a[j]=max;
	}
//-------------дублирование латинских букв-----------
l = strlen(b);
 for (i=l-1; i>=0; i--) /* цикл анализа ведется с конца строки к ее началу */
  if (((b[i]>='A')&&(b[i]<='Z'))|((b[i]>='a')&&(b[i]<='z')))/* если введенный символ является латинской буквой */
   {
	l = strlen(b); /* определяется текущая длина строки, так как она при дублировании букв меняется */
	for (j=l; j>=i; j--) /* все символы строки от конца до текущего символа сдвигаются на одну позицию вправо */
	 b[j+1] = b[j];
   }
 printf("Stroka A uporadochena v  alfavitnom poriadke\n");
 printf("V stroke B dublirovani latinskie bukvi");
   }
printf("\n");
printf("A:  "); puts(a);
printf("B:  "); puts(b);
getch();
}
Johny91 вне форума Ответить с цитированием
Старый 11.06.2012, 07:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не получается найти русский символ
Код:
for(int i=0;a[i];i++) if(a[i]>='а' && a[i]<='я') {ie=1;break;}
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.06.2012, 22:04   #3
Johny91
Пользователь
 
Регистрация: 21.11.2009
Сообщений: 37
По умолчанию

понятна, попробую сделать так
Johny91 вне форума Ответить с цитированием
Старый 11.06.2012, 22:34   #4
Johny91
Пользователь
 
Регистрация: 21.11.2009
Сообщений: 37
По умолчанию

Код:
for (i=0;a[i];i++)
{  if(a[i]>='а' && a[i]<='я')
   ia=1;
Так не работает, однако по английски работает.
Код:
for (i=0;a[i];i++)
{  if(a[i]>='a' && a[i]<='z')
   ia=1;
Но мне нужно именно по-русски
Johny91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Программа копирования строки random_name Visual C++ 3 25.03.2012 22:47
Программа на строки Alex_12Proxy Паскаль, Turbo Pascal, PascalABC.NET 3 20.03.2012 14:24
Программа на строки в с++ Scerob Общие вопросы C/C++ 0 27.12.2011 16:00
Программа на строки Mr_sniper Паскаль, Turbo Pascal, PascalABC.NET 0 27.10.2011 21:35