Каранин Алексей 08-ПМ Лабораторная работа 10 Одномерные массивы Задани

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
Каранин Алексей 08-ПМ
Лабораторная работа 10
Одномерные массивы
Задание: Дан одномерный массив a вещественного типа, состоящий из n элементов.
Найти наименьший из положительных элементов массива(значение и индекс).
Исходный массив и полученный результат вывести на печать. Предусмотреть вывод сообщения, когда
положительных элементов нет.
*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
void main()
{
double *a;
int n,i,j,j_;
FILE *fin, *fout;
fin=fopen("10_in.txt","r");
if (fin==NULL)
{printf("Can't open file 10_in.txt\n"); exit(1);}
fout=fopen("10_out.txt","w");
if (fout==NULL)
{printf("Can't open file 10_out.txt\n"); exit(1);}
fscanf(fin,"%d",&n);
a=(double *)malloc(n*sizeof(double));
if (a==NULL) {printf("Can't allocate memory\n");exit(1);}
for (i=0; i<n; i++)
fscanf(fin, "%lf", &a[i]);
fprintf(fout,"Исходный массив: ");
for (i=0; i<n; i++)
fprintf(fout, "%5.1lf ", a[i]);
j=-1;
for (i=0; i<n; i++) if (a[i]>0) {j=a[i]; j_=i;}
if (j==-1){ fprintf(fout, "\n Положительных элементов нет.");exit(0);}
for (i=0; i<n; i++) if ((a[i]<a[j_])&&(a[i]>0)) j_=i;
fprintf(fout, "\n a[%d]=%5.1lf - минимальный положительный эл-т",j_,a[j_]);
}