Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача на массивы(Turbo C)

74K
07 октября 2011 года
DiNight
3 / / 07.10.2011
Нужно решить задачу на основе вот этой:
Пример задания: В одномерном массиве, состоящем из п вещественных элементов, вычислить:
1) сумму отрицательных элементов массива;
2) произведение элементов массива, расположенных между максимальным и минимальным значениями.
Упорядочить элементы массива по возрастанию.

Примечание: Размерности массивов задаются именованными константами.

Пример решения задачи:
/*
Подключние рабочих библиотек:
<stdio.h> - библиотека ввода/вывода
*/
#include <stdio.h>

int main(int argc, char* argv[])
{
/* Именованная константа, определяющая количество элементов массива */
const MAX_ELEMENTS = 8;

/* Объявление и инициализация переменных */
float m[MAX_ELEMENTS];
float sum = 0;
float result = 1;
int iMax, iMin;

/* Запрашиваем ввод данных с клавиатуры */
for (int i = 0; i < MAX_ELEMENTS; i++)
{
printf("m[%d] = ", i);
scanf("%f", &m);
}

/* Принимаем индексы максимального и минимального массива равными 0 */
iMin = iMax = 0;
for (i = 0; i < MAX_ELEMENTS; i++)
{
/* Вычисляем сумму отрицательных элементов массива */
if (m < 0) sum += m;

/* Находим индексы максимального и минимального элементов массива */
if (m > m[iMax]) iMax = i;
if (m < m[iMin]) iMin = i;
}

/* Находим произведение элементов массива, находящихся между минимальным и максимальными элементами */
for (i = ((iMax < iMin) ? iMax : iMin);
i <= ((iMax > iMin) ? iMax : iMin);
result *= m[i++]);

/* Выводим на экран результат вычислений */
printf("\nСумма отрицательных элементов = %.2f\n", sum);
printf("Результат = %.2f\n\n", result);

/* Сортировка элементов массива по возрастанию */
for (i = 0; i < MAX_ELEMENTS; i++)
{
for (int j = i + 1; j < MAX_ELEMENTS; j++)
{
if (m > m[j])
{
result = m;
m = m[j];
m[j] = result;
}
}
}

/* Вывод на экран отсортированного по возрастанию массива */
printf("Отсортированный массив:\n");
for (i = 0; i < MAX_ELEMENTS; printf("%.2f ", m[i++]));

return 0;
}


Вот Задача которую нужно решить на основе предыдущей:
Вариант 10
В одномерном массиве, состоящем из п целых элементов, вычислить:
1) минимальный по модулю элемент массива;
2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.
Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине - элементы, стоявшие в нечетных позициях.
8.9K
08 октября 2011 года
Apach47
130 / / 14.06.2010
1.Для работы с математическими функциями в С++ подключи либу cmath. Функция модуля называется abs(). Ну а дальше обычный тупой прямой поиск или поиск пузырем. Надеюсь тут понятно?
2.Ну тут еще легче - проходишь по массиву, находишь индекс элемента, который равен нулю. Далее цикл, который производит требуемые вычисления
3.Входной массив делим на 2 части(создаем два новый массива половинной длины исходного): в первый записываем все элементы удовлетворяющие if( index%2 == 0 ), в левый - в противном случае. Потом оба массива заново сливаем в один - исходный массив.

Готового кода у меня нет, и копаться в твоем том не особо хочется, однако написать минут за 30 могу, за небольшое вознаграждение разумеется. Если заинтересовало - пиши icq 785025 или в ЛС
392
09 октября 2011 года
cronya
421 / / 03.01.2009
Цитата: Apach47
1.Для работы с математическими функциями в С++ подключи либу cmath. Функция модуля называется abs().



Да не ужели, как будто нельзя без библиотеки у нас модуль вычислить? :\

74K
09 октября 2011 года
DiNight
3 / / 07.10.2011
как всегда всё деньгами решается % а помочь бедным студентам никак? )
271
09 октября 2011 года
MrXaK
721 / / 31.12.2002
1.
 
Код:
int mk=0;
  for (int i = -1; ++i < MAX_ELEMENTS; mk=( ((m > 0 ? m : (-1*m)) < (m[mk] > 0 ? m[mk] : (-1*m[mk]))) ? i : mk ) );
  printf("minindex: %d, minval: %f", mk, m[mk]);


2.
 
Код:
int sum = 0;
 for (int i = -1, f=0; ++i < MAX_ELEMENTS;  sum += (((0==m && (f=1)) || (1==f)) ? (m > 0 ? m : (-1*m)) : 0));
 printf("%f", sum);

компилится с ворнингом)))

3.
 
Код:
float arr[MAX_ELEMENTS];
 for (int i = -1, sl = 0, sr = MAX_ELEMENTS/2; ++i<MAX_ELEMENTS; (0 == i % 2) ? arr[sl++] = m : arr[sr++] = m);
 /** arr - результирующий **/

компилится с двумя варнингами))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог