ОАиП 2 Семестр / 8 подпрограммы
.docСоставить графическую схему алгоритма и программу для вычисления значений переменных в соответствии с условием, приведенном в табл.1.1.
Вычисление значений переменных оформить в виде подпрограммы, в которую передать исходные данные в виде входных параметров через заголовок функции. Один из результатов передать из функции через заголовок как выходной параметр, а второй результат возвратить из функции по оператору return.
Исходные данные для отладки программы подобрать самостоятельно.
11 |
Площадь основания и объем цилиндра с радиусом основания r и высотой h. |
S = r 2 V=Sh |
float Formuli(float r, float h, float &v); // Объявление функции
#include <stdio.h>
#include <math.h>
main()
{
float rr,hh,ss,vv;
puts("vvedite radius osnovania cilindra");
scanf("%f",&rr);
puts("vvedite visoty cilindra");
scanf("%f",&hh);
ss=Formuli(rr,hh,vv);
printf("S=%.5f,V=%.5f\n",ss,vv);
fflush(stdin);
getchar();
}
/* Описание функции Formuli(float r, float h, float &v) */
float Formuli(float r, float h, float &v)
{
float S;//площадь
S=M_PI*r*r;
v=S*h;//объём
return (S);
}
S=M_PI*r*r
v=S*h
2.2 Задача 2. Передача одномерных массивов в функцию
Листинг программы и результаты её выполнения:
11 |
Вычислить значение функции Q = ln a -2 b + sin c, где a, b, c - суммы отрицательных элементов массивов X, Y и P, соответственно. |
Листинг программы:
#include <stdio.h>
#include <conio.h>
#include <math.h>
//Вычислить значение функции
//Q = ln a -2 b + sin c, где a, b, c - суммы отрицательных элементов массивов X, Y и P, соответственно.
/*Описание функции vvodm*/
void vvodm(int *p,int *n,char simv)
{
int i;
printf("Vvedite kolichestvo elementov massiva %c ",simv);
scanf("%d",n);
for(i=0;i<*n;i++)
{
printf("Vvedite %c[%2d]= ",simv,i+1);
scanf("%d",&p[i]);
}
}
/*Описание функции vivodm*/
void vivodm(int *p, int *n, char simv)
{
int i;
printf("Massiv %c:\n",simv);
for(i=0;i<*n;i++)
printf("%c[%2d] = %d\n",simv,i+1,p[i]);
}
int SummOtr(int *p,int *n)//сумма отрицательных элементов массива
{
int i,j,sum;
sum=0;
for (i=0;i<*n;i++)
{
if(p[i]<0)
{
sum=sum+p[i];
}
}
return(sum);
}
//ф-ция для расчёта Q = ln a -2 b + sin c
float Q(int a,int b,int c)
{
return (log(fabs(a))-2*b+sin(c));
}
main()
{
int X[50];
int Y[50];
int P[50];
int m,n,k,//размеры массивов
a,b,c;
float q;//результат вычисления выражения
//Ввод массивов
vvodm(X,&n,'X');
vvodm(Y,&m,'Y');
vvodm(P,&k,'P');
//Вывод массивов
vivodm(X,&n,'X');
vivodm(Y,&m,'Y');
vivodm(P,&k,'P');
a=SummOtr(X,&n);
b=SummOtr(Y,&m);
c=SummOtr(P,&k);
printf("\nSummi otricatelnix chisel massiva = %d, %d, %d",a,b,c);
if(a!=0)
{
q=Q(a,b,c);
printf("\nRezultat vichislenia = %.5f",q);
}
else printf ("\n Znachenie funkcii ne moget bit vichisleno!");
getch();
return(0);
}