Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Модератор форума: Berestovskiy  
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Работа с динамической памятью с одномерным массивом (СИ) (лабораторная работа (СИ))
Работа с динамической памятью с одномерным массивом (СИ)
Народ, подскажите, пожалуйста, что "не так" в проге. Не считает значение В и вылетает. Буду благодарен.
Задание: Вычисление 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;

}
1 | Автор: Misha19 | 2012-04-30, 00:18   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Работа с динамической памятью с одномерным массивом (СИ) (лабораторная работа (СИ))
  • Страница 1 из 1
  • 1
Поиск: