• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Задача На Массивы С++

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

YuRich

Дано число k и целочисленный массив размера N(заполняется из текстового файла). Заменить каждую серию, длина которой меньше1|равна2|больше3k, на один нулевой элемент. Кто может помочь?
 
W

Whatka

Отвечая на твой первый вопрос- я могу.
Ты сам пытался решить?(хоть так как ты понимаешь решение)
да?- где твоё решение?
нет?-см.пункт 5 правил(сверху)
 
Y

YuRich

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

Решать пытался, вот код:
#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

#define N 20

void change(int, int, int *);
void print_arr(int *);

int main()
{
int k;
cout<<"Enter k: ";
cin>>k;
cout<<endl;
int arr[N+1];//массив
//заполняем массив числами и нулём
FILE *f = fopen("array.txt", "r");
if(f)
for(int i = 0;i < N;i++)
fscanf(f, "%d", &arr);
else {
cout<<"Error!";
_getch();
return 1;
}

arr[N] = 0;
//вывод массива
cout<<"Array: "<<endl;
print_arr(arr);
cout<<"Working..."<<endl;
//нахождение последовательностей
int x = 0, y = 0;
for(int i = 1;i < N;i++)
{
if(arr[i-1] == arr)x++;
else if(x >= k) {
change(x, y, arr);
print_arr(arr);
x = 0;
i-=2;
y = i;}
else {
y = i;
x = 0;
}
}
//вывод обработанного массива
cout<<"Result: "<<endl;
print_arr(arr);
//конец
_getch();
return 0;
}

void change(int value, int start, int *arr)
{
for(int i = start;i < N; i++)
arr = arr[i+1];

value--;
if(value > 0)change(value, start, arr);
}

void print_arr(int *arr)
{
for(int i = 0;i < N;i++)
cout<<arr<<" ";

cout<<endl;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!