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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2016, 18:01   #1
Pinguin007
Пользователь
 
Регистрация: 26.02.2016
Сообщений: 14
По умолчанию Си. Задание с массивом

Написал код, который все не правильно делает(проверял по калькулятору) посмотрите и укажите ошибки пожалуйста.
Код:
# include <stdio.h>
# include <math.h>
# include <malloc.h>
int otric(float *x);
int modul(float *x);
void main(void)
{
	float *x,s,a;
	int i, O, M,k;

	x = (float *)malloc(33 * sizeof(float));
	printf("Massiv X do preobrazovaniya:\n");
	for (i = 0; i < 33; i++)
	{
		if ((i + 1) % 2 == 0)
			*(x + i) = sin(i*cos((16 - i) / (16 + i)));
		else
			*(x + i) = sin(i*cos((16 - i) / (16 + i)))*(-1);
		printf("%13.4E", *(x + i));
		if ((i + 1) % 6 == 0)
			printf("\n");
	}
	O = otric(x);
	printf("\n kol-vo otric elementov:%2d", O);
	M = modul(x);
	printf("\n summ:%13.4E", M);
	printf("\nMassiv X posle preobrazovaniya:\n");
	for (i = 0; i < 33; i++)
	 {
		 if (*(x + i) < 0)
			 *(x + i) = (*(x + i)) * (*(x + i));
     }
	for (i = 0; i < 32; i++)
	{
		a = *(x + i);
		k = i;
		for (i + 1; i < 33; i++)
			if (*(x + i) < a)
			{
				a = *(x + i);
				k = i;
			}
		*(x + k) = *(x + i);
		*(x + i) = a;
	}
	for (i = 0; i < 33; i++)
	{
		printf("%13.4E", *(x + i));
		if ((i + 1) % 6 == 0)
			printf("\n");
	}
free(x);
getchar();
}
int otric(float *x)
{
	int i, k;
	k = 0;
	for (i = 0; i < 33; i++)
	{
		if (*(x + i)<0)
			++k;
	}
	return(k);
}

int modul(float *x)
{
	int j, i, y ;
	float s = 0.000;
	j = fabs(*x + 0);
	for (i = 0; i<33; i++)
	{
		if (fabs(*(x + i))<j)
			j = *(x + i);
		y = i + 1;
	}
	for (i = y; i<33; i++)
		s += *(x + i);
	return(s);
}
Пожалуйста, оформляйте Ваш код согласно правилам.

В одномерном массиве xi=〖-1〗^(i+1)*sin(i*cos(16-i)/(16+i)), состоящем из 33 целых элементов, вычислить:
Количество отрицательных элементов массива;
Сумму модулей элементов массива, расположенных после минимального по модулю элемента.
Заменить отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.

Последний раз редактировалось Вадим Мошев; 21.05.2016 в 19:07.
Pinguin007 вне форума Ответить с цитированием
Старый 21.05.2016, 19:00   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Сразу 1-й вопрос: Вы cos(x) и sin(x) на калькуляторе в градусах или радианах считали?

Попробуйте в с++ вывести просто cos(16) и cos(16*3.14/180) и сравнить с калькулятором.
ura_111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задание с одномерным массивом - отсортировать массив samsandr Общие вопросы C/C++ 5 27.11.2013 19:17
задание с массивом Ляйсан) Общие вопросы Delphi 2 19.05.2013 22:53
Запутаное задание задание с массивом.Буду очень благодарен. Riko1 Общие вопросы C/C++ 2 22.10.2011 10:23
Задание с массивом в excele. Svetox Помощь студентам 2 28.05.2011 00:19
задание с массивом Baks1991 Помощь студентам 0 17.05.2011 10:43