Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Галкин / Лабораторная работа N10
.docxМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЛЕСА
Факультет электроники и системотехники.
Лабораторная работа № 10
по программированию на языке высшего уровня С
Тема: «Файлы»
Выполнил студент: Галкин И.В. ВТ-11
Проверил: Ларионов Н.В.
Москва 2012
Написать программу создания файла,списывания из файла,
обработка массива и записывание массива в конец исходного файла.
в одномерном массиве, состоящем из п вещественных элементов, вычислить:
1) произведение отрицательных элементов массива;
2) сумму положительных элементов массива, расположенных до максимального
элемента.
Изменить порядок следования элементов в массиве на обратный.
Листинг программы:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 30
float a[N];
void generate_elements();
void print_elements();
int naity_proizvedenie();
int naity_summu();
int find_max();
void sort();
int main()
{
int i = 0;
FILE* file;
float proizv,summ,chislo;
generate_elements();
file = fopen("file.dat","w");
if (file == 0)
{
fprintf(stderr,"Cannot open file for write");
getch();
exit(-1);
}
print_elements();
proizv = naity_proizvedenie();
summ = naity_summu();
printf("Proizvedenie otricatelnyh elementov masiva ravno %f\n",proizv);
printf("Summa polojitelnyh elementov massiva raspolojennyh do max ravno: %f\n",summ);
sort();
for(i = 0;i < N;i++)
fprintf(file,"%.2f ",a[i]);
printf("===============SORTED=================\n");
// print_elements();
fclose(file);
file = fopen("file.dat","r");
if (file == 0)
{
fprintf(stderr,"Cannot open file for read");
getch();
exit(-1);
}
for(i = 0;i < N;i++)
{
fscanf(file,"%f ",&chislo);
printf("%f\t",chislo);
}
getch();
fclose(file);
return 0;
}
void generate_elements()
{
time_t t;
int i;
srand(time(&t));
for(i = 0;i < N;i++)
{
a[i] = rand() % 100;
if (rand() % 2 != 0)
a[i] *= -1;
}
}
void print_elements()
{
int i;
for(i = 0;i < N;i++)
printf("%f\t",a[i]);
}
int naity_proizvedenie()
{
int proizv = 1;
int i;
for (i = 0;i < N;i++)
{
if (a[i] < 0)
proizv *= a[i];
}
return proizv;
}
int find_max()
{
int imax,i,max;
imax = 0;
max = a[0];
for(i = 0;i < N;i++)
if (a[i] > max)
{
max = a[i];
imax = i;
}
return imax;
}
int naity_summu()
{
int i,summ = 0;
int imax = find_max();
for (i = 0;i < imax;i++)
if (a[i] > 0)
summ += a[i];
return summ;
}
void sort()
{
int barer = N / 2;
float x;
int i,j = N - 1;
for(i = 0;i < barer;i++)
{
x = a[i];
a[i] = a[j];
a[j] = x;
j--;
}
}