Практические / Отчеты студентов 2011-2012 / ВТ-11 Лр / Суковатова / лаба10
.docМОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЛЕСА
Факультет электроники и системотехники.
Лабораторная работа № 10
по программированию на языке высшего уровня С
Тема: «Файлы»
Выполнил студент: Суковатова Л.Н.
ВТ-11
Проверил: Ларионов Н.В.
Москва 2012 г.
1. Условия задания:
Написать программу создания файла,списывания из файла,обработка массива и записывание массива в конец исходного файла.
Вариант 10
в одномерном массиве, состоящем из п целых элементов, вычислить:
1) минимальный по модулю элемент массива;
2) сумму модулей элементов массива, расположенных после первого элемента,
равного нулю.
Преобразовать массив таким образом, чтобы в первой его половине располага-лисьэлементы, стоявшие в четных позициях, а во второй половине — элементы,
стоявшие в нечетных позициях.
2. Данные: а) Исходные: a[i]
б) Рабочие: k
в) Выходные:min, s, b[j]
3. Листинг программы:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <time.h>
#define N 10
void generate_elements(int a[]);
void print_elements(int a[]);
int find_min(int a[]);
int find_summ(int a[]);
void sort(int a[]);
int a[N];
int main()
{
FILE* file;
int result,i;
char str[10];
file = fopen("file.dat","w");
if (file == NULL)
{
fprintf(stderr,"Cannot open file for write\n");
getch();
return -1;
}
generate_elements(a);
print_elements(a);
result = find_min(a);
printf("Minimalny element massiva raven %d\n",a[result]);
result = find_summ(a);
printf("Summa elementov massiva posle pervogo nulya ravna %d\n",result);
sort(a);
for (i = 0;i < N;i++)
fprintf(file,"%d ",a[i]);
fclose(file);
printf("===========SORTED=================\n");
file = fopen("file.dat","r");
if (file == NULL)
{
fprintf(stderr,"Cannot open file for read\n");
getch();
return - 1;
}
for(i = 0;i < N;i++)
{
fscanf(file,"%d ",&result);
printf("%d ",result);
}
// print_elements(a);
fclose(file);
getch();
return 0;
}
void generate_elements(int a[])
{
int i;
time_t t;
srand(time(&t));
for(i = 0;i < N;i++)
a[i] = rand() % 100;
}
void print_elements(int a[])
{
int i;
for (i = 0;i < N;i++)
printf("%d ",a[i]);
printf("\n");
}
int find_min(int a[])
{
int i;
int min,index;
min =fabs( a[0]);
for(i = 1;i < N;i++)
if (a[i] < min)
{
min = fabs(a[i]);
index = i;
}
return index;
}
int find_summ(int a[])
{
int i,first_zeroi = N;
int summ = 0;
for(i = 0;i < N;i++)
if (a[i] == 0)
{
first_zeroi = i;
break;
}
// printf("first_zeroi = %d\n",first_zeroi);
for(i = first_zeroi;i < N;i++)
{
summ += fabs(a[i]);
// printf("!");
}
return summ;
}
void sort(int a[])
{
int a2[N];
int i,j = 0;
for(i = 0;i < N;i+=2)
{
a2[j] = a[i];
j++;
}
j=5;
for(i = 1;i < N;i+=2)
{
a2[j] = a[i];
j++;
}
for(i = 0;i < N;i++)
for(j=0;j<N;j++)
a[i] = a2[j];
}