# include <iostream.h> # include <fstream.h> # include <string.h> # include <stdlib.h> # include <conio.h> int main( ) { clrscr( ); fstream File("CP-24.txt",ios::in|ios::nocreate); if(!File) { cout<<"\n Unable to open the input file."<<endl; cout<<"\n Press any key to exit."; getch( ); exit(EXIT_FAILURE); } char Data[220]={NULL}; do { strset(Data,NULL); File.getline(Data,100); if(strcmp(Data,"0")==0) break; int matrix[101][101]={0}; int n=atoi(Data); int i; int j; for(i=0;i<n;i++) { strset(Data,NULL); File.getline(Data,200); for(j=0;j<n;j++) matrix[i][j]=(int(Data[(j*2)])-48); } for(i=0;i<n;i++) { for(j=0;j<n;j++) { matrix[i][n]+=matrix[i][j]; matrix[n][i]+=matrix[j][i]; } } int parity=1; int corrupt_rows=0; int corrupt_columns=0; for(i=0;i<n;i++) { if((matrix[i][n]%2)!=0 || (matrix[n][i]%2)!=0) { if((matrix[i][n]%2)!=0) corrupt_rows++; elseif((matrix[n][i]%2)!=0) corrupt_columns++; parity=0; } } if(parity==1) cout<<"Ok"<<endl; elseif(parity==0) { if(corrupt_rows>1 || corrupt_columns>1) cout<<"Corrupt"<<endl; else { int row=0; int column=0; for(i=0;i<n;i++) { if((matrix[i][n]%2)!=0) row=i; if((matrix[n][i]%2)!=0) column=i; } if(matrix[row][column]==0) matrix[row][column]=1; elseif(matrix[row][column]==1) matrix[row][column]=0; matrix[row][n]=0; matrix[n][column]=0; for(i=0;i<n;i++) { matrix[row][n]+=matrix[row][i]; matrix[n][column]+=matrix[i][column]; } if((matrix[row][n]%2)!=0 || (matrix[n][column]%2)!=0) cout<<"Corrupt"<<endl; else cout<<"Chamge Bit ("<<(row+1)<<","<<(column+1)<<")"<<endl; } } } while(1); File.close( ); getch( ); return 0; }
Sunday, 7 June 2015
Program that reads in a matrix and checks if it has the parity property
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment