Задача №684
В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент, Получить квадратную матрицу порядка n-1 путем выбрасывания из исходной матрицы какой-нибудь строки и столбца, на пересечении которых расположен элемент с найденным значением
Алгоритм:
Задаем массив
Запрашиваем и вводим n
Вводим первый массив
Находим максимальное число в массиве
Записываем второй массив n-1xn-1
Выводим оба массива
#include<vcl.h> // Я не знаю что это означает, оно автоматически задается вBuilder6
#pragmahdrstop// Я не знаю что это означает, оно автоматически задается вBuilder6
#pragmaargsused// Я не знаю что это означает, оно автоматически задается вBuilder6
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<iomanip.h>
void main()
{
int n;
int i,j;
int i0,j0;
double masA[50][50]; //заданный массив nxn
double masB[49][49]; //получаемый из первого массив
double max;
cout<<"vvedite 0<n<=50"<<endl; // запрос, ввод и проверка n.
cin>>n;
while(n>50||n==0||n<0){
cout<<"Error! 0<n<=50"<<endl;
cout<<"vvedite 0<n<=50"<<endl;
cin>>n;}
cout<<"vvedite massiv nxn"<<endl; // ввод первого массива
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>masA[i][j];
max=masA[0][0]; // нахождение максимального числа в массиве
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(masA[i][j]>max){
max=masA[i][j];
i0=i;
j0=j;
}
for(i=0;i<n-1;i++) //запись второго массива n-1xn-1,
for(j=0;j<n-1;j++){
if(i<i0&&j<j0)
masB[i][j]=masA[i][j];
else if(i<i0&&j>=j0)
masB[i][j]=masA[i][j+1];
else if(i>=i0&&j<j0)
masB[i][j]=masA[i+1][j];
else if(i>=i0&&j>=j0)
masB[i][j]=masA[i+1][j+1];
}
cout<<setprecision(4); //форматирование
cout<<"vvedenniy massiv"<<endl; // вывод на экран обоих массивов
for(i=0;i<n;i++){
for(j=0;j<n;j++)
cout<<setw(6)<<masA[i][j]<<" ";
cout<<endl;
}
cout<<"max znachenie i koordinati"<<endl;
cout<<"max="<<max<<" "<<"i="<<i0+1<<" "<<"j="<<j0+1<<endl;
cout<<"noviy massiv"<<endl;
for(i=0;i<n-1;i++){
for(j=0;j<n-1;j++)
cout<<setw(6)<<masB[i][j]<<" ";
cout<<endl;
}
ofstream ptk("k584.txt"); //объявление потока записи в файл
if(ptk==0)cout<<"error otkr faila"<<endl;
ptk<<setprecision(4); //форматирование
ptk<<"vvedenniy massiv"<<endl; // вывод в файл обоих массивов
for(i=0;i<n;i++){ for(j=0;j<n;j++)
ptk<<setw(6)<<masA[i][j]<<" ";
ptk<<endl;
}
ptk<<"max znachenie i koordinati"<<endl;
ptk<<"max="<<max<<" "<<"i="<<i0+1<<" "<<"j="<<j0+1<<endl;
ptk<<"noviy massiv"<<endl;
for(i=0;i<n-1;i++){
for(j=0;j<n-1;j++)
ptk<<setw(6)<<masB[i][j]<<" ";
ptk<<endl;
}
getch();
}
Тест:
vvedite 0<n<=50
3
vvedite massiv nxn
1 1 1
2 2 2
3 3 3
vvedenniy massiv
1 1 1
2 2 2
3 3 3
max znachenie i koordinati
max=3 i=3 j=1
noviy massiv
1 1
2 2
Задача № 406
Пусть задан вектор х (х1, х2, х3… хn). Составить подпрограмму-функцию для вычисления величины.
N=0, если х1≠0
N=n, если х1= х2= х3=…- хn=0
N=m, если х1= х2= х3=…=хm=0 и хm+1≠0 (m<n)
Алгоритм:
Ввод
Запрос числа элементов массива
Запрос и ввод массива
Эхо-вывод на экран массива
Объявление потока вывода в файл
#include<vcl.h> // Я не знаю что это означает, оно автоматически задается вBuilder6
#pragmahdrstop// Я не знаю что это означает, оно автоматически задается вBuilder6
#pragmaargsused// Я не знаю что это означает, оно автоматически задается вBuilder6
#include<iostream.h>
#include<conio.h>
#include<fstream.h>
int N(int n, double X[]); // прототип ф-ции
int N(int n, double X[])
{
int i;
int result=-1;
if(X[0]!=0)
result=0;
else{
result=0;
for(i=0;i<n;i++){
if(X[i]==0)
result=i+1;
else{
result=i;
break;
}
}
}
return result;
}
void main(){
int n;
int i;
double X[100];
cout<<"vvedite 0<n<=100"<<endl; //запрос числа элементов массива
cin>>n; //ввод
while(n>100||n==0||n<0){
cout<<"Error! 0<n<=100"<<endl;
cout<<"vvedite 0<n<=100"<<endl;
cin>>n;} //проверка n<=100 и n=0
cout<<"vvedite massiv X:"<<endl; //запрос и ввод массива
for(i=0;i<n;i++)
cin>>X[i];
cout<<"vvedenniy massiv:"<<endl; //эхо-вывод на экран массива
for(i=0;i<n;i++) // и значения ф-ции
cout<<X[i]<<" ";
cout<<endl;
cout<<"function N="<<N(n,X)<<endl;
ofstream ptk("k106.txt"); //oбъявления потока вывода в файл
if(ptk==0)cout<<"error otkr faila"<<endl; //проверка открытия файла
ptk<<"vvedenniy massiv:"<<endl; //эхо-вывод в файл массива
for(i=0;i<n;i++)
ptk<<X[i]<<" ";
ptk<<endl;
ptk<<"function N="<<N(n,X)<<endl;
getch();
}
Тест: vvedenniy massiv:
1 0 0 0
function N=0
Номер задачи |
Входные данные |
Выходные данные для С++ |
Выходные данные для MathCAD |
9 |
Страница 3 |
Страница 4 |
Страница 1.1 |
116 г |
Страница 4 |
Страница 6 |
Страница 1.2 |
555 |
Страница 6 |
Страница 9 |
Страница 1.3 |
684 |
Страница 9 |
Страница 12 |
|
406* |
Страница 13 |
Страница 16 |
|
Список литературы:
Разработка программ на C++ при выполнении курсовых и лабораторных работ (методические указания) Назарова М.В.
Borland C++ Builder. Освой самостоятельно
"Программирование в C++ Builder 6" (с) Архангельский А.Я.