УНИВЕРСИТЕТ ПО АРХИТЕКТУРА, СТРОИТЕЛСТВО и ГЕОДЕЗИЯ
КАТЕДРА „АВТОМАТИЗАЦИЯ НА ИНЖЕНЕРНИЯ ТРУД”
__________________________________________________________________________________________
КУРСОВА ЗАДАЧА
по ПИИС
на Иван Петров Иванов
студент от специалност ССС, I курс,
10 група, ф. № 11222
Дата: ..................... Проверил: .........................
/гл. ас. арх. Стоянка Иванова/
Условие:
Дадена е матрица Х с М реда и N стълба, съставена от реални елементи, записани в текстов файл.
4.1. Да се разменят съответните елементи от първия и последния ред на матрицата.
4.2. Да се разменят съответните елементи от първия и последния стълб на матрицата.
Получената матрица да се запише в нов файл.
// Първи етап – цялата задача в главна функция
#include
const Nmax=30;
float X[Nmax][Nmax];
int M, N;
void main () { // главна функция
int i, j;
do {
cout<<"Брой редове М="; cin>>M; }
while (M<2 || M>Nmax);
do {
cout<<"Брой стълбове N="; cin>>N; }
while (N<2 || N>Nmax);
for (i=0; i
for (j=0; j
cout<<"X["<>X[i][j];
}
float t;
// размяна на съдържанието на редове 0 u M-1
for (int j=0; j
t=X[0][j]; X[0][j]=X[M-1][j]; X[M-1][j]=t;
}
// размяна на съдържанието на стълбове 0 u N-1
for (int i=0; i
t=X[i][0]; X[i][0]=X[i][N-1]; X[i][N-1]=t;
}
// извеждане на променената матрица на екрана
cout<<"Променена матрица:\n";
for (i=0; i
for (j=0; j
cout<
cout<
}
}
// Втори етап – използване на функции
#include
const Nmax=30;
float X[Nmax][Nmax];
int M, N;
int Input_N(char prompt[30], int Min, int Max) {
// функция за въвеждане на брой редове или брой стълбове в зададен диапазон
int N;
do {
cout <
>N;
}
while (NMax);
return N;
}
void Input_Matrix(char name, int M, int N, float A[Nmax][Nmax]) {
// функция за въвеждане на матрица от клавиатура
for (int i=0; i
for (int j=0; j
cout<>A[i][j];
}
}
void Write_Matrix(char name[30], int M, int N, float A[Nmax][Nmax]) {
// функцията извежда матрица на екрана
cout<<"Matrix "<
for (int i=0; i
for (int j=0; j
cout<
cout<
}
}
void swap_float(float &a, float &b) {
// функцията разменя стойностите на две променливи чрез псевдоними
float c;
c=a; a=b; b=c;
}
void Exchange_Rows(int i1, int i2, int N, float A[Nmax][Nmax]) {
// функцията разменя съдържанието на ред i1 и ред i2
for (int j=0; j
swap_float(A[i1][j],A[i2][j]);
}
void Exchange_Columns(int j1, int j2, int M, float A[Nmax][Nmax]) {
// функцията разменя съдържанието на стълб j1 и стълб j2
for (int i=0; i
swap_float(A[i][j1],A[i][j2]);
}
void main () { // главна функция, вика останалите функции
// въвеждане на входни данни
M=Input_N("Брой редове М=", 2, Nmax); // въвежда брой редове
N=Input_N("Брой стълбове N=", 2, Nmax); // въвежда брой стълбове
Input_Matrix('X', M, N, X); // въвежда матрица от клавиатурата
// изчислителна част
Exchange_Rows(0,M-1,N,X); // разменя елементите от първия и последния ред
Exchange_Columns(0,N-1,M,X); // разменя елементите от първия и последния стълб
// извеждане на резултата
Write_Matrix("X - modified",M,N,X); // извежда променената матрица на екрана
}
// Трети етап – използване на функции и файлове
#include
const Nmax=30;
float X[Nmax][Nmax];
int M, N;
void Open_Matrix(char fname[30], int &M, int &N, float A[Nmax][Nmax]) {
// функцията чете матрица от файл
ifstream fin(fname,ios::in);
fin>>M>>N;
for (int i=0; i
for (int j=0; j
fin>>A[i][j];
fin.close();
}
void Write_Matrix(char name[30], int M, int N, float A[Nmax][Nmax]) {
// функцията извежда матрица на екрана
cout<<"Matrix "<
for (int i=0; i
for (int j=0; j
cout<
cout<
}
}
void swap_float(float &a, float &b) {
// функцията разменя стойностите на две променливи чрез псевдоними
float c;
c=a; a=b; b=c;
}
void Exchange_Rows(int i1, int i2, int N, float A[Nmax][Nmax]) {
// функцията разменя съдържанието на ред i1 и ред i2
for (int j=0; j
swap_float(A[i1][j], A[i2][j]);
}
void Exchange_Columns(int j1, int j2, int M, float A[Nmax][Nmax]) {
// функцията разменя съдържанието на стълб j1 и стълб j2
for (int i=0; i
swap_float(A[i][j1], A[i][j2]);
}
void Save_Matrix(char fname[30], int M, int N, float A[Nmax][Nmax]) {
// функцията записва матрица в нов файл
ofstream fout(fname,ios::out);
fout<
for (int i=0; i
for (int j=0; j
fout<
fout<
}
fout.close();
}
void main () { // главна функция, вика останалите функции
// въвеждане на входните данни от файл
Open_Matrix("d:\\matrix.txt", M, N, X); // чете матрица от файл
// контролно извеждане на прочетената матрица на екрана
Write_Matrix("X - original",M,N,X); // извежда матрицата на екрана
// изчислителна част
Exchange_Rows(0,M-1,N,X); // разменя елементите от първия и последния ред
Exchange_Columns(0,N-1,M,X); // разменя елементите от първия и последния стълб
// извеждане на резултата на екрана и във файл
Write_Matrix("X - modified",M,N,X); // извежда променената матрица на екрана
Save_Matrix("d:\\matrix-new.txt", M, N, X); // записва променената матрица във файл
}
Файл с входни данни: d:\matrix.txt
3 4
1 2 3 4
5 6 7 8
9 10 11 12
Резултати: файл d:\matrix-new.txt
3 4
12 10 11 9
8 6 7 5
4 2 3 1
2>2>
Сподели с приятели: |