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

Разбиения множества - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как данную программу реализовать при помощи классов http://www.cyberforum.ru/cpp-beginners/thread578982.html
как данную программу реализовать при помощи классов ~cpp //--------------------------------------------------------------------------- #include <vcl.h> #include <iostream.h> #pragma hdrstop
C++ Найти номер максимального элемента массива Помогите с программами 1. Найти номер максимального элемента массива. 2. Найти произведение элементов массива, расположенных между первым и вторым нулевыми элементами. 3. для заданной матрице размера 8 на 8 найти такие k, что к-я строка матрице совпадает с к-м столбцом. 4. Напишите программу которая считывает текст из файла и определяет сколько в этом слове. состоявших из не более чем 4-х... http://www.cyberforum.ru/cpp-beginners/thread578972.html
C++ Написать функцию, которая возвращает максимальный элемент одномерного массива
Написать функцию, которая возвращает максимальный элемент одномерного массива
C++ структуры содержащие члены-данные и члены- функции
Помогите пожалуйста!!!:cry: На основе данного входного файла составить список сотрудников учреждения, включив следующие данные: ФИО, год принятия на работу, должность, зарплата, рабочий стаж. Вывести в новый файл список сотрудников учреждения, удалив из него информацию о сотрудниках, принятых на работу в текущем году.
C++ Структуры http://www.cyberforum.ru/cpp-beginners/thread578955.html
Помогите решить задачу (решить задачу, используя структуру point для хранения координат точки: (множество точек задано на плоскости) Найти такую точку, что окружность радиуса R с центром в этой точке содержит минимальное число точек заданного множества.
C++ Работа с текстовыми файлами: Помогите пожалуйста решить задачу Дан текстовый файл. Напечатать все нечётные строки. подробнее

Показать сообщение отдельно
ejk
0 / 0 / 0
Регистрация: 14.05.2012
Сообщений: 81
22.05.2012, 16:18  [ТС]     Разбиения множества
Вся функция grouping
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
void grouping(int n, int m, int m1, int* num, float* mas, float* *pt)//num -- массив номеров точек, которые уже вошли в комбинацию, m1 -- их количество
{
    if(m1==0)
    {
        for(int i=1; i<n-m+1; i++)
        {
            num[0]=i;
            grouping(n,m,1,num,mas,pt);
        }
    }
    else if(m==m1)
    {
        float x1=0,x2=0,y1=0,y2=0,z1=0,z2=0,mas1=0,mas2=0;
        for(int i=0; i<n; i++)
        {
            for(int k=0;k<=m1;k++)//Здесь ищем число i в массиве num
            {
                if(i==num[k])//Если нашли
                {
                    x1+=mas[i]*pt[i][0];
                    y1+=mas[i]*pt[i][1];
                    z1+=mas[i]*pt[i][2];
                    mas1+=mas[i];
                }               
                else
                {
                    x2+=mas[i]*pt[i][0];
                    y2+=mas[i]*pt[i][1];
                    z2+=mas[i]*pt[i][2];
                    mas2+=mas[i];
                }
            }
        }
        x1/=mas1;
        x2/=mas2;
        y1/=mas1;
        y2/=mas2;
        z1/=mas1;
        z2/=mas2;
        float l=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2));//Посчитали расстояние.
        printf("%f", l);
 
        printf("\n");
    }
    else
    {
        int last=num[m1-1];//У нас частицы упорядочены, и если у нас уже была комбинация из 1,3,4 частицы, например, то комбинация из 1,4,3 нас уже не интересует, потому новые частицы имеет смысл присоейдинять к комбинации только начиная с num[m1-1]
        for(int i=last+1; i<n-m+m1+1; i++)//Если номер будет больше, чем n-m+m1+1, то опять-таки комбинации будут повторяться
        {
            num[m1]=i;
            grouping(n,m,m1+1,num,mas,pt);
        }
    }
}
Добавлено через 3 минуты
А еще он вот здесь как-то неправильно считает N. При 3х точках N=5

C
1
2
3
4
5
6
7
8
while(c!=EOF)//Пока не конец файла
    {
        if(c=='\n')//Перенос на следующую строку
            N++;
        c=getc(file);//Считывание следующего символа
    }
    N++;//Теперь N -- это наше реальное количество точек
    fclose(file);
Добавлено через 13 минут
В общем, я сделала немного по-другому считывание N и теперь оно равняется трем при трех точках. Зато теперь у меня в результате выводится не 3 ответа, а 2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru