ВОПРОС · Q&A

Удалить из массива повторные вхождения каждого символа.

2 ответов 10,7 тыс.
Автор вопроса
может мне и не сюда :blink: ...но..хех...помогите тупому студенту :) ...по задаче на статичесие и динамические массивы(или как их там))))

1. 13. Задан массив из k символов. Удалить из него повторные вхождения каж-
дого символа.

2. 13. В матрице размером NxM найти максимальный среди элементов, ле-
жащих ниже побочной диагонали, и минимальный среди элементов, лежащих
выше главной диагонали.

P.S. Если кто то всё таки это прочитает...и более того что нипуть напишет...просьба не использовать указатели(я ненаю что это такое,и мы их не проходили) и первую задачу решить смещением(там как то нада если э-т повторяется сдвинуть массив на одну позицию... :(
 
:( сам написал...сам решаю :blink: :) :(
1.13

C++:
#include<iostream.h>
#include<math.h>
int main()
{

int a[9],b[9],i,j,k,n;
cout<<"vvedite n=";
endl;
cin>>n;
for(i=0;i<=n;i++)
{
cout<<"Vvedite a["<<i<<"]=";
cin>>a[i];
}
for(j=0;j<=n;j++)

{

for (i=j+1; i<=n; i++) 
if(a[j]==a[i])
{for (i=j+1; i<=n; i++) 
a[i-1]=a[i];
n--; i--; }

} 



for(i=0;i<=n;i++)
{
cout<<a[i]<<endl;
}
cout<<endl;

return 0;
}
 
По первой задаче решение смешением выглядит так:
Берем первый элемент, прогоняем условие равенств по всему массиву с другими элементами, если найден тот же элемент, запоминаем его значение, ещё один цикл - сдвигаем все элементы массива влево на место найденного элемента, а на последнее место записываем значение найденного элемента + ведём счётчик j таких элементов, начиная с 0.
Таким образом все повторы переместятся в конец массива, и количество уникальных элементов будет равно n-j, где n - размер изначального массива.

Выделяете память под новый массив (в СИ это важно) и переносите все элементы от 0 до n-j