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

Составить алгоритм - C++

Восстановить пароль Регистрация
 
burn
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 27
31.08.2012, 13:47     Составить алгоритм #1
1. Составить алгоритм подсчета количества способов, которыми можно разменять рубль медными монетами(достоинством 1,2,3,4,5 копеек).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2012, 13:47     Составить алгоритм
Посмотрите здесь:

C++ помогите составить алгоритм
помогите составить алгоритм C++
C++ Составить алгоритм и программу
C++ составить алгоритм!!!
Составить алгоритм и написать программу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
id3dx9
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 6
31.08.2012, 13:49     Составить алгоритм #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
#include "iostream.h"
 
int main ()
{
    int nNumb=0;
    int nFactor=1;
    int nCoins[5]= {1,2,3,4,5};
    const int nSum=100;
 
    for(int i=0;i<5;i++)
    {
        int nBuffer;
        double dBuffer=0;
        dBuffer = nSum/nCoins[i];
        nBuffer = nSum/nCoins[i];
 
 
        if (dBuffer==nBuffer)
        {
                nNumb++;
        }
 
            cout << dBuffer <<"\n";
            cout << nNumb <<"\n";
    }
 
    return 0;
}
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
31.08.2012, 14:01     Составить алгоритм #3
Матчасть
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
31.08.2012, 16:06     Составить алгоритм #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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <memory.h>
 
typedef struct Coin
{
    int coin;
    int count;
} COIN;
 
#define N 5
 
int main()
{
    const int amount = 100;
 
    COIN* pCoins = new COIN[N];
    memset((void*)pCoins, 0x00, sizeof(COIN) * N);
 
    int val = N;
    for (int x = 0; x < N; x++, val--)
    {
        pCoins[x].coin = val;
        pCoins[x].count = 0;
    }
 
    int sum = 0, v = 0;
    while (v < N) sum+=pCoins[v++].coin;
 
    int div = amount / sum;
    int remd = amount % sum;
 
    int* w = new int[N];
    memset((void*)w, 0x00, sizeof(int) * N);
 
    for (int d = 0; d < N; d++)
        w[d] = pCoins[d].coin * div;
 
    int** ppw = new int*[N];
    memset((void*)ppw, 0x00, 4 * N);
 
    for (int i = 0; i < N; i++)
    {
        ppw[i] = new int[N]; int j = 0;
        while (j < N) ppw[i][j] = w[j++];
    }
 
    for (int m = 0; m < N; m++)
        ppw[m][m]+=remd;
 
    int** ppw2 = new int*[N];
    memset((void*)ppw2, 0x00, 4 * N);
 
    int p = 0;
    for (int k1 = 0; k1 < N; k1++)
    {
        bool is_dd = false;
        for (int k2 = 0; k2 < N && !is_dd; k2++)
            is_dd = ((ppw[k1][k2] % pCoins[k2].coin) > 0) ? 1 : 0;
 
        if (is_dd == false)
        {
            ppw2[p] = new int[N];
            for (int c = 0; c < N; c++)
                ppw2[p][c] = ppw[k1][c] / pCoins[c].coin;
 
            p++;
        }
    }
 
    long result = 0;
    for (int d1 = 0; d1 < p; d1++)
    {
        int count = 0, mul = 0;
        for (int d2 = 0; d2 < N; d2++)
            if (ppw2[d1][d2] == div) count++;
            else mul = ppw2[d1][d2];
 
        result+=(long)pow((double)div, count) * mul;
    }
 
    printf("result = %d\n",result);
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/c2a161...ec4fc8c09c1f92
burn
0 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 27
31.08.2012, 17:08  [ТС]     Составить алгоритм #5
спасибо
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
01.09.2012, 07:16     Составить алгоритм #6
вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int res;
void rec(int x, int y)
{
    if(x>100)
        return;
    if(x==100)
    {
        res++;
        return;
    }
    for(int i=y; i<6; i++)
        rec(x+i, i);    
}
int main ()
{
    rec(0, 1);
    cout<<res<<endl;
    return 0;
}
Yandex
Объявления
01.09.2012, 07:16     Составить алгоритм
Ответ Создать тему
Опции темы

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