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

Тема в разделе "C/C++/C#", создана пользователем YuRich, 13 янв 2012.

  1. YuRich

    YuRich Гость

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

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Каждую серию чего?

    Длина серии меньше 1 ?
     
  3. YuRich

    YuRich Гость

    В этом то и проблема основная. Не понимаю условия задачи, а решать надо. Думал может у кого что то подобное было.
     
  4. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    тогда вопрос-это дословное условие задачи??
     
  5. YuRich

    YuRich Гость

    Да.
     
  6. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Отвечая на твой первый вопрос- я могу.
    Ты сам пытался решить?(хоть так как ты понимаешь решение)
    да?- где твоё решение?
    нет?-см.пункт 5 правил(сверху)
     
  7. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Уточни условие задачи, действительно непонятно, серия чего?
     
  8. YuRich

    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;
    }
     
Загрузка...
Похожие Темы - Задача На Массивы
  1. Lizzz
    Ответов:
    1
    Просмотров:
    1.242
  2. filin94
    Ответов:
    1
    Просмотров:
    1.714
  3. elzim
    Ответов:
    0
    Просмотров:
    929
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.117
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.104

Поделиться этой страницей