Форум программистов, компьютерный форум CyberForum.ru

Составить алгоритм определения последовательности номеров удаляемых спортсменов - C++

Восстановить пароль Регистрация
 
TAMIK
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 3
10.09.2012, 16:55     Составить алгоритм определения последовательности номеров удаляемых спортсменов #1
ребята! до завтра ришите задачу. пожалуйста. я ноль в программировании

по кругу стоят N спортсменов с номерами от 1 до N. начиная с кокого-то человека,по кругу удаляется каждый k-ый спортсмен. после каждого удаления круг смыкается. составить алгоритм определения последовательности номеров удаляемых спортсменов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2012, 16:55     Составить алгоритм определения последовательности номеров удаляемых спортсменов
Посмотрите здесь:

Жадный алгоритм для определения последовательности обхода городов. C++
Алгоритм определения наличия текста в файле. C++
C++ составить алгоритм нахождения всех неотрицательных чисел стоящих на четных местах в последовательности х1, х2,
Алгоритм определения периодичности C++
Алгоритм определения планарности графа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kandelyabr
7 / 7 / 0
Регистрация: 03.04.2012
Сообщений: 15
10.09.2012, 17:38     Составить алгоритм определения последовательности номеров удаляемых спортсменов #2
Чему равно k-то?
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
10.09.2012, 17:43     Составить алгоритм определения последовательности номеров удаляемых спортсменов #3
Kandelyabr, осмелюсь предположить, что числу, введенному с клавиатуры
KeyGen
 Аватар для KeyGen
333 / 289 / 6
Регистрация: 07.08.2011
Сообщений: 789
Записей в блоге: 1
10.09.2012, 17:52     Составить алгоритм определения последовательности номеров удаляемых спортсменов #4
Если я правильно понял:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
 
using namespace std;
 
int main()
{
    int sizesport;
    cout << "Введите количество спортсменов: " << endl;
    cin >> sizesport;
 
    int *mass = new int[sizesport];
    int *temp = new int[sizesport];
 
    for(int i = 0; i<sizesport; i++) temp[i] = 0;
 
    for(int i = 1; i<=sizesport; i++)
    {
        mass[i-1] = i;
    }
 
    cout << "В наличии спотсмены: \n";
    for(int i = 0; i<sizesport; i++) {cout << mass[i]; if(i+1 != sizesport) cout << ", "; else cout << ".\n";}
 
    cout << "Кого будем удалять? Введите номер. Для завершения введите q.\n";
 
    int man;
    int i_temp = 0;
    bool BL = true;
 
    while(cin >> man)
    {
        if(man<0||man>sizesport)
        {
            cout << "Такого спортсмена нет!\n";
            continue;
        }
 
        for(int i = 0; i<sizesport; i++)
        {
            if(temp[i] == man)
            {
                cout << "Вы его уже удалили!\n";
                BL = false;
            }
        }
 
        if(BL)
        {
            temp[i_temp] = man;
            i_temp++;
 
            cout << "Спортсмен под номером - " << man << " удален.\n";
        }
        else
        BL = true;
    }
 
    cout << "Удаляется каждый " << temp[1]-temp[0] << "-й спортсмен...\n";
 
    return 0;
}
Все ошибки не исключал. Бери книгу и вперед
Миниатюры
Составить алгоритм определения последовательности номеров удаляемых спортсменов  
TAMIK
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 3
10.09.2012, 18:18  [ТС]     Составить алгоритм определения последовательности номеров удаляемых спортсменов #5
пример, N=3, K=2
возможные пути:1,1,1 1,2 2,1 ответ:3.

Добавлено через 2 минуты
блин. спасибо вам большое друзья. очень вам признателен
AnreyKazakov
Заблокирован
11.09.2012, 03:06     Составить алгоритм определения последовательности номеров удаляемых спортсменов #6
Не мог свой динозавровский код не выложить через индексы и векторы решил, тут вводится кол-во спортсменов, с какого спортсмена будем удалять и через сколько их из круга выпинывать... Если так решать наверно в дискретной математике какая-ниб формула подходящая будет. Честно говоря, после фразы по кругу стоят N спортсменов с номерами от 1 до N, я подумал, что продолжение будет - определите общее iq спортсменов , но нет... а жаль
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <vector>
#include <iterator>
int main(){
    using std::cout;using std::cin;
    using std::endl;using std::vector;
    int sum,k,f;
    cout<<"Введите количество спортсменов"<<endl;cin>>sum;
    vector<int> sport;
    for(int value=0;value!=sum;++value){
        sport.push_back(value+1);
        cout<<value+1<<" ";
        }
    sport.push_back(0);
    cout<<endl<<"Через сколько спортсменов пойдет счет?"<<endl;cin>>k;
    cout<<"С какого спортсмена начинать отсчет?"<<endl;cin>>f;
    vector<int> newsport;
    vector<int>::iterator itr;
    vector<int>::iterator itr2;
    itr=sport.begin();
    while(sum!=1){
        itr=sport.begin();
        itr+=(f-1);
        newsport.push_back(*itr);
        cout<<"спортсмен №"<<*itr<<" выбыл"<<endl<<"Оставшиеся спортсмены: "<<endl;
        --sum;
        for(itr2=sport.begin();itr2!=itr;++itr2){cout<<*itr2<<" ";}
        while(itr!=sport.end()-1){
            if(*itr==0)break;
            *itr=*(itr+1);
            if(*itr!=0){cout<<*itr<<" ";}
            ++itr;
            }
        cout<<endl; 
        int go=0;
        itr=sport.begin();
        itr+=(f-1);
        while(go!=k){
            if((*itr!=0)&&(*(itr+1)!=0)){++itr;}else{itr=sport.begin();}
            //cout<<*itr<<" "<<itr-sport.begin()+1<<" ; ";
            f=(itr-sport.begin()+1);
            ++go;
            }   
        cout<<endl;
        }
    return 0;}
Добавлено через 5 минут
На выходе массив (вектор) с номерами выбывших по очереди бедолаг спорсменов
Yandex
Объявления
11.09.2012, 03:06     Составить алгоритм определения последовательности номеров удаляемых спортсменов
Ответ Создать тему
Опции темы

Текущее время: 18:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru