|
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ ЭЛЕКТРОНИКИ И АВТОМАТИКИ
(ТЕХНИЧЕСКИЙ УНИВЕРСИСТЕТ)»
Лабораторная работа №3
по дисциплине «Информатика»
(2 семестр)
вариант №3
Выполнила: студентка 1 курса
Факультета РТС
Группы РРБВ 1-14
Антипина А.Д.
Задание №1
Дана матрица действительных чисел размера m x n. Переформировать матрицу таким образом, чтобы ее строки располагались в порядке невозрастания сумм модулей нечетных элементов строк.
Код программы:
#include <iostream>
using namespace std;
#include <time.h>
double RangedRand(int range_min,int range_max);
double conv(double in){
if(in<0) return in*-1;
else return in;
}
int main(){
FILE *file=fopen("log.txt","w");
int sizeM,sizeN;
cout<<"Enter size, M x N. M:"<<endl;
cin>>sizeM;
cout<<"N:"<<endl;
cin>>sizeN; //ставим сид от времени
srand((unsigned)time(NULL)); //массив массивов
double **Matrix=(double**)malloc(sizeM*sizeof(double));
for(int i=0;i<sizeM;i++) Matrix[i]=(double*)malloc(sizeN*sizeof(double));
//заполняем рандомом
fprintf(file,"Matrix\n");
for(int m=0;m<sizeM;m++){
for(int n=0;n<sizeN;n++){
Matrix[m][n]=RangedRand(-100,100);
fprintf(file,"%.3f ",Matrix[m][n]);
cout<<Matrix[m][n]<<" ";
}
cout<<endl;
fprintf(file,"\n");
} //сумма отриц элементов столбцов
cout<<"sum"<<endl;
fprintf(file,"Sum\n");
double *iSum=(double*)malloc(sizeN*sizeof(double));
for(int m=0;m<sizeN;m++){
iSum[m]=0;
for(int n=0;n<sizeM;n++)
if((n+1)%2==1)
iSum[m]+=conv(Matrix[m][n]);
fprintf(file,"%.3f ",iSum[m]);
cout<<iSum[m]<<" ";
} //массив сумм переделываем в порядке возрастания
int search,top;
double *pTemp,iTemp;
for(top=0;top<sizeN-1;top++)
for(search=top+1;search<sizeN;search++)
if(iSum[search]>iSum[top]){ //сортируем сумму
iTemp=iSum[search];
iSum[search]=iSum[top];
iSum[top]=iTemp;
pTemp=Matrix[search];
Matrix[search]=Matrix[top];
Matrix[top]=pTemp;
} //выводим
fprintf(file,"\nSorted sum\n");
cout<<endl<<"sort sum"<<endl;
for(int m=0;m<sizeM;m++){
fprintf(file,"%.3f ",iSum[m]);
cout<<iSum[m]<<" ";
}
fprintf(file,"\nComplete matrix\n");
cout<<endl<<"comp"<<endl;
for(int m=0;m<sizeM;m++){
for(int n=0;n<sizeN;n++){
cout<<Matrix[m][n]<<" ";
fprintf(file,"%.3f ",Matrix[m][n]);
}
fprintf(file,"\n");
cout<<endl;
}
free(iSum);
for(int i=0;i<sizeM;i++) free(Matrix[i]);
free(Matrix);
fclose(file);
cout<<"Press any key to exit..."<<endl;
getchar();
getchar();
return 0;
}
double RangedRand(int range_min,int range_max)
{
double u=(double)rand()/(RAND_MAX + 1)*(range_max - range_min)+range_min;
return u;
}
Результат:
Задание №2
Дана матрица натуральных чисел размера m x n. Разработать функцию, определяющую количество отрицательных элементов в матрице, расположенных в строках, содержащих нулевые элементы.
Код программы:
#include <iostream>
using namespace std;
int main(){
FILE *file=fopen("log.txt","w");
int sizeM,sizeN; //N - столбцы
cout<<"Enter size, M x N. (N-column)"<<endl<<"M:"<<endl;
cin>>sizeM;
cout<<"N:"<<endl;
cin>>sizeN;
int **Matrix=(int**)malloc(sizeM*sizeof(int));
for(int i=0;i<sizeM;i++) Matrix[i]=(int*)malloc(sizeN*sizeof(int));
//заполняем матрицу
cout<<"Matrix:"<<endl;
fprintf(file,"Matrix:\n");
for(int m=0;m<sizeM;m++){
for(int n=0;n<sizeN;n++){
cin>>Matrix[m][n];
fprintf(file,"%d ",Matrix[m][n]);
}
fprintf(file,"\n");
}
int counter=0;
bool null=false;
for(int m=0;m<sizeM;m++){
for(int n=0;n<sizeN;n++)
if(Matrix[m][n]==0)
null=true;
if(null){
for(int n=0;n<sizeN;n++)
if(Matrix[m][n]<0)
counter++;
}
null=false;
}
cout<<"Ans: "<<counter<<endl;
for(int i=0;i<sizeM;i++) free(Matrix[i]);
free(Matrix);
fclose(file);
cout<<"Press any key to exit..."<<endl;
getchar();
getchar();
return 0;
}
Результат:
Дата добавления: 2015-10-21; просмотров: 19 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
| | Номер варианта соответствует последней цифре в номере зачетной книжки (студ. билета) |