0 / 0 / 1
Регистрация: 13.05.2014
Сообщений: 9
1

Написать программу перебора слов, функций или чисел, удовлетворяющих заданным условиям

31.10.2014, 15:01. Показов 915. Ответов 2
Метки нет (Все метки)

Написать программу перебора слов, функций или чисел, удовлетворяющих заданным условиям. Каждое слово, функция или последовательность чисел выводится с но-вой строки. Числа m и n вводятся с клавиатуры.Перебрать все монотонно возрастающие функции f :[m] -> [n].
не понимаю как исправить ошибки, помогите пожалуйста
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
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<iostream>
 
 
int m, n, *pos;
 
void GetNext()
{
pos[m - 1]++;
for (int i = m - 1; i > 0; i--)
if (pos[i] == n)
{
pos[i] = 0;
pos[i - 1]++;
}
}
long kol=0;
int p(int *x, int k)
{
 
// возвращает 1, если выполнены условия
    if(k==0) return 1; // x[0]
    if (p(x,k-1)) // если среди предшествующих условие выполнено
    {
        if (!(x[k-1]<x[k]))
         {
          return 0;
         }
        return 1;
    } else return 0;
}
int main()
{
int b[m+2];           // верхние границы раскрашенных подмножеств
                // b[m+1] закрашивает элементы последнего
// множества A_i равны 0,1,2, ..., n
int x[m+1];           // генерируемая последовательность
int i,k;              // k - длина последней сгенерированной последователь-ности 
FILE * fp;
fopen_s( &fp, "text.txt", "w");
    for (i=0; i<=m; i++) b[i]=-1;
                  // верхняя граница удаленных равна -1
    b[m+1]=n; // empty
    k=0;
    while(k>=0)
    {
        if(b[k]<n)
        {
            x[k]=++b[k];  // x[1], ... , x[k] -- последняя полученная
                      // последовательность, раскрашены элементы
                                      // 'a' до b[k]
            if(p(x,k))
            {
                if (k==m) // если получено решение -- вывести
                {   
                    for (i=0;i<=k;i++)
                        fprintf(fp," %d",x[i]);
                    fprintf(fp, "\n");
                    kol++;
                }
                if (k<m) k++;
            }
        } else
          {
            b[k]=-1; k--; // возврат
          }
    }
    printf("%ld ",kol);
    return 1;
}
1\consoleapplication1\consoleapplication1\consolea pplication1.cpp(39): error C2057: expected constant expression
1\consoleapplication1\consoleapplication1\consolea pplication1.cpp(39): error C2466: cannot allocate an array of constant size 0
1\consoleapplication1\consoleapplication1\consolea pplication1.cpp(39): error C2133: 'b' : unknown size
1\consoleapplication1\consoleapplication1\consolea pplication1.cpp(42): error C2057: expected constant expression
1\consoleapplication1\consoleapplication1\consolea pplication1.cpp(42): error C2466: cannot allocate an array of constant size 0
1\consoleapplication1\consoleapplication1\consolea pplication1.cpp(42): error C2133: 'x' : unknown size
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2014, 15:01
Ответы с готовыми решениями:

Выбрать из списка студентов удовлетворяющих заданным условиям
есть список, содержащий фамилии студентов, их адреса и набранные баллы на вступительных экзаменах...

Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям
В массиве записаны оценки учащегося по 10 предметам. Определить количество 4 и 5.

Разбить шары на минимальное количество наборов удовлетворяющих заданным условиям
Приветствую. Есть задача: На столе стоят n коробок с разноцветными шарами. Цвета пронумерованы...

Массив. Найти количество элементов массива, удовлетворяющих заданным условиям
кто поможет спс заранее)))) Задать одномерный массив из 10 элементов случайным образом. Найти...

2
Эксперт по математике/физикеЭксперт С++
1995 / 1325 / 379
Регистрация: 16.05.2013
Сообщений: 3,430
Записей в блоге: 6
31.10.2014, 15:18 2
n и m должны быть константами, либо используйте динамические массивы.
C++
1
2
3
4
5
int* b = new int [m+2];      
int* x = new int [m+1]; 
//И где-то там подчищаем за собой
delete [] x;
delete [] b;
1
0 / 0 / 1
Регистрация: 13.05.2014
Сообщений: 9
31.10.2014, 15:25  [ТС] 3
спасибо, программа начала запускаться, только вот почему то ввод с клавиатуры все равно не осуществляется
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2014, 15:25
Помогаю со студенческими работами здесь

Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям
В одномерном массиве содержатся только два одинаковых элемента. Найдите их. можно как то...

Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям
В массиве хранится информация о годе рождения каждого из 30 человек. Определить порядковый номер...

Вычисление суммы, количества элементов массива, удовлетворяющих заданным условиям.
Вычисление суммы, количества элементов массива, удовлетворяющих заданным условиям. Задание В...

Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям
В одномерном массиве содержатся только два одинаковых элемента. Найдите их.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru