Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 08.02.2012, 00:34   #1 (permalink)
g1one
Member
 
Регистрация: 11.12.2011
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите найти ошибку

Даны строки 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="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfg hjklzxcvbnm";

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[i]==a[j])
f1=1;
}

for(i=0;i<=lb-1;i++) /* Opredelyaem est li v B znaki prepinaniya */
{
if(strchr(c,b[i])!=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[i];
n=i;
for(j=i+1;j<=la-1;j++)
if (a[j]<min)
{
min=a[j];
n=j;
}
a[n]=a[i];
a[i]=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[i]);
if (f==0)
{
g[j]=b[i];
j++;
}
}
g[j]='\0';
for(i=0;i<=j;i++)
b[i]=g[i];
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[i]==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[i];
n=i;
for(j=i+1;j<=la-1;j++)
if (a[j]>min)
{
min=a[j];
n=j;
}
a[n]=a[i];
a[i]=min;
}
puts(a);

printf("\nProdublituem latinskie bukvi v stroke B\n");
for(i=lb;i>=0;--i)
if(strchr(h,b[i])!=0)
{
lb=strlen(b);
for(j=lb;j>=i;j--)
b[j+1]=b[j];
}
puts(b);
}
}
g1one вне форума   Ответить с цитированием

Старый 08.02.2012, 00:34
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Данные топики могут вам очень хорошо помочь

Помогите найти ошибку в Пролог-Д
Помогите найти ошибку
Помогите, пожалуйста, найти ошибку в программе
Помогите найти ошибку в программе
Помогите найти ошибку, Pascal abc
Помогите найти ошибку

Старый 08.02.2012, 00:40   #2 (permalink)
g1one
Member
 
Регистрация: 11.12.2011
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Это нужно сделать на Си
g1one вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:50.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.