Народ, подскажите, пожалуйста, что "не так" в проге. Не считает значение В и вылетает. Буду благодарен. Задание: Вычисление B= (X+Y)/(Y+Z), где X-кол-во элементов, лежащих в интервале (-2.5 -3.4), Y-сумма элементов с четными номерами, Z-номер первого нулевого элемента массива. Массив вводится с клавы пользователем.
#include <stdio.h> #include <malloc.h>
int main () { int i,q,k,p,X,Z; double B,Y; double *m; char c; FILE*R;
printf("if you want to see result on screen press 0, in file-1,in file and on screen-2"); scanf("%d",&p); switch(p) { case 0:k=0; break; case 1: { k=1; R=fopen("rez.txt", "w"); } break; case 2: { k=2; R=fopen ("rez.txt", "w"); } } printf ("enter number of array's elements ");scanf("%d",&q); m=(double*)malloc(q*sizeof(double)); printf ("\nB=(X+Z)/(Y+Z)");printf("\nX-kolichestvo el-tov (-2.5;3.4)"); printf ("\nY-symma el-tov massiva c chetnimi nomerami"); printf ("\nZ-nomer pervogo nylevogo el-ta massiva"); printf ("\nenter array's elements"); for(i=0;i<q;i=i+1) scanf("%lf", m+i);
X=0; Y=0.; for (i=0; i<q; i++) {if (*(m+i)>-2.5 && *(m+i)<3.4) X++;} for (i=0; i<q; i+=2) {Y=Y+ *(m+i);}
Z=-1; for (i=q-1;i>=0; i=i-1) {if (*(m+i)==0.) Z=i; else printf ("Net elementov =0, Z=0"); } if (Y!=0) { B=(X+Y)/(Y+Z); printf ("B=%lf");} else { printf ("Net!"); } if (k==0) {for (i=0;i<q; i=i+1) printf("\n%5.2lf", *(m+i)); printf("\n\nB=%lf",B); printf("\n\nX=%5.2d\nY=%5.2lf\nZ%5.2d\nB=%5.2lf",X,Y,Z,B);} else if (k==1) { for (i=0; i<q; i=i+1) fprintf(R,"\n%5.2lf",*(m+i)); fprintf(R,"\n\nX=%5.2d\nY%5.2lf\nZ=%5.2d\nB=%5.2lf",X,Y,Z,B); fclose®;} else { for (i=0; i<q; i=i+1) {printf ("\n%5.2d", *(m+i)); fprintf (R,"\n%5.2d", *(m+i));} printf("\n\nX=%5.2d\nY=%5.2lf\nZ%5.2d\nB=%5.2lf",X,Y,Z,B); fprintf(R,"\n\nB=%5.2lf\nX=%5.2d\nY=%5.2lf\nZ=%5.2d",B,X,Y,Z); fclose®; } scanf("%c", &c); return 0;
}
|
|
|