Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Баранова / Лаба 11
.docМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЛЕСА
Факультет электроники и системотехники.
Лабораторная работа № 11
по программированию на языке высшего уровня С
Тема: «Динамическая память»
Выполнил студент: Баранова Н.Г. ВТ-11
Проверил: Ларионов Н.В.
Москва 2011 г.
-
Условия задания:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1)max элемент массива;
2)сумму элементов массива, расположенных до последнего положительного элемента;
Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.
-
Данные:
Входные данные: i, a[10]
Рабочие данные: max, s.
-
Схема программы:
Листинг программы:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int maxi(int *a,int n);
int sum(int *a,int n);
void sort(int *a,int n);
main(){
const int N=10;
int *A;
A = new int [N];
int m,ss,i;
///////////////////////vvod
printf ("Vvesti a[n]\n");
for (i=0; i<N; i++)
scanf ("%d", &A[i]);
//////////////////////max
m=maxi(A,N);
printf("max=%d\n",m);
//////////////////////sum
ss=sum(A,N);
printf("sum=%d\n",ss);
////////////////////
sort(A,N);
for(i=0;i<N;i++)
printf("%d ",A[i]);
//////////////////
delete A;
system("pause");
return 0;
}
//////////////////////////
int maxi(int *a,int n){
int max=0;
for(int i=0; i<n; i++)
if (a[i]>max)
max=a[i];
return max;
}
//////////////////////////
int sum(int *a,int n){
int s=0;
int i;
int k;
for(i=0; i<n; i++)
if( a[i]>0)k=i;
for(i=0; i<k; i++)
s=s+a[i];
return s;
}
////////////////////////////
void sort(int *a,int n){
int *temp;
temp=new int [n];
int j=0;
int i;
int c,b;
printf("vvedite b,c\n");
scanf("%d%d",&b,&c);
for(i=0;i<n;i++){
temp[i]=0;
if ((fabs(a[i])<b)||(fabs(a[i])>c)){
temp[j]=a[i];
j++;
}
}
for(int i=0;i<n;i++){
a[i]=temp[i];
}
delete temp;
}
-
Тестовые задания:
Вводить массив
1 2 3 -3 -2 -1 2 9 0 -3
и тогда
макс 9
сумма 2