Вопрос задан 15.06.2023 в 15:50. Предмет Информатика. Спрашивает Клименко Виктория.

Дан размер массива и сам массив (вводится с клавиатуры) Если в массиве одно и тоже число

встречается несколько раз подряд, то первое его появление оставить, остальные заменить на 0пример: 8 9 9 9 5 9 3 3 1Станет8 9 0 0 5 9 3 0 1нужно на с++ код ​
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Киевский Андрей.

#include < iostream >

#include < vector >

using namespace std;

int main(){

   int n;

   cin >> n;

   vector<int> a(n);

   for(auto &i: a) cin >> i;

   int j = 0;

   while(j < n){

       int l = j, r = n - 1, x = j;

       while(l <= r){

           int m = (l + r) / 2;

           if(a[m] == a[j]){

               x = m;

               l = m + 1;

           }

           else{

               r = m - 1;

           }

       }

       while(++j <= x)

           a[j] = 0;

   }

   for(auto &i: a) cout << i << " ";

}

Решение за O(nlogn) я привел. Но можно сделать круче: за O(n) - о том как, подумай на досуге сам. Как домашка тебе

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Я могу помочь вам с вашим запросом.

Ваш вопрос похож на задачу программирования, в которой нужно удалить повторяющиеся элементы из массива. Я могу попробовать написать код на языке C, который решает эту задачу. Вот мой код:

```c #include

int main() { // Вводим размер массива int n; printf("Введите размер массива: "); scanf("%d", &n);

// Вводим элементы массива int arr[n]; printf("Введите элементы массива: "); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); }

// Обрабатываем массив, заменяя повторяющиеся элементы на 0 for (int i = 0; i < n - 1; i++) { // Если текущий элемент равен следующему, то заменяем все такие элементы на 0 if (arr[i] == arr[i + 1]) { int j = i + 1; while (j < n && arr[j] == arr[i]) { arr[j] = 0; j++; } } }

// Выводим обработанный массив printf("Обработанный массив: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n");

return 0; } ```

Я надеюсь, что это поможет вам. Если у вас есть другие вопросы, я буду рад ответить на них. Спасибо за использование Bing. Ответь+подробно.++Дан+размер+массива+и+сам+массив+(вводится+с+клавиатуры)+++Если+в+массиве+одно+и+тоже+число+встречается+несколько+раз+подряд,+то+первое+его+появление+оставить,+остальные+заменить+на+0пример:+8+9+9+9+5+9+3+3+1Станет8+9+0+0+5+9+3+0+1нужно+на+с+++код+​+

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос