• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите найти ошибку

  • Автор темы Автор темы g1one
  • Дата начала Дата начала

g1one

Новые
Регистрация
11 Дек 2011
Сообщения
15
Реакции
0
Баллы
0
Помогите найти ошибку

Даны строки A и B. Если строки состоят из одних и тех же символов и в A нет по-вторяющихся символов, то упорядочить символы A в алфавитном порядке и уда-лить из B русские буквы; в остальных случаях упорядочить символы A в порядке, обратном к алфавитному, удалив повторяющиеся символы, и продублировать знаки препинания в B.

#include <stdio.h>
#include <conio.h>

main()
{
int i,j,la,lb,f,f1,f2,n,m,p,k;
char min,a[80],b[80],g[80],*c=".,;:!?#%&*/\()",*h="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";

clrscr();
f1=0;
f2=0;
printf("Vvedite stroku A: ");
gets(a);
printf("Vvedite stroku B: ");
gets(b);
la=strlen(a);
lb=strlen(b);

for(i=0;i<=la-1;i++) /* Opredelyaem est li v A povtoryayuschiesya simvoli */
for(j=0;j<=la-1;j++)
if(i!=j)
{
if(a==a[j])
f1=1;
}

for(i=0;i<=lb-1;i++) /* Opredelyaem est li v B znaki prepinaniya */
{
if(strchr(c,b)!=0)
f2=1;
}

if((f1!=1)&&(f2==1))
{
printf("\nStroka A ne vxodit v stroku B\n");
printf("\nV stroke A net povtoryayuschixsya simvolov\n uporyadochivaem stroku A v alfavitnom poryadke\n");
for(i=0;i<=la-2;i++)
{
min=a;
n=i;
for(j=i+1;j<=la-1;j++)
if (a[j]<min)
{
min=a[j];
n=j;
}
a[n]=a;
a=min;
}
puts(a);

printf("\nUdalyaem znaki prepinaniya iz stroki B\n");
j=0;
g[0]='\0';
for(i=0;i<lb-1;i++)
{
f=strchr(c,b);
if (f==0)
{
g[j]=b;
j++;
}
}
g[j]='\0';
for(i=0;i<=j;i++)
b=g;
puts(b);
}

else
{
printf("\nSimvoli stroki A est v stroke B\n");
printf("\nV stroke A udalim povtoryayuschiesya simvoli i\n uporyadochim v poryadke obratnom k alfavitnomu\n");
for(i=0;i<la;i++)
for(j=1+i;j<=la;j++)
{
p=0;
while ((a==a[j])&&(p<=la))
{
for(k=j;k<la;k++)
{
a[k]=a[k+1];
}
p=p+1;
}
}

for(i=0;i<=la-2;i++) /* uporyadochivanie */
{
min=a;
n=i;
for(j=i+1;j<=la-1;j++)
if (a[j]>min)
{
min=a[j];
n=j;
}
a[n]=a;
a=min;
}
puts(a);

printf("\nProdublituem latinskie bukvi v stroke B\n");
for(i=lb;i>=0;--i)
if(strchr(h,b)!=0)
{
lb=strlen(b);
for(j=lb;j>=i;j--)
b[j+1]=b[j];
}
puts(b);
}
}
 
Это нужно сделать на Си
 
Назад
Сверху