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 |
|