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

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

YuRich

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

Whatka

#4
тогда вопрос-это дословное условие задачи??
 
W

Whatka

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

Vadik(R)

Well-known member
12.12.2007
469
0
#7
Уточни условие задачи, действительно непонятно, серия чего?
 
Y

YuRich

#8
Выяснил, уточняю: Назовем серией группу подряд идущих одинаковых элементов, а длиной серии — количество этих элементов (длина серии может быть равна 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;
}