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

опять комбинаторика (с одного языка на другой) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Галочка Громова
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
09.10.2010, 21:37     опять комбинаторика (с одного языка на другой) #1
Привет всем. Нужна помощь!!!
Перевести эту программу на СИ (это, наверно, pascal), мало что понимаю

(выводит число размещений с повторениями)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
N, M: Integer;
 
procedure ArrangementRep(Nabor: string; Place: Integer);
var
i: Integer;
begin
if Place > M then
Memo1.Lines.Add(Nabor)
else
for i := 1 to N do
ArrangementRep(Nabor + IntToStr(i) + ' ', Place + 1);
end;
 
begin
N := 5;
M := 3;
ArrangementRep('', 1);
end;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2010, 21:37     опять комбинаторика (с одного языка на другой)
Посмотрите здесь:

C++ Из одного формата в другой
C++ перевод из одного языка в другой
C++ из одного файла в другой
Копирование одного раздела в другой C++
C++ Перепись из одного файла в другой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
murderer
3175 / 1398 / 69
Регистрация: 06.10.2010
Сообщений: 3,017
09.10.2010, 22:10     опять комбинаторика (с одного языка на другой) #2
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
int N, M;
 
void ArrangementRep(char Nabor[255], int Place){
int i;
char s[255];
lstrcpyA(s,Nabor);
if (Place > M)
{
    printf(s);
    printf("\n");
}
else
    for(i=1;i<=N;i++)
    {
        _itoa(i,&s[lstrlenA(s)],10);
        lstrcatA(s," ");
        ArrangementRep(s,Place+1);
    }
}
 
int main(array<System::String ^> ^args)
{
   N=5;
   M=3;
   ArrangementRep(" ", 1);
   getchar();
}
Галочка Громова
1 / 1 / 0
Регистрация: 10.02.2010
Сообщений: 36
09.10.2010, 22:38  [ТС]     опять комбинаторика (с одного языка на другой) #3
к сожалению, она считает совсем не так(((
надо: например из (1 2 3 4 5) пяти элементов выбрать три размещения
111
211
311
411
511
121
131
141
151
....
455
555

а у вас получилось
111
1112
11123
1112345
...

Добавлено через 2 минуты
НУ ИЛИ ВООБЩЕ, КАК РЕШИТЬ ТАКУЮ ЗАДАЧУ???

Добавлено через 48 секунд
НЕ СМОТРЯ НА КОД PASCAL.

Добавлено через 14 минут
Цитата Сообщение от Галочка Громова Посмотреть сообщение
к сожалению, она считает совсем не так(((
надо: например из (1 2 3 4 5) пяти элементов выбрать три размещения
111
211
311
411
511
121
221
321
421
521
131 <--- такая правильная последовательность
....
455
555

а у вас получилось
111
1112
11123
1112345
...

Добавлено через 2 минуты
НУ ИЛИ ВООБЩЕ, КАК РЕШИТЬ ТАКУЮ ЗАДАЧУ???

Добавлено через 48 секунд
НЕ СМОТРЯ НА КОД PASCAL.
подскажите что-нибудь.
murderer
3175 / 1398 / 69
Регистрация: 06.10.2010
Сообщений: 3,017
10.10.2010, 10:13     опять комбинаторика (с одного языка на другой) #4
Я плохо знаю C. Вот кажется получилось
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
int main(array<System::String ^> ^args)
{
#define N 5
#define M 3
    int i;
    char s[M+1];
    char a[M+1];
    for(i=0;i<M;i++)
        a[i]=1;
    a[i]=0;
    do
    {
        a[0]++;
        for(i=0;i<M;i++)
        {
            if(a[i]>N)
            {
                a[i]=1;
                a[i+1]++;
            }
            s[i]=a[i]+48;
        }
        printf(s);
        printf("\n");
    }while(a[M]!=1);
    getchar();
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.10.2010, 15:23     опять комбинаторика (с одного языка на другой) #5
murderer, Это не Си...
array<System::String ^> ^args - в Си никогда не было и быть не может.
C++/CLI насколько я понима.
murderer
3175 / 1398 / 69
Регистрация: 06.10.2010
Сообщений: 3,017
10.10.2010, 15:42     опять комбинаторика (с одного языка на другой) #6
Я в Visual Studio проверял
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2010, 15:49     опять комбинаторика (с одного языка на другой)
Еще ссылки по теме:

копирование с одного массива в другой C++
Переписать из одного массива в другой C++
перевести с одного языка программирования на другой C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.10.2010, 15:49     опять комбинаторика (с одного языка на другой) #7
murderer, С++/CLI - разработка майкрософта. Логично что поддерживается студией
Yandex
Объявления
10.10.2010, 15:49     опять комбинаторика (с одного языка на другой)
Ответ Создать тему
Опции темы

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