Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Государственное образовательное учреждение



ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ ЭЛЕКТРОНИКИ И АВТОМАТИКИ

(ТЕХНИЧЕСКИЙ УНИВЕРСИСТЕТ)»

 

Лабораторная работа №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 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
 | Номер варианта соответствует последней цифре в номере зачетной книжки (студ. билета)

mybiblioteka.su - 2015-2024 год. (0.009 сек.)