Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

HRyk



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#include "stdafx.h"  
#include <conio.h>  
//-------------------------
//Функция, ищущая одинаковые цифры в векторах  
int estOno (int m, int n, int V[], int Vrez[])  
{  
// Vrez - сгенерированный функцией RecFunc вектор  
// V - введенный с клавиатуры вектор возможных цифр  
    int *Vcount;  
    Vcount = new int[n];  
    for(int i = 0; i < n; i++)  
    {  
        Vcount[i] = 0;  
    }  
 
    for(int i = 0; i < m; i++)  
    {  
        for(int j = 0; j < n; j++)  
        {  
            if(Vrez[i] == V[j])  
            {  
                Vcount[j]++;  
            }  
        }      
    }  
 
    int rez = 1;  
    for(int i = 0; i < n; i++)  
    {  
        if(Vcount[i] > 1)  
        {  
            rez = 0;  
            break;          
        }  
    }  
    delete[] Vcount;  
    return rez;  
}  
//--------------------------  
void RecFunc(int ib, int n, int V[], int m, int Vrez[],int MATR[][30], int & q1)  
{ int s=0;
    if(ib < m)  
    {  
        for(int j = 0; j < n; j++)  
        {  
            Vrez[ib] = V[j];  
            if (estOno (m,n,V,Vrez)==1)  
            if(ib == m -1)  
            {    
                for(int k = 0; k < m; k++)  
                {  
                    MATR[q1][k]=Vrez[k];
                    printf("v%d, m%d " , Vrez[k],MATR[q1][k]);
                } q1=q1+1;
                printf("\n");
            }  
            RecFunc(ib + 1, n, V, m, Vrez,MATR,q1);  
            
        }  
    }  
}  
//---------------------------------------------  
 //функция, определяющая, состоят ли два вектора из матрицы MATR[][]из одинаковых цифр.
void format(int & i,int & j, int MATR[][30],int & m,int V11[],int V22[])
{int ch;ch=0;
for (int y=0;y<m;y++)
V11[y]=MATR[i][y];
 
for (int y=0;y<m;y++)
V22[y]=MATR[j][y];
 
//--------------
ch=0;
for (int r=0;r<m;r++)
for (int zz=0;zz<m;zz++)
if (zz!=r)
    if (V11[r]==V22[zz])
        {ch=ch+1;}
 
printf("m==%d, ch==%d\n",m,ch);
if ((ch==m)||(ch==m-1)||(ch==0))
    {for (int a=0;a<m;a++)
        {//изменяем вектор в матрице MATR[][]
            MATR[j][a]=-9;
    
        }
    }
}
//---------------------------------------------------
int V[10],VRez[10],DATA[10],n,MATR[30][30],q1=0,p1[20],MATR1[30][30],V11[30],V22[30],i,j; //q1=-1  
int _tmain(int argc, _TCHAR* argv[])  
{ int fl,fl1;
    int m,n,s;  
//ВВОД данных--------------------------  
    printf("Vvedite n : ");  
    scanf("%d", &n);  
    for (int i = 0; i < n ; i++)  
    {  
        printf("Vvedite %d-ielement: ", i+1);  
        scanf("%d", &DATA[i]);  
    }  
    printf("Vvedite m : ");  
    scanf("%d", & m);  
     
    for(int k = 0; k < m; k++)  
    {  
        VRez[k] = DATA[0];  
    }  
 
    RecFunc(0, n, DATA, m, VRez,MATR,q1);  
//--------------------------------------
    //копируем матрицу MATR[][] в MATR1[][]  
    for(int k1 = 0; k1 < 30; k1++)
    
        for(int k = 0; k < m; k++)  
    MATR1[k1][k]=MATR[k1][k];
    
    
    printf("q1==%d\n",q1);
//-------------------------------------    
    //находим суммы цифр векторов
    s=0;
    for(int k1 = 0; k1 < q1; k1++)
    {
        for(int k = 0; k < m; k++)  
        s=s+MATR[k1][k];
    //printf("s==%d\n",s);
        p1[k1]=s;  
    s=0;
    }
//-----------------------
for (i=0;i<30;i++)//q1
for (j=0;j<30;j++)
if (j!=i)
{if ((p1[i]==p1[j])&&(MATR[i][0]!=-9)&&(MATR[j][0]!=0)&&(MATR[j][0]!=-9)&&(MATR[i][0]!=0))
{//printf("p1== %d\n",p1[j]);
format(i,j,MATR,m,V11,V22);
}
}
//выводим МATR1-------------------------
    
    printf("\n");
    for(int k1 = 0; k1 < 30; k1++)
    {        if ((MATR[k1][0]!=-9)&& (MATR[k1][0]!=0))
        for(int k = 0; k < m; k++)  
          printf("%d", MATR1[k1][k]);  
     printf("\n");            
    }
    
printf("\n");
//------------------------------------    
getch();  
     
    return 0;  
}  

Всего записей: 162 | Зарегистр. 04-11-2006 | Отправлено: 18:23 28-02-2007 | Исправлено: HRyk, 21:44 28-02-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru