Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
AndreySVRF
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 4
1

Комбинаторика. Выдает ошибки

21.05.2014, 04:47. Просмотров 364. Ответов 0
Метки нет (Все метки)

Создал функции для трёх комбинаторных задач, т. к. их нужно объединить в одну программу создал меню в котором вызываются кейсы с функциями, но не могу понять что не так. Отдельно задачи работали и когда объединяю вторая не выводит перестановку, а когда третью задачу подключаю программа и вовсе не запускается выдаёт ошибки:
main.cpp(4): error C2144: syntax error : 'int' should be preceded by ';'
func.cpp(3): error C2144: syntax error : 'int' should be preceded by ';'
func.cpp(17): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
Что это может быть? Ни как не пойму.

main.cpp
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
89
90
91
92
93
94
95
#include "header.h"
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
    int vvod;
    int noofterms, count = 0;
    int w;
    int a[100];
    int comb[1000];
    int k,n;
    
    while (true)
    {
        
        printf("Алгоритмы генерации комбинаторных объектов \n");
        printf("1. Множество всех подмножеств\n");
        printf("2. Перестановка\n");
        printf("3. Сочетания\n");
        printf("4. Выход\n\n");
        printf("Выберите номер алгоритма: ");
        scanf("%d", &vvod);
        switch (vvod)
            
        {
        case 1:
            system("cls");
        {
 
                  setlocale(LC_ALL, "Russian");
                 
                  
                  printf("Введите количество элементов: "); //--кол-во элементов множества
                  scanf("%d", &w);
                  mnojestvo(w);
                 
                  system("pause");
                  system("cls");
                  break;
        }
 
        case 2:
            system("cls");
            {
                
    setlocale(LC_ALL,"Russian");
    int x;
    printf("Введите количество элементов: ");
    scanf("%d", &noofterms);
    printf("Введите элементы: ");
    for (x = 0; x<noofterms; x++)
        scanf("%d", &a[x]);
    printf("\nПерестановки: \n");
    permute();
    printf("\nКоличество перестановок: %d", noofpermutations());
    
 
 
                system("pause");
                system("cls");
                break;
            }
            
        case 3:
            system("cls");
            {
                setlocale(LC_ALL, "Russian");
                int n, k;
                printf("Введите количество компонентов: "); // - Ввод кол-ва компонентов
                scanf("%d", &n);
                printf("Введите количество сочетаний: ");// - общее число сочетаний
                scanf("%d", &k);
                printf("\nСочетания: :\n");// - вывод всех сочетаний
                for (int i = 0; i < k; ++i)
                    comb[i] = i;
                printcp(comb, k);
                while (next_comb(comb, k, n))
                    printcp(comb, k);
 
                system("pause");
                system("cls");
                break;
            }
            
        case 4:
        {
                  exit(0);
                  break;
        }
        default: printf("Введено неизвестное значение\n");
            _getch();
            system("cls");
        }
    }
}
func.cpp
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "header.h"
 
static int M[100];
int comb[1000];
int m, n, noofterms, count = 0;
int a[100];
 
void mnojestvo(int w)
{
    int M[100];
    int i, n;
    for (int i = 0; i < w; i++)
    {
        printf("Введите элемент: ");
        scanf("%d", &M[i]);
    }
    n = pow(2.0, w);
    for (i = 0; i < n; i++) //--перебор битовых маск
    {
        printf("{");
        for (int j = 0; j < w; j++) //--перебор битов в маске
        if (i & (1 << j)) //--если j-й бит установлен
            printf("%d ", M[j]); //--то выводим j-й элемент множества
        printf("}\n");
    }
}
 
 
 
void swap(int *p1, int *p2)
{
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}
 
int noofpermutations()
{
    int permutations = 1, x;
    for (x = 1; x <= noofterms; x++)
        permutations = permutations*x;
    return permutations;
}
 
void display()
{
    int x;
    for (x = 0; x<noofterms; x++)
        printf("%d", a[x]);
        printf("\n");
    count++;
}
 
void permute(void)
{
    int y;
    while (count<noofpermutations())
    {
        for (y = 0; y<noofterms - 1; y++)
        {
            swap(&a[y], &a[y + 1]);
            display();
        }
        swap(&a[0], &a[1]);
        display();
        for (y = noofterms - 1; y>0; y--)
        {
            swap(&a[y], &a[y - 1]);
            display();
        }
        swap(&a[noofterms - 1], &a[noofterms - 2]);
        display();
    }
}
 
 
void printcp(int comb[], int k)
{
    int i;
    printf("{");
    for (i = 0; i < k; ++i)
        printf("%d, ", comb[i] + 1);
    printf("\b\b}\n");
}
 
int next_comb(int comb[], int k, int n)
{
    int i = k - 1;
    ++comb[i];
    while ((i >= 0) && (comb[i] >= n - k + 1 + i))
    {
        --i;
        ++comb[i];
    }
 
    if (comb[0] > n - k)
        return 0;
    for (i = i + 1; i < k; ++i)
        comb[i] = comb[i - 1] + 1;
 
    return 1;
}
header.h
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
 
void mnojestvo(int w);
void swap(int *,int*);
void permute(void);
int noofpermutations();
void display(void);
int next_comb(int comb[], int k, int n);
void printcp(int comb[], int k)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 04:47
Ответы с готовыми решениями:

Выдает синтаксические ошибки
Почему ошибки?

списал с учебника-выдает ошибки
Посмотрите, пожалуйста, код. Списал с учебника, но компилатор кричит о массе ошибок. В чем может...

перепечатал с учебника-выдает ошибки
Подскажите в чем может быть дело. Перепечатал код один к одному из учебника: #include &lt;stdio.h&gt;...

Прога из Кернигана, выдает странные ошибки
В общем программа для подсчета слов #include &lt;stdio.h&gt; #define IN 1 #define OUT 0 main () {...

Не могу скомпилировать на dev c++, выдает ошибки
#include &lt;stdio.h&gt; void p1(int *m, int k) { int i; for(i=0;i&lt;k;i++) m=-1*m; } void...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2014, 04:47

Ввод и вывод из файла не работает — выдает ошибки
#include &lt;iostream&gt; #include&lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; #include &quot;stdafx.h&quot;...

Проверьте код,выдает ошибки,а как исправить их не могу
Суть в том,что надо проверь слова из строки на условия: 1)начало и конец слова начинается на одну...

Выдает ошибки : фунция инт отличается от косвенного обращения от int*
#define _CRT_SECURE_NO_WARNINGS #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; int m; int...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru