Приклади
1.Скласти програму для обчислення
#include <stdio.h> #include<math.h>
void vvod (float a[], int n, char q); float sum (float b[], int m);
void main()
{
float x[5],y[4], z[7], c; vvod(x,5,'x'); vvod(y,4,'y'); vvod(z,7,'z');
c=sum (x,5)/sum (y,4)+log(sum (z,7)); printf ("c=%f\n", c);
}
void vvod(float a[],int n,char q)
{
int i;
printf("масив %c:\n",q); for (i=0;i<n;i++)
{
printf("%c[%i]=",q,i);
scanf("\n%f",&a[i]);
}
}
float sum (float b[],int m)
{
int k; float r=0; for (k=0;k<m;k++) r+=b[k]; return(r);
}
2. Для трьох одновимірних масивів різної довжини знайти найбільший елемент, найменший елемент та їх номери, використовуючи для цього функцію. До неї передаємо масив та кількість елементів, а отримуємо максимальний і
мінімальний елементи та їх номери.
#include<stdio.h>
void vvod(int a[],int n,char q);
void fn(int a[],int n,int *max,int *min,int *n1,int *n2, char k);
void main()
{
int x[3], y[4], z[5], max, min, n1, n2;
vvod(x, 3, 'x'); vvod(y, 4, 'y'); vvod(z, 5, 'z'); fn(x, 3, &max, &min, &n1, &n2, 'x');
fn(y, 4, &max, &min, &n1, &n2, 'y'); fn(z, 5, &max, &min, &n1, &n2, 'z');
}
void vvod (int a[],int n,char q)
{
int i;
printf ("масив %c:\n", q); for (i=0; i<n; i++)
{ printf ("%c[%i]=", q, i); scanf ("\n%i", &a[i]);
}
}
void fn (int a[], int n, int *max, int *min, int *n1, int *n2, char k)
{
int i;
*min=а[0]; *max= а[0]; *n1=0; *n2=0;
for (i=0; i<n; i++)
if (a[i]>*max) { *max=a[i]; *n1=i;
}
else if ( a[i]<*min)
{ *min=a[i]; *n2=i; }
printf ("макс. елем. %c:max=%i, його номер n2=%i \n мінім. елем. %c:min=%i, його номер n2=%i \n", k, *max, *n1, k, *min, *n2);
}
3. Передача двовимірного масиву розміром mn
#include<stdio.h>
int sum (int n, int m, int *p)
{
int i,j,s=0; for(i=0;i<n;i++)
for(j=0;j<m;j++)
s+=p[i*m+j]; return (s); }
void main( )
{
int s1=0;
int a[2][3]={{1,2,7},{3,4,5}}; int *p;
p=(int*) a;
s1= sum(2,3,p); printf(«s1=%i \n», s1);
}