Dalej nejaké nápady na zlepšenie programu(neviem čo s tým parA,nepA...., to my funguje len ak to dám ako globálne premené čo moc nechcem používať....kam inam by som to mohol dať?)
Kód: Vybrať všetko
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int klaA,zapA=0,parA=0,nepA=0,klaB=0,zapB=0,parB=0,nepB=0,klaC=0,zapC=0,parC=0,nepC=0;
bool otvorenieInsuboru(){
ifstream insubor("C:\\Users\\JURO\\Desktop\\Zadanie\\vstup.txt");
bool inopen=false;
if (insubor. is_open()){
inopen=true;
}
return inopen;
}
void nacitajmaticeAB (int **maticaA,int **maticaB,int m,int n){
ifstream insubor("C:\\Users\\JURO\\Desktop\\Zadanie\\vstup.txt");
ofstream outsubor("C:\\Users\\JURO\\Desktop\\Zadanie\\vystup.txt");
insubor.open("C:\\Users\\JURO\\Desktop\\Zadanie\\vstup.txt");
insubor >> m >> n;
cout<<"nacitana matica A"<<endl;
outsubor <<"nacitana matica A"<<endl;
maticaA = new int*[m];
for(int i = 0; i < m; i++) {
maticaA[i] = new int[n];
for(int j = 0; j < n; j++){
insubor >> maticaA[i][j];
if (maticaA[i][j] >0) {klaA=klaA+1;}
else {zapA=zapA+1;}
if (abs(maticaA[i][j])%2==0) {parA=parA+1;}
else {nepA=nepA+1;}
cout.width(2);
cout<<maticaA[i][j]<<"\t";
outsubor .width(2);
outsubor <<maticaA[i][j]<<"\t";
};
outsubor <<endl;
cout<<endl;
}
cout<<endl;
cout<<"nacitana matica B"<<endl;
outsubor <<"nacitana matica B"<<endl;
maticaB = new int*[m];
for(int i = 0; i < m; i++) {
maticaB[i] = new int[n];
for(int j = 0; j < n; j++){
insubor >> maticaB[i][j];
if (maticaB[i][j] >0) {klaB=klaB+1;}
else {zapB=zapB+1;}
if (abs(maticaB[i][j])%2==0) {parB=parB+1;}
else {nepB=nepB+1;}
cout.width(2);
cout<<maticaB[i][j]<<"\t";
outsubor .width(2);
outsubor <<maticaB[i][j]<<"\t";
};
outsubor <<endl;
cout<<endl;
}
cout<<endl;
insubor.close();
}
void rozdielmaticAB(int **maticaA,int **maticaB,int **maticaC,int m,int n){
ifstream insubor("C:\\Users\\JURO\\Desktop\\Zadanie\\vstup.txt");
ofstream outsubor("C:\\Users\\JURO\\Desktop\\Zadanie\\vystup.txt");
insubor >> m >> n;
maticaA = new int*[m];
for(int i = 0; i < m; i++) {
maticaA[i] = new int[n];
for(int j = 0; j < n; j++){
insubor >> maticaA[i][j];
}
}
maticaB = new int*[m];
for(int i = 0; i < m; i++) {
maticaB[i] = new int[n];
for(int j = 0; j < n; j++){
insubor >> maticaB[i][j];
}
}
cout<<"Rozdiel matic A a B"<<endl;
outsubor <<"Rozdiel matic A a B"<<endl;
maticaC = new int*[m];
for(int i = 0; i < m; i++) {
maticaC[i] = new int[n];
for(int j = 0; j < n; j++){
maticaC[i][j]=maticaA[i][j]-maticaB[i][j];
if (maticaC[i][j] >0) {klaC=klaC+1;}
else {zapC=zapC+1;}
if (abs(maticaC[i][j])%2==0) {parC=parC+1;}
else {nepC=nepC+1;}
cout.width(2);
cout<<maticaC[i][j]<<"\t";
outsubor .width(2);
outsubor <<maticaC[i][j]<<"\t";
};
cout<<endl;
outsubor <<endl;
}
cout<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
ifstream insubor("C:\\Users\\JURO\\Desktop\\Zadanie\\vstup.txt");
ofstream outsubor("C:\\Users\\JURO\\Desktop\\Zadanie\\vystup.txt");
int **maticaA=NULL;
int **maticaB=NULL;
int **maticaC=NULL;
int m;
int n;
otvorenieInsuboru();
if (otvorenieInsuboru()==true){;} else {cout<<"nepodarilo sa otvorit vstupny subor"<<endl;system ("pause");}
insubor >> m >> n;
nacitajmaticeAB(maticaA,maticaB,m,n);
rozdielmaticAB(maticaA,maticaB,maticaC,m,n);
outsubor<<endl;
outsubor<<"Matica A: kladnych="<<klaA<<", zapornych="<<zapA<<", parnych="<<parA<<", neparnych="<<nepA<<endl;
outsubor<<"Matica B: kladnych="<<klaB<<", zapornych="<<zapB<<", parnych="<<parB<<", neparnych="<<nepB<<endl;
outsubor<<"Matica A-B: kladnych="<<klaC<<", zapornych="<<zapC<<", parnych="<<parC<<", neparnych="<<nepC<<endl;
cout<<"Matica A: kladnych="<<klaA<<", zapornych="<<zapA<<", parnych="<<parA<<", neparnych="<<nepA<<endl;
cout<<"Matica B: kladnych="<<klaB<<", zapornych="<<zapB<<", parnych="<<parB<<", neparnych="<<nepB<<endl;
cout<<"Matica A-B: kladnych="<<klaC<<", zapornych="<<zapC<<", parnych="<<parC<<", neparnych="<<nepC<<endl;
return 0;
}