Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 20:49   #1
felodese
Новичок
Джуниор
 
Регистрация: 10.11.2010
Сообщений: 2
По умолчанию Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива)

Помогите исправить ошибку в коде. Задача такова: Для массива вещественных чисел X[L]={x[i] | i=(от 0 до L) } (L<100) и вещественных чисел p и t найти произведение и сумму членов последовательности x[0], x[1], ... x[L-1] удовлетворяющих неравенству p < f( x[i] ) < t, где при x< 0 f(x)=x*x*x, а при x>=0 f(x)=x*x. Инициализация массива должна поддерживаться как пользовательским, так и рандомным (с заданным интервалом) способом.

Код:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
int i, L, leftRand;
float p, t, r;
int left, right;
float x[99];
void countFunc(float func, float sum, float composit, &x[99]);
   int main ()
   {
	printf("Set max value (no more than 100)\n");
	scanf("%d", &L);
	printf("\nSet the computing range (firstly left limit)\n");
	scanf("%f%f", &p, &t);
	   char enterval;
	printf("Choose the custom (c) or random (r) values.\n");
	enterval=getche();
	switch(enterval)	
          {
		case 'c':
		  scanf("%f", &x[i]);
		  countFunc ();
		  break;

		case 'r':
	{   printf("\nSet the limits of values (firstly left limit)\n");
	scanf("%d%d", &left, &right);
		  srand(time(NULL));
		  for (i=0; i<L; i++)
		    leftRand=32767-left;
		    x[i]=(float)(rand()%leftRand)/1000-right;
		    countFunc();
	 }
		    break;
		 default:
	printf("You can use only c or r letters in that case. Try again\n");
          }


getch();
return 0;
}

//----------------------------------------------------------------------------

void countFunc (float func, float sum, float composit, &x[99])
{  {
for (i=0; i<L; i++) 
if(x[i]<0)
   func = x[i]*x[i]*x[i];  //отбор нужных элементов массива
else
   func = x[i]*x[i];

for (i=0; i<L; i++)
 if(func<t && func>p)
        sum+=func;         //вычисление суммы и произведения
        composit*=func; 
  }
printf("\nSum is ", sum);
printf("\nComposition is ", composit); 
}
felodese вне форума Ответить с цитированием
Старый 11.11.2010, 20:52   #2
felodese
Новичок
Джуниор
 
Регистрация: 10.11.2010
Сообщений: 2
По умолчанию

Помогите! Мучаюсь с этой задачей второй день.
felodese вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
произведение трех наименьших элементов массива boing Паскаль, Turbo Pascal, PascalABC.NET 10 14.04.2010 09:03
произведение элементов матрицы mхn, удовлетворяющих условию А[i,j]<=2; кол-во остальных неотриц. эл-ов. Farridjan Помощь студентам 3 04.07.2009 15:54
Сумма и произведение элементов массива Zid@ne Общие вопросы C/C++ 5 23.12.2008 19:22
Произведение элементов массива gamer123 Помощь студентам 5 19.01.2008 22:02